stm32 bootloader跳转程序设计

news2024/9/29 18:23:20

文章目录

  • 1、bootloader跳转程序设计
    • (1)跳转程序
    • (2)、app程序中需要注意
      • <1>、在keil中ROM起始地址和分配的空间大小
      • <2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址
      • <3>、main函数中使能中断
  • 总结:

1、bootloader跳转程序设计

(1)跳转程序

pFunction JumpToApplication;
uint32_t JumpAddress;
void BootLoad_Jump(void)
{
/* Check Vector Table: Test if user code is programmed starting from address
"APPLICATION_ADDRESS" */
if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
{   
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS+4); // 取中断向量表中的复位中断地址
HAL_Delay(100);
   __disable_irq();  //关闭所有中断,在跳转后使能中断
//    SCB->VTOR = FLASH_BASE |VECT_TAB_OFFSET;
JumpToApplication = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
JumpToApplication();
 }
}

(2)、app程序中需要注意

<1>、在keil中ROM起始地址和分配的空间大小

在这里插入图片描述

<2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址

在这里插入图片描述

<3>、main函数中使能中断

在这里插入图片描述

总结:

Bootloader里面主要是
1、设置bootloader和app的空间
2、接收编译好的app的bin文件,写入flash
3、实现跳转
App里面主要修改的地方是
1、 ROM起始地址和分配的空间大小
2、 重定向中断向量
3、 生成bin文件
这里就是整个程序执行的流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2177522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析 Keil 中的 sct 文件

目录 一、程序的存储与运行1、存储2、加载、运行 二、sct 分散加载文件1、简介2、文件格式2.1 加载域2.2 执行域2.3 输入节区描述 3、配置 sct 文件 一、程序的存储与运行 1、存储 程序编译后&#xff0c;应用程序中所有具有同一性质的数据(包括代码)被归到一个域&#xff0c…

Java必修课——Spring框架

目录 一、Spring框架概述二、IOC概念和原理2.1、什么是IOC2.2、IOC接口 三、深入理解Java基础中的集合框架3.1、Collection3.2、Map3.3、集合工具类 四、练习写一个SpringMVC框架1、介绍2、程序实践3、总结 五、Java开发者必备10大数据工具和框架 一、Spring框架概述 Spring是…

从追随者到领跑者:suker书客如何粉碎技术障碍,成就行业传奇

护眼灯从小众需求逐渐走向了大众消费&#xff0c;一度引来许多品牌的相继入场&#xff0c;以吸顶灯、吊灯、台灯和落地灯等各大护眼品类为代表&#xff0c;均在悄然替代普通的台灯&#xff0c;这同时也揭示了关于护眼灯的发展潜力。 一些企业看到护眼灯市场前景后&#xff0c;…

煤矿厂智能化可视化:提升安全与效率

运用图扑可视化技术对煤矿厂进行实时监控与数据分析&#xff0c;提高安全管理水平和生产效率。

C语言基础之数组

上一篇讲述了C语言函数的使用&#xff0c;本文讲述数组的相关概念&#xff0c;通过一维数组、二维数组、数组越界等详细讲解数组相关的具体内容&#xff0c;以辅助读者了解并掌握数组相关概念。 一维数组 一维数组的定义与创建 若无数组&#xff0c;我们要存储一堆类型相同的…

osalTaskREC_t ‘REC’缩写的含义

osalTaskREC_t中‘REC’缩写的含义。 在osal中定义了 osalTimerRec_t&#xff0c; osalTaskRec_t 结构体&#xff0c;那么osal源码中类型名 osalTaskREC_t中‘REC’缩写的含义是什么&#xff1f; 查了下往上资料&#xff0c;rec应该是 Record&#xff08;记录&#xff09;’的…

AI大模型之旅-最强开源文生图工具Stable Diffusion WebUI 教程

1.1克隆 Automatic1111 的 GitHub 仓库 在你想安装 Web UI 的文件夹路径下执行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 这将会克隆整个仓库到本地。 这里会默认访问 https://huggingface.co/ 下载 因此需要魔法 1.2 进入仓库目录 cd stable-di…

手机改IP地址怎么弄?全面解析与操作指南

在当今数字化时代&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;其重要性不言而喻。有时候&#xff0c;出于隐私保护、网络访问需求或其他特定原因&#xff0c;我们可能需要更改手机的IP地址。然而&#xff0c;对于大多数普通用户来说&#xff0c;如何操作可能还是…

