Toggle navigation
首页
问答
文章
话题
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Bootloader
CH579
WCH
沁恒CH579 IAP跳转NANO后切换几次就hard fault
发布于 2021-10-24 13:35:54 浏览:713
## 问题背景: 项目使用的芯片是沁恒的CH579,芯片内核是cortex m0,因为芯片不支持中断向量表重定向。所以,要做IAP采用的方法是先做一个中断跳转程序(简称vector-remap),vector-remap里面实现了所有的中断服务函数,每个函数里面根据一个标志来决定跳转到IAP的中断或是APP的中断。所以完整的程序实际上是有3个工程,vector-remap、IAP和APP.vector-remap跳转到IAP,IAP再跳转到APP。 现在IAP工程仅实现跳转到APP的测试功能,没有添加bootloader功能。 ```c typedef void (*app_t)(void); void iap_load_app(uint32_t appxaddr) { app_t jump2app; uint8_t temp; //disable all interrupt NVIC->ICER[0] = 0xffffffff; NVIC->ICPR[0] = 0xffffffff; //for ch579 interrupt vector remap flag //R8_GLOB_RESET_KEEP bit701 for user app interrupt R8_GLOB_RESET_KEEP &= ~0x80; jump2app=(app_t)*(__IO uint32_t*)(appxaddr+4); __set_MSP(*(__IO uint32_t*)appxaddr); jump2app(); } ``` APP是rt-thread nano v3.1.5,仅运行了2个任务,任务仅控制LED和打印信息。 遇到的问题: 跳转到APP后任务只能切换3次就会触发hartfault中断。 ``` \ | / - RT - Thread Operating System / | \ 3.1.5 build Oct 24 2021 2006 - 2020 Copyright by rt-thread team task1,0 task2,0 task1,1 task2,1 task1,2 task2,2 task1,3 task2,3 psr: 0x01000000 pc: 0x2323232c lr: 0x00006b19 r12: 0x00000000 r03: 0x00000000 r02: 0x20000464 r01: 0x000103ac r00: 0x23232323 hard fault on thread: tidle ``` ## 补充 - 1、单独测试这个APP是没问题的,2个任务正常运行切换。 - 2、APP如果不用操作系统,IAP跳转APP后APP也能正常运行。 问题困扰了很长时间,一直无法解决,请各位大佬帮忙分析一下,万分感谢!
查看更多
2
个回答
默认排序
按发布时间排序
aozima
2021-10-24
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!
可能要重点调一下你的`vector-remap`代码,最好接上SWD。 这些贴子可以看看,有没参考价值。 - [CH579 IAP时中断向量表如何重定向?使用自己的BOOT+APP方式](http://www.wch.cn/bbs/thread-71320-1.html) - [能否提供一个 CH579 完整的 BOOT + APP 的源码 谢谢](http://www.wch.cn/bbs/thread-73378-1.html) - [CH579 InfoFlash layout and BootLoader 。 32KB boot](http://www.wch.cn/bbs/thread-73012-1.html) - [EnterCodeUpgrade 免按键,进入USB和UART下载模式。boot=PB22](http://www.wch.cn/bbs/thread-73200-1.html) - [CH579(Cortex-M0)网络IAP升级介绍及问题解答--(持续更新) 网络升级](https://www.cnblogs.com/mj19971221/p/14499121.html)
cafj
2021-10-25
This guy hasn't written anything yet
感谢您的回复! vector-remap主要功能是实现所有的中断服务函数的跳转。根据标识跳转到boot程序中的中断服务函数或者是跳转到APP程序中的中断服务函数。比如vector-remap中实现TIMER0中断服务函数: ```c void TMR0_IRQHandler(void) { if(R8_GLOB_RESET_KEEP & 0x80) { ((void (*)(void))(*((volatile uint32_t *)(0x400+(__get_IPSR()<<2)))))();//BOOT起始地址0X400 }else { ((void (*)(void))(*((volatile uint32_t *)(0x4000+(__get_IPSR()<<2)))))();//APP起始地址0X4000 } } ``` vector-remap运行后直接跳转到IAP中,IAP要实现的是升级功能(目前IAP仅直接跳转),再从IAP跳转到APP中。 vector_remap的main函数: ```c typedef void (*app_t)(void); void load_iap(uint32_t appxaddr) { app_t jump2iap; //disable all interrupt NVIC->ICER[0] = 0xffffffff; NVIC->ICPR[0] = 0xffffffff; jump2iap=(app_t)*(__IO uint32_t*)(appxaddr+4); __set_MSP(*(__IO uint32_t*)appxaddr); jump2iap(); } int main() { load_iap(0x400);//跳转到boot while(1); } ``` 经测试在IAP程序和APP程序中触发的中断都能正常跳转到实际的中断服务函数中。
撰写答案
登录
注册新账号
关注者
0
被浏览
713
关于作者
cafj
This guy hasn't written anything yet
提问
1
回答
1
被采纳
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
五分钟玩转RT-Thread新社区
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
国产MCU移植系列教程汇总,欢迎查看!
最新文章
1
MQTT协议栈的原理及交互流程图
2
LVGL例程学习——get_started
3
瑞萨RA6M4 SPI0 W5500
4
这才是优美的文件系统挂载方式,亲测有效
5
基于RT-Thread+RA6M4的智能安防系统
热门标签
RT-Thread Studio
串口
LWIP
FinSH
ART-Pi
Env
AT
SPI
Bootloader
USB
Hardfault
CAN
文件系统
studio
DMA
RT-Thread
线程
Nano
stm32
ota
MQTT
SCons
rtthread
ESP8266
freemodbus
I2C
UART
软件包
flash
cubemx
RTC
定时器
W5500
FAL
BSP
rt-smart
rtt
PWM
AB32VG1
ADC
编译报错
msh
socket
SDIO
C++
dfs
at_device
SFUD
MicroPython
RT-Studio
本月问答贡献
小小李sunny
38
个答案
10
次被采纳
出出啊
29
个答案
7
次被采纳
lchnu
11
个答案
5
次被采纳
红枫
22
个答案
4
次被采纳
rcp
14
个答案
4
次被采纳
本月文章贡献
张世争
11
篇文章
30
次点赞
吉利咕噜2022
4
篇文章
5
次点赞
crystal266
3
篇文章
7
次点赞
Liutao
3
篇文章
4
次点赞
RTT_逍遥
2
篇文章
11
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部