RT-Thread/ATSAM7X256

发布于 2009-03-15 00:13:27
AT91SAM7X256的移植终于有眉目了,前段时间做的MDK移植(CortexM3未知),都有一个比较致命的bug:
在做中断中的任务切换时,代码是从gcc改过来的,由于当时用MDK编译,报了个警告,所以改成MDK友好的模式:
mrs r3, spsr @ disable interrupt
orr r0, r3, #I_BIT|F_BIT
msr spsr_c, r0

ldr r0, =.+8 @ switch to interrupted task's stack
movs pc, r0

==>
mrs r3, spsr ; disable interrupt
orr r0, r3, #I_Bit|F_Bit
msr spsr_c, r0

; switch to SVC mode
msr cpsr_c, #Mode_SVC
; ldr r0, =.+8 ; switch to interrupted task's stack
; movs pc, r0

关键出现在msr cpsr_c, #Mode_SVC上,因为它从IRQ模式返回到SVC模式时,是直接切过去,而不是像gcc那样从IRQ模式退出,spsr并没有自动复制到cpsr中(那是当然,自己做了msr啊!!)

这个问题折腾了差不多一个星期!!现在终于好了,RT-Thread/AT91SAM7X256包含LwIP网络协议栈的移植基本上完成。在试过AT91RM9200后,这个版本很可能就是0.2.4最终正式版了。

RT-Thread/AT91SAM7X256指标情况:
编译-O2,(RTOS + FinSH Shell + LwIP 1.3.0 + USB Virtual COM)
Program Size: Code=73944 RO-data=1092 RW-data=832 ZI-data=35080
TCP Echo Server,50万个包无错误,无重传。期间运行3个ping,time < 1ms
下载附件[rt-thread-0.2.4-at91sam7x256.zip]

查看更多

关注者
0
被浏览
3.5k
4 个回答
bernard
bernard 2009-03-15
RT-Thread 的AT91SAM7X256版本,经过50万次TCP包测试,数十万次ping包测试(专门的发包工具)
shaolin
shaolin 2009-03-15
这种稳定性离产品应用非常近了。
bernard
bernard 2009-03-16
还是希望多测试测试,稳定性是最重要的啊。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览