完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
芯片是STM32H743
RTThread 版本是4.0.5 情况1: 使用 0 的 bootloader 和 APP。APP 使用了 paho mqtt。bootloader 的地址是 0x8000000,size 是 0x2000。APP 的地址是 0x08020000,size 是 0x00200000(在 sct 中设置)。APP 的中断的 VECT_TAB_OFFSET 是 0x00020000UL,此时设备可以正常运行。 问题1: 我设置keil魔术棒中的IROM1地址为0x00000,size00x0020000,设置80x8,或者size为0x100000,程序正常运行。 情况2: paho mqtt 不满足,我换了后程序中包含了 FIONBIO 定义了两个函数,并且无法识别 uint32_t 的但是更新后也可以运行。同样运行板子,STM32的丝印完全一致去的情况下,有板子的后子bootloader可以不跳转,的运行。 问题2: 硬件条件一样的情况下,有些板子无法运行程序? 情况3: 把这些情况2中运行的板子,下载硬件回传情况1没有的程序,也是运行paho mqtt,此时板子也不能正常运行的,说明应该是问题。 所以想,解决一下各位,遇到这种情况问题应该从哪些方面去考虑一下?请大家提供一些思路,谢谢了。 |
|
相关推荐
3个回答
|
|
具体把应用用的啥全忘掉,归为最简单的boot跳转问题。
99.9%的 问题可能是任何板映射,以及没有被关闭或清除掉。 建议 所有把关掉,再清掉,包括systick。 再把所有靴子可能的情况下,再把时间恢复原样。 再把boot和app中使用结束指向所有鱼的拦截,末阻止漏网。 |
|
|
|
在切换前,关闭一切就可以了;
static void JumpToBootloader(void) { uint32_t i=0; void (*SysMemBootJump)(void); /* 声明一个函数指针 */ __IO uint32_t BootAddr = 0x08020000; /* STM32H7 的系统 BootLoader 地址 */ /* 关闭全局中断 */ __set_PRIMASK(1); HAL_DeInit(); //这句很重要,初始化设备。bootloader需要还原到初始状态 /* 关闭滴答定时器,复位到默认值 */ SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; /* 设置所有时钟到默认状态,使用 HSI 时钟 */ HAL_RCC_DeInit(); /* 关闭所有中断,清除所有中断挂起标志 */ for (i = 0; i < 8; i++) { NVIC->ICER[i]=0xFFFFFFFF; NVIC->ICPR[i]=0xFFFFFFFF; } // /* 使能全局中断 */ //__set_PRIMASK(0); /* 关闭全局中断 */ __set_PRIMASK(1); //此处修改为关闭所有中断 /* 跳转到系统 BootLoader,首地址是 MSP,地址+4 是复位中断服务程序地址 */ SysMemBootJump = (void (*)(void)) (*((uint32_t *) (BootAddr + 4))); /* 设置主堆栈指针 */ __set_MSP(*(uint32_t *)BootAddr); /* 在 RTOS 工程,这条语句很重要,设置为特权级模式,使用 MSP 指针 */ __set_CONTROL(0); /* 跳转到系统 BootLoader */ SysMemBootJump(); } |
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1056 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3545 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1482 浏览 0 评论
2181 浏览 0 评论
1663 浏览 0 评论
75404 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 08:14 , Processed in 0.492798 second(s), Total 45, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号