news 2026/2/16 6:19:34

基础bootloader跳转

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基础bootloader跳转

本次内容总共要使用到两程序bootloader和app的工程,使用HAL库实现。

以下是原理图。

在明白bootloader的目的后,只需要在对应的项目中开启对应的地址跳转,并烧写到对应的地址区中。

#define APP_START_ADDR 0x08004000 #define FLASH_BASE_ADDR 0x08000000 #define RAM_BASE_ADDR 0x20000000 #define RAM_SIZE 0x5000 void Bootloader_JumpToApp(void) { //判断跳转是否是合格地址,并进行相对于的跳转操作 uint32_t App_StackAddr = *(uint32_t *)APP_START_ADDR; if ((App_StackAddr > RAM_BASE_ADDR) && (App_StackAddr < (RAM_BASE_ADDR + RAM_SIZE))) { __disable_irq(); SysTick->CTRL=0; SysTick->LOAD=0; SysTick->VAL=0; __set_MSP(App_StackAddr); void (*App_ResetHandle)(void)=(void (*)(void))(*(uint32_t *)(APP_START_ADDR + 4)); App_ResetHandle(); } else { while (1) { printf("App Address Invalid!\r\n"); HAL_Delay(1000); } } }

在对应的工程文件中烧录到对应位置

将两个程序烧录到单片机中,app代码要有如下

SCB->VTOR = 0x08004000; __enable_irq();

用来进行中断向量表的重指定,同时重新使能中断,其他代码随意,只要可以实现对应的效果就行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/13 2:31:18

基于Java的天花吊顶业务智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 天花吊顶业务智慧管理系统主要功能模块涵盖了公司管理、员工管理、材料管理等十余个方面&#xff0c;旨在实现数据的高效录入与查阅。相比传统选题&#xff0c;“烂大街”的系统大都局限于单一领域或基础功能&#xff0c;而本系统的全方位…

作者头像 李华
网站建设 2026/2/6 5:55:35

2026年,预训练又回来了!非常详细收藏我这一篇就够了

scaling law 开始停滞不前&#xff0c;大家逐渐意识到真正重要的是强化学习。 过去一年中&#xff0c;绝大多数进展正是由这一方法推动的。然而事实证明&#xff0c;这种判断是错的。就连OpenAI这样的顶尖实验室也被打了个措手不及&#xff0c;并为此付出了代价。 下面我将解释…

作者头像 李华
网站建设 2026/2/5 3:46:14

Windows系统软件DLL运行库文件 免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华