完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
芯片TM4C1231E6PM,做bootloader通过SD卡升级应用程序,本来想在应用程序中跳回bootdoader升级应用程序,升级完后又跳到应用程序中运行。刚开始应用程序开的资源很少,可以实现这个功能。后来应用程序中开的资源多了,跳转就出问题了。具体如下
1、从应用程序跳转到bootloader正常(跳转之前关闭了外设及对应中断),升级完程序后跳转到应用程序,就死在这里了。但是如果上电后先进入到bootloader程序,升级程序后跳转到应用程序就OK,因此怀疑是应用程序开的什么资源影响的。应用程序中跳转代码如下 OS_ENTER_CRItiCAL(); SysTickDisable(); SysTickIntDisable(); ROM_UARTDisable(UART0_BASE); ROM_IntDisable(INT_UART0); MAP_SysCtlPeripheralDisable(SYSCTL_PERIPH_UART0); __asm(" MOVW R0, #(0x00000000 & 0xffff)n" " MOVT R0, #(0x00000000 >> 16)n" " MOVW R1, #(0xE000ED08 & 0xffff)n" " MOVT R1, #(0xE000ED08 >> 16)n" " STR R0, [R1]n" " LDR SP, [R0]n" " LDR R0, [R0, #4]n" " NOPn" " NOPn" " NOPn" " NOPn" " NOPn" " NOPn" " NOPn" " NOPn" " NOPn" " NOPn" " NOPn" " NOPn" " BX R0n"); OS_EXIT_CRITICAL(); 2、既然这样跳转有问题,我又想在应用程序中开启看门狗使系统复位进入bootloader,但是系统没有复位,而是进入到FaultISR处。开启看门狗代码如下 SysCtlPeripheralEnable(SYSCTL_PERIPH_WDOG0); // Check to see if the registers are locked, and if so, unlock them. if(WatchdogLockState(WATCHDOG0_BASE) == true) WatchdogUnlock(WATCHDOG0_BASE); WatchdogResetEnable(WATCHDOG0_BASE); WatchdogReloadSet(WATCHDOG0_BASE,10); WatchdogEnable(WATCHDOG0_BASE); 请帮我看看这两个问题原因在哪?如何解决,谢谢。 |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1903 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3660 浏览 4 评论
5038 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1738 浏览 1 评论
9402 浏览 8 评论
CC3100BOOST使用CC3200lunchXL进行烧录
678浏览 2评论
726浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
694浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1204浏览 1评论
1788浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-3 18:13 , Processed in 0.720491 second(s), Total 68, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号