Login | STMicroelectronics STM32F4xx | μC/OS-IIIµC/OS-III V3.03.01 | STM3240G-Eval | Atollic TrueSTUDIO V3.x IAR (EWARM) V6.x Keil MDK V4.x | 2013/01/23 |
2. 시간 낭비 없게 정확한 컴파일러 버젼으로 동일하게 컴파일.
3. STM3240G-Eval은 25Mhz 사용하고 Discovery는 8Mhz사용하니 이 부분 수정.
3.1 bsp.c 에서 아래 define값을 25에서 8로 수정
//#define BSP_BIT_RCC_PLLCFGR_PLLM 25u
#define BSP_BIT_RCC_PLLCFGR_PLLM 8u
3.2 bsp.c 에서 led관련 port을 discovery에 맞게 수정
3.3 stm32f4xx.h 에서 8Mhz에 맞게 수정
//#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
이상한게 IAR쪽 os_cpu_c.c 에만 FPU관련 Register 처리 루틴이 들어 있다는거.
GNU, MDK는 이 부분이 코드에 없음.
FPU관련 Register가 S0~S31까지 총 32개라서 Task Switching시 마다 stack에 push,pop 동작에 로드가 걸릴듯 했지만
uCOS-III 에서는 영리하게 Task 생성시 해당 Task내에서 FPU사용 여부를 Check하여 FPU Register push,pop 동작을
Task마다 선택적으로 동작 하도록 설정 되어 있음.
#define OS_OPT_TASK_NONE (OS_OPT)(0x0000u) /* No option selected */
#define OS_OPT_TASK_STK_CHK (OS_OPT)(0x0001u) /* Enable stack checking for the task */
#define OS_OPT_TASK_STK_CLR (OS_OPT)(0x0002u) /* Clear the stack when the task is create */
#define OS_OPT_TASK_SAVE_FP (OS_OPT)(0x0004u) /* Save the contents of any loating-point registers */
#define OS_OPT_TASK_NO_TLS (OS_OPT)(0x0008u) /* Specifies the task DOES NOT require TLS support */
'Technical Tips!!' 카테고리의 다른 글
[TN] Understanding the Terms and Definitions of LDO Voltage Regulators (0) | 2014.05.14 |
---|---|
STM32F4-Technical-Training.pdf (0) | 2013.10.30 |
MDK ARM Error: L6411E: No compatible library exists with a definition of startup symbol __main. (2) | 2013.10.17 |
SWD ST-LINK JTAG Interface 예고 (0) | 2013.03.14 |
EWARM CMSIS intrinsics.h 컴파일 에러 (0) | 2013.03.14 |