Xshell调用powershell连接Teleport

公司最近切换telport管理SSH的连接访问。配置完成后&#xff0c;通过powershell可能远程访问。但是powershell缺少session管理功能&#xff0c;每次连接都记不住远程IP&#xff0c;很是头疼。 利用Xshell的管理能力是否可行&#xff1f;那是相当可行。 首先&#xff0c;新建se…

环境变量配置文件

环境变量配置文件 系统级配置文件 /etc/profile 系统范围的配置文件&#xff0c;适用于所有用户的登录 shell。 定义了系统级别的环境变量&#xff0c;并调用其他配置文件&#xff08;如 /etc/bash.bashrc&#xff09;。 /etc/bash.bashrc 非登录 shell 的全局配置文件。 在系…

Java异步编程:初学者快速入门到精通指南

异步编程简介 异步编程允许程序在执行某些操作&#xff08;如网络请求、文件I/O等&#xff09;时不被阻塞&#xff0c;能够继续执行其他任务。这不仅可以提高程序的响应性&#xff0c;还能提升资源的利用率。 为什么选择Java进行异步编程&#xff1f; Java提供了多种异步编程…

Echarts折线图的末尾部分线条虚线

原理&#xff1a;等于画了两条线&#xff0c;一条实线一条虚线&#xff1b;把实线的最后的值给虚线&#xff1b;再将提示框进行过滤&#xff0c;防止多个点以及值为空的情况 初步实现参考&#xff1a; option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, …

《低空经济:文旅行业的新引擎 》

《低空经济&#xff1a;文旅行业的新引擎 》 一、低空经济与文旅行业的融合态势 低空经济作为新兴经济形态&#xff0c;正与文旅行业深度融合&#xff0c;为文旅发展带来新机遇。 近年来&#xff0c;随着科技的不断进步和人们对旅游体验的不断追求&#xff0c;低空经济与文旅…

js列表数据时间排序和取唯一值

1.取唯一值[...new Set(array)] const array [1, 2, 3, 2, 4, 5, 3, 5]; // 使用Set去除重复元素 const uniarray [...new Set(array)]; console.log(uniarray); // 输出: [1, 2, 3, 4, 5] 2.排序 var u [1,3,2,5,4]; var uu u.sort(); console.log(uu); var u [1,3…

ACL 2023--MetaAdapt: 通过元学习实现领域自适应的少量样本虚假信息检测

https://github.com/Yueeeeeeee/MetaAdapt 随着社交媒体上出现的新话题&#xff08;例如COVID-19&#xff09;成为虚假信息传播的来源&#xff0c;克服原始训练领域&#xff08;即源领域&#xff09;与这些目标领域之间的分布变化&#xff0c;仍然是虚假信息检测中的一项复杂任…

金三银四:20道前端手写面试题

文章目录 一、前言二、题目1. 防抖节流解读 2.一个正则题3. 不使用a标签&#xff0c;如何实现a标签的功能4. 不使用循环API 来删除数组中指定位置的元素&#xff08;如&#xff1a;删除第三位&#xff09; 写越多越好5. 深拷贝解读 6. 手写call bind applycall 解读apply 解读 …

Chrome无法拖入加载.crx扩展文件(以IDM为例)

问题原因&#xff1a;新版本的Chrome浏览器已不支持加载.crx文件 解决办法&#xff1a;将.crx文件压缩为.zip文件&#xff0c;解压缩后再加载到Chrome中 以IDM的.crx文件作为示例&#xff1b; IDM的.crx文件位于C:\Program Files (x86)\Internet Download Manager; 将IDMGCE…

计算机毕业设计 C语言学习辅导网站的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

记一次实战中对Ruoyi系统的渗透

前言 最近碰到比较多Ruoyi的站&#xff0c;ruoyi的话漏洞还是比较多的&#xff0c;这里就分享一下自己渗透的一些案例吧&#xff0c;方便大家参考学习 首先声明 文章中涉及的敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权…

解决:使用layui.treeTable.updateNode,更新表格数据后,done里面的事件丢失问题

1. 背景 在给树形表格添加行点击事件&#xff0c;并且只更新当前行数据。 treeTable.updateNode("SpeProjListId", result.LAY_DATA_INDEX, result);更新数据后&#xff0c;点击事件失效。 1. 给字段绑定事件&#xff1a; class"link_a link_style" , {…