news 2026/4/16 13:34:59

基础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/4/16 13:30:36

手把手教你降AIGC:利用这些免费工具,轻松把AI率降到10%以下

毕业生都懂。论文写完了&#xff0c;查重过了&#xff0c;结果卡在了AIGC检测上。 明明是自己一个字一个字码的&#xff0c;或者稍微用了点辅助&#xff0c;就被判定是AI写的。 那种崩溃&#xff0c;我太懂了。 作为在红书和知乎摸爬滚打多年的老手&#xff0c;我也踩过不少坑…

作者头像 李华
网站建设 2026/4/9 19:50:02

生产级短信验证码登录系统设计:从安全对抗到工程落地

🛡️ 生产级短信验证码登录系统设计与 Java 实现 —— 从安全对抗视角构建可上线、可审计、可抗灰产的登录体系 短信验证码登录从来不是“发个 6 位数”那么简单。 在真实生产环境中,它是灰产攻击的第一目标,也是账号安全的第一道防线。 本文将完整展示一套已在真实生产环…

作者头像 李华
网站建设 2026/4/11 5:35:05

掌握AI大模型:从入门到精通的完整学习路线(必收藏)_AI大模型学习路线(非常详细)

本文提供AI大模型的系统学习路线&#xff0c;涵盖数学与编程基础、机器学习入门、深度学习深入、大模型探索、进阶应用及社区资源六个阶段。推荐各阶段经典书籍、课程和实践项目&#xff0c;强调理论与实践结合。通过系统学习&#xff0c;读者可掌握从基础到应用的AI大模型技术…

作者头像 李华
网站建设 2026/4/12 14:41:44

Flux:在iMessage中构建专属agent | ProductHunt 今日热榜 - 1月04日

今日榜单登顶产品 Flux 以 272 票登顶今日热榜&#xff01;这是一款将个性化AI对话agent直接嵌入iMessage和WhatsApp等即时通讯平台的创新工具&#xff0c;旨在通过更自然的交互界面解决AI的“界面问题”。 本期亮点产品介绍 本期Product Hunt热榜呈现多元创新态势。AI应用与隐…

作者头像 李华