Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
IAP_在线更新
5
rt-thread 做为IAP 代码 跳转到主APP 是不是要做其他设置
发布于 2022-12-28 14:34:53 浏览:806
订阅该版
```c static void vControlSwitch (void) { JUMP_APP_FUN_T Jump_To_Application; Jump_To_Application = (JUMP_APP_FUN_T)*(__IO uint32_t *)(BOOT_APP_START_ADDR_BASE + 4); __set_MSP(*(volatile uint32_t*) BOOT_APP_START_ADDR_BASE); __set_CONTROL(0); Jump_To_Application(); } ``` 这段代码 在rtt 没有启动之前调用 是可以跳转到主APP的,但是一任务中调用 会直接导致跳转失败,APP代码无法执行, 有没有踩过RTT做bootloader 的坑的
查看更多
5
个回答
默认排序
按发布时间排序
jizhongbiao
2022-12-28
这家伙很懒,什么也没写!
需要关掉systick 以及所有中断 https://club.rt-thread.org/ask/article/a8d94055dd97bc78.html
a1012112796
2022-12-28
这家伙很懒,什么也没写!
```CXX SysTick->CTRL = 0; //关键代码 HAL_DeInit(); //可选 HAL_NVIC_DisableIRQ(SysTick_IRQn); //可选 HAL_NVIC_ClearPendingIRQ(SysTick_IRQn); //可选 /* Jump to user application */ __disable_irq(); JumpAddress = *(__IO uint32_t*) (FLASH_RUN_BASEADDR + 4); JumpToApplication = (pFunction) JumpAddress; /* Initialize user application's Stack Pointer */ __set_MSP(*(__IO uint32_t*) FLASH_RUN_BASEADDR); JumpToApplication(); ```
crystal266
2022-12-28
嵌入式
是的需要关闭所有中断,防止出错,可以参考 qboot 中的实现代码 ```c void qbt_jump_to_app(void) { typedef void (*app_func_t)(void); u32 app_addr = QBOOT_APP_ADDR; u32 stk_addr = *((__IO uint32_t *)app_addr); app_func_t app_func = (app_func_t)(*((__IO uint32_t *)(app_addr + 4))); if ((((u32)app_func & 0xff000000) != 0x08000000) || (((stk_addr & 0x2ff00000) != 0x20000000) && ((stk_addr & 0x2ff00000) != 0x24000000))) { LOG_E("No legitimate application."); return; } rt_kprintf("Jump to application running ... \n"); rt_thread_mdelay(200); __disable_irq(); HAL_DeInit(); for(int i=0; i<128; i++) { HAL_NVIC_DisableIRQ(i); HAL_NVIC_ClearPendingIRQ(i); } SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; HAL_RCC_DeInit(); __set_CONTROL(0); __set_MSP(stk_addr); app_func();//Jump to application running LOG_E("Qboot jump to application fail."); } ```
数码小叶
2022-12-29
这家伙很懒,什么也没写!
学习学习😃
hfmm
2023-01-04
这家伙很懒,什么也没写!
解决了,是要关闭外设,我这里主要的原因imx1052 代码跑在qspi 上的, 我APP代码上在配置外设引脚的时候把控制qspi 的引脚初始化为USDHC2的外设了,导致代码跑飞的, 奇怪的是以前估计都这样写的代码竟然可以跑的起来,把这个改了就可以跳转了, 还有就是我的方案是bootloader 的代码是跑在qspi 上的,如果要让代码 和flash操作正常支持运行,你要把操作flash所代码定位到RAM中去,gcc 的定位语法 要*upgread.o(.text*) 这种的才可以,我刚开始定的是*upgread.o(.*text) 结果没定位成功
撰写答案
登录
注册新账号
关注者
0
被浏览
806
关于作者
hfmm
这家伙很懒,什么也没写!
提问
16
回答
31
被采纳
0
关注TA
发私信
相关问题
1
RTT-stdio 设置flash地址
2
RT Thread 尝试IAP功能时 分区FLASH无法擦写
3
请问用rtt做bootloader跳转前需要关闭哪些东西?
4
IAP程序下载到80%就下不进去了
5
stm32f103rc IAP通过bootloder写入bin文件跑不起来
6
rtt编写的bootloader可顺利跳转至app但运行异常
7
如何确定文件在flash中的物理地址
8
关于STM32H743的bootloader的地址问题
9
stm32 hal库iap程序心得分享
10
iap跳转至app后,系统调度失败引起异常复位
推荐文章
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
组件 lwip v2.0.3 版本使用 netdev网卡的 ping 功能
2
简单两步配置RTT源码阅读环境 vsc+clangd
3
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
4
LVGL使用字库IC芯片显示中文
5
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部