这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » Bootloader在App跳转时失败

共1条 1/1 1 跳转至

Bootloader在App跳转时失败

院士
2026-01-20 11:19:31     打赏

在编写带有Bootloader的程序开发时常遇到一个问题:

”bootloader程序在跳转app程序的时候,如果bootloader程序和app程序都没有使用中断的情况下可以正常跳转,但是bootloader程序或app程序有一方面使用中断的话就会进入到hardfault_handler,而bootloader程序或app程序单独运行时没有问题。“

是程序代码写得不对吗?是程序的设置不对吗?其实这个就是中断向量表设置的问题。

中断向量表记录着中断函数的入口地址,或者可以理解为记录着中断函数的指针地址。

当嵌入式系统发生中断时,系统会加载中断函数的地址,并跳转。而我们的程序出错便在这里。

试想一下,当中断发生时,嵌入式系统加载一个非法的数值,而这个数值显示不会有对应的函数。这时,系统再跳转执行时,将会发生hardfault_handler。

原理我们理解了,接下来再看看如果设置吧!

中断向量配置.jpg

首先,我们需要把App的起始地址由0x0800_0000变更为App的起始地址,我这里是0x0800_5000。在Keil中的这个配置将关系到程序跳转后的SP加载的PC指针。配置错误,程序无法正常跳转与运行。

其次,我们需要变更startup.s中的VTECTOR的寄存器向量地址。

经过上述两步,你的Bootloader便可以正常跳转到APP并运行了。





关键词: Bootloader     失败    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]