ARM7 CM3上新移植的ucosii好像有问题

[复制链接]
2735|4
 楼主| e08610318 发表于 2013-6-2 20:23 | 显示全部楼层 |阅读模式
1.nxp lpc1765,启动代码自己写的
2.ucosii网上下的,然后自己写汇编的,调好了
3.之后自己做了个uart0-3的驱动,进行调试,问题来了:
1)板子上有个GPS模块,每秒都会发数据,但是,一般都会跑了几分钟,就Hard Fault了,查了好久,最后锁定到移植代码上
2)板子异常后,
UFSR 的INVSTATE位是置1的,相关说明如下:
INVSTATE Invalid state usage fault:
0 = no invalid state usage fault
1 = the processor has attempted to execute an instruction that makes
illegal use of the EPSR.
When this bit is set to 1, the PC value stacked for the exception return
points to the instruction that attempted the illegal use of the EPSR.
This bit is not set to 1 if an undefined instruction uses the EPSR.

3)测试发现,建了4个任务,一直跑应该是没有问题的,但是只要开了UART2口中断(UART2口每秒都会进入中断,该中断处理程序已经把应用层代码屏蔽掉了),过一段时间就挂了

目前这个问题还在研究解决中,特此贴上,希望前辈指点!


 楼主| e08610318 发表于 2013-6-3 09:31 | 显示全部楼层
今天继续看资料,发现好像是因为代码使用了非THUMB指令集而导致这个异常出现
_L_D_H_ 发表于 2013-6-4 17:37 | 显示全部楼层
如果是使用外设出现Hard Fault,检查下外设的初始化,一般如果没用使能时钟LPC_SC->PCONP对应的位就使用外设,就会出现Hard Fault错误....
 楼主| e08610318 发表于 2013-6-5 15:36 | 显示全部楼层
这个问题已经解决了,之前严格按照ucos说明书去移植,但是用到这款芯片上就会出问题,我推测可能是异常抢占导致返回地址错误而引发的Hard Fault,具体可能是UART2的中断被System Tick中断抢占了,然后又在定时中断里面执行任务调度,最后可能导致硬件中断。后来把中断里的任务调度改为Pend SV,并且把优先级设置为最低就没事了。
xnwei 发表于 2014-5-5 17:46 | 显示全部楼层
能把你的移植的code发给我学习一下吗?谢谢 qq 396153193
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:你可能不知道今天所做的事情会对未来有多大的干预能力!

67

主题

310

帖子

12

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