金牌会员
- 积分
- 1439
- 金钱
- 1439
- 注册时间
- 2015-12-26
- 在线时间
- 208 小时
|
本帖最后由 ZhuMX 于 2017-11-10 14:34 编辑
最近调试FreeRTOS程序,发现直接用IAR下载APP后程序运行正常,但是通过IAP升级后却发现程序跑飞(因为是IAP升级,无法调试App程序,所以跳转后具体在哪跑飞不得而知)。通过IAP升级裸机APP却是正常的,所以中断向量,程序地址等配置应该没问题。
注释掉部分IAP代码,只留单纯的跳转语句后再调试,发现加RTOS的App运行正常了,所以问题一定是IAP程序中其他的配置导致App跑飞,经过逐个排查后终于找到了原因,是IAP中配置了Timer3中断,但是RTOS版的App中没有定义Timer3的中断处理函数,而跳转前又没有关闭Timer3,故跳转后程序一定是死在了无法跳转至Timer3中断函数的问题上。经过修改,在跳转前关闭Timer3,调试OK!当然,后来又发现了同样的问题,也是IAR直接下载正常,IAP跳转后不正常,只不过这次是串口没有正常工作,同样老办法,逐个排查IAP程序中是否存在配置问题,最终发现是IAP中初始化SPI时,傻不拉几的使能了SPI的TXDMA(后面又没用到这个DMA),而F072的SPI1 TXDMA和USART1的RXDMA是映射的同一通道。。。。。所以注释掉相关代码后一切正常。
第一次移植FreeRTOS做项目,希望自己以及坛友以后避免犯同样的错误,故留此贴。
|
|