Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Bootloader
MQTT
30
bootloader出现一个奇怪的问题,无法跳转
发布于 2022-04-09 13:59:16 浏览:1193
订阅该版
[tocm] 芯片是STM32H743 RTThread 版本是4.0.5 ## 情况1: 使用自制的bootloader和APP。APP使用了paho mqtt。 bootloader 的地址是0x8000000,size是0x20000。 APP的地址是0x08020000 size是0x00200000(在sct文件中设置)。APP的中断向量的VECT_TAB_OFFSET 是 0x00020000UL,此时设备可以正常跳转运行。 ## 问题1: 我设置keil魔术棒中的IROM1地址为0x8000000,size为0x100000,或者设置为0x08020000 ,size为0x100000,程序都能正常运行。 ## 情况2: 由于paho mqtt 不满足要求,我换成了kawaii的mqtt,移植中屏蔽了FIONBIO定义的两个函数,和无法识别uint32_t的问题。更新程序后也可以运行。但是在批量做了几块后发现,同一批板子,STM32的丝印完全一致去情况下,有一半的板子bootloader跳转后无法运行,一半的板子可以运行。 ## 问题2: 为什么硬件条件一样的情况下,有些板子无法运行程序? ## 情况3: 把情况2中不能运行的板子,下载回情况1的程序,也就是运行paho mqtt,此时这些板子也是可以正常运行的,说明硬件应该没有问题。 所以,想请问各位,遇到这种情况应该从哪些方向去考虑解决问题??请大家提供一些思路,谢谢了。
查看更多
aozima
2022-04-09
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
把具体应用用的啥全忘掉,归为最简单的boot跳转问题。 99.99% 的可能是中断映射,以及中断没有被关掉或清掉。 不要相信任何芯片的默认值,没出问题的板子,只是刚好问题处在临界点之下罢了。 建议 - 把所有中断关掉,再清掉,包括systick。 - 再把所有boot可能用到的外设都deinit下,再把时钟恢复原样。 - 再把boot和app中所有末使用中断都指向默认中断,方便拦截漏网之鱼。
3
个回答
默认排序
按发布时间排序
crystal266
2022-04-09
嵌入式
bootload 跳转到 app 那块的代码是怎么写的? uint32_t 增加头文件
就可以
Dwyer
2022-04-09
这家伙很懒,什么也没写!
没错,没错,大佬你说对了,我试着把跳转前,关闭所有中断就OK了; ```c 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(); } ```
撰写答案
登录
注册新账号
关注者
0
被浏览
1.2k
关于作者
Dwyer
这家伙很懒,什么也没写!
提问
30
回答
17
被采纳
0
关注TA
发私信
相关问题
1
Linux下通过USBTinyISP为Arduino开发板烧?写Bootloader
2
请教修改NVIC后RTT调度函数失效的问题[已解决 bootloader中打开了不必要的中断]
3
进入bootloader的方式探讨
4
求助:IAP里的APP使用的RTT,跳转后出错。[已解决]
5
有没有人在STM32F103上用UART IAP跑过RT-Thread?
6
想做网口的IAP远程升级,不知可不可行
7
IAP问题
8
[已解决]请教基于RTT的IAP程序切换到应用程序不成功的问题(基于STM32F4)?
9
stm32f4xx-----IAP移植APP程序需要注意的地方
10
在调试IAP网络升级遇到跳转之后bootloader程序网络不通
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread官方usb驱动之虚拟串口
2
RTduino物联网应用零基础入门
3
TinyUSB Demo运行教程
4
RT-Thread学习大礼包一键带走!
5
freemodbus从机调试说明
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
freemodbus
PWM
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
5
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
3
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
5
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部