在线时间352 小时
UID2053419
注册时间2014-11-27
NXP金币0
TA的每日心情 | 衰 2016-10-20 09:45 |
---|
签到天数: 1 天 [LV.1]初来乍到
版主
- 积分
- 2223
- 最后登录
- 2023-11-20
|
本帖最后由 花溪村长 于 2016-6-4 10:47 编辑
通过对小恩GG的教程学习以及初步分析,直接动手移植FreeRTOS到TRK-KEA128上,并实现LED闪烁以及串口打印信息!
一、准备工作
1, 官网下载FreeRTOS源码包V9.0.0,解压到本地电脑上
2, KEIL平台
3, TRK-KEA128
二、建立工程模板及系统移植
1、模板就使用之前发布的程序作为模板,需要的自取
KEA系列开发笔记汇总
2、移植rtos
需要移植的文件:
1)内核5个文件: FreeRTOSV9.0.0rc1\FreeRTOS\Source目录下
2)内存分配文件在\FreeRTOSV9.0.0rc1\FreeRTOS\Source\portable\MemMang中
主要有5个,我们这里只需要heap_2.c就行了(至于为啥用第二个还没搞明白~~~)
3) 移植M0的文件,这个分平台,这里用的Keil,所以选择
FreeRTOSV9.0.0rc1\FreeRTOS\Source\portable\RVDS\ARM_CM0中的两个文件port.c和portmacro.h(IAR中多了portasm.s)
4)移植Include所有文件
5)移植配置文件,我这里选择的是Demo中M0相关MCU的FreeRTOSConfig.h修改
3、添加文件到Keil中
添加刚刚移植所需的文件到工程,并设置工程包含.h路径
4、主函数中添加以下几个函数(至于用来干哈的现在还不明白,参考列程中的.....)
void vApplicationMallocFailedHook( void )
void vApplicationIdleHook( void )
void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )
void vApplicationTickHook( void )
到此基本移植完成了,移植过程还是挺简单~
5、创建Task
1)新建两个任务方法,分别是LED和UART的
- static void vLEDTask( void *pvParameters )
- {
- for( ;; )
- {
- GPIO_ToggleBit(PTC,GPIO_Pin_0);
- vTaskDelay( 200/portTICK_RATE_MS );
- }
- }
- /*UART Task*/
- static void vUARTTask(void *pvParameters)
- {
- for( ; ;)
- {
- printf("FreeRTOS For KEA128\n");
- printf("www.nxpic.org.cn by »¨Ïª´å³¤£¡\n");
- vTaskDelay( 500/portTICK_RATE_MS );
- }
- }
复制代码
2)创建任务(源代码贴上来就乱了!)
- /*Creat Task*/
- xTaskCreate( vLEDTask, /* Function that implements the task. */
- "LED", /* Text name of the task. */
- configMINIMAL_STACK_SIZE, /* Stack allocated to the task. */
- NULL, /* The task parameter is not used. */
- tskIDLE_PRIORITY+3, /* The priority to assign to the task. */
- NULL ); /* Don't receive a handle back, it is not needed. */
-
- xTaskCreate( vUARTTask, /* Function that implements the task. */
- "UART", /* Text name of the task. */
- configMINIMAL_STACK_SIZE, /* Stack allocated to the task. */
- NULL, /* The task parameter is not used. */
- tskIDLE_PRIORITY+2, /* The priority to assign to the task. */
- NULL ); /* Don't receive a handle back, it is not needed. */
-
- /*Start Task*/
- vTaskStartScheduler();
复制代码
最后启动任务
最后Build->Download
至此移植结束,关于OS相关知识还得恶补~(感谢小恩GG的教程~)
最后附上工程及rtos源码
TRK-KEA128 -rtos.rar
(1.2 MB, 下载次数: 508)
|
|