TI-28388 DSP有2个C28x核和一个CM核(ARM cortex-M4),都可以运行TI官方提供的SYS/BIOS操作系统,本文介绍在CM核上移植freeRTOS的过程,并通过freeRTOS控制开发板上的一个led。
一、准备材料
- TMDSCNCD28388D controlCARD评估板
- CCS v10.2.0
- C2000Ware_3_04_00_00
- freeRTOSv9.0.0
下载地址:https://sourceforge.net/projects/freertos/files/FreeRTOS/V9.0.0/
二、导入工程
导入C2000Ware中的led工程,在此工程上移植freeRTOS:
\ti\c2000\C2000Ware_3_04_00_00\driverlib\f2838x\examples\c28x_cm\led
三、复制freeRTOS文件
- 在工程led_ex1_c28x_cm_blinky_cm下新建freertos目录
- 复制FreeRTOSv9.0.0\FreeRTOS\Source下的所有.c文件到新建的freertos目录下。
- 将FreeRTOSv9.0.0\FreeRTOS\Source下的include文件夹复制到freertos目录下。
- 将FreeRTOSv9.0.0\FreeRTOS\Source\portable\CCS\ARM_CM4F目录下的3个文件复制到freertos目录下。
- 复制FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS\Source\portable\MemMang下的heap_4.c到freertos目录下。
- 复制FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil下的FreeRTOSConfig.h到freertos目录下。
整个led工程目录如下图所示:

四、CCS设置
1.在led_ex1_c28x_cm_blinky_cm工程属性中增加包含路径:

2. 将Processor Options -> Specify point support设置为FPv4SPD16
五、修改配置文件FreeRTOSConfig.h
-
屏蔽driverlib.h
//#include <driverlib.h> -
定义CPU频率
#define configCPU_CLOCK_HZ (125000000)//MAP_CS_getMCLK() -
屏蔽以下几个选项,这样暂时不需要写应用层的回调函数:
#define configUSE_TICKLESS_IDLE 0
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configUSE_MALLOC_FAILED_HOOK 0
#define configCHECK_FOR_STACK_OVERFLOW 0 -
配置堆空间大小为10k
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 10 * 1024 ) )
六、修改中断服务函数
led工程中,SVC, PendSV和Systick三个中断的服务函数默认都为defaultISR,将其改为freeRTOS对应的函数:
//startup_cm.c,
// 三个函数是在port.c用汇编实现的
extern void vPortSVCHandler(void);

最低0.47元/天 解锁文章
1379

被折叠的 条评论
为什么被折叠?



