在Dspic33fj64上 移植小型实时操作系统

[复制链接]
 楼主| 海蜇皮 发表于 2007-12-5 15:17 | 显示全部楼层 |阅读模式
Microchip&nbsp;今年master&nbsp;上有Freertos的课程,例子是用PIC24FJ128做的,<br />前几天在Dspic33fj64gp206上面跑了一下freertos.分享一下经验,避免大家走同样的弯路<br /><br />1.&nbsp;&nbsp;Dspic33FJ64GP206+&nbsp;Freertos&nbsp;V4.2.1&nbsp;,调试硬件是用microchip提供的<br />&nbsp;&nbsp;&nbsp;&nbsp;33FJ64GP206的demo&nbsp;board,应该不少工程师手头有这个小板子<br />&nbsp;&nbsp;&nbsp;&nbsp;几个简单的任务:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;空任务:<br />&nbsp;&nbsp;&nbsp;&nbsp;2个LED闪烁任务:&nbsp;(其实是把同一个任务建立两次,通过任务参数传递闪<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;烁频率)<br />&nbsp;&nbsp;&nbsp;&nbsp;1个按键任务&nbsp;:&nbsp;&nbsp;&nbsp;(由按键控制LED灯,并将按键状态送往串口显示)<br />&nbsp;&nbsp;&nbsp;&nbsp;1个温度显示&nbsp;:&nbsp;&nbsp;&nbsp;(测出温度值后由串口送往PC显示)<br />&nbsp;&nbsp;&nbsp;&nbsp;1个显示任务&nbsp;:&nbsp;&nbsp;&nbsp;(串口,9600波特率,&nbsp;队列取显示数据)<br /><br />2.&nbsp;&nbsp;Freertos在做堆栈保存时,没有用到W14(堆栈帧指针),所有数据手动保存,<br />&nbsp;&nbsp;&nbsp;&nbsp;所以要在项目MPLAB&nbsp;C30&nbsp;/&nbsp;Optimization&nbsp;中选中&nbsp;Omit&nbsp;frame&nbsp;pointer&nbsp;,<br />&nbsp;&nbsp;&nbsp;&nbsp;否则的话,建立的任务堆栈是不正确的,程序也会跑飞<br /><br />3.&nbsp;&nbsp;freertosconfig.h中会对configMINIMAL_STACK_SIZE,&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;configTOTAL_HEAP_SIZE&nbsp;进行初始化,<br />&nbsp;&nbsp;&nbsp;&nbsp;开始调试时,一定要确保所有任务的堆栈有足够的空间分配,否则的话,尽管<br />&nbsp;&nbsp;&nbsp;&nbsp;编译不会出错,但程序<br />&nbsp;&nbsp;&nbsp;&nbsp;运行不正常,我在demo&nbsp;程序中给每个任务分配了70byte字节,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;heap_size=1.2k<br /><br />4.&nbsp;&nbsp;www.freertos.org&nbsp;有现成的PIC24/DSPIC30移植案例,&nbsp;大家只需更换器件<br />&nbsp;&nbsp;&nbsp;&nbsp;的头文件,重新定义堆栈大小,在主文件里建一个空任务就可以跑起来了<br /><br />
边城 发表于 2007-12-5 19:18 | 显示全部楼层

代码可不可以共享下先

代码可不可以共享下先
 楼主| 海蜇皮 发表于 2007-12-10 09:47 | 显示全部楼层

To 边城

<br />代码可不可以共享下先<br /><br />代码发到你邮箱了,查收一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部