Keil实现Flash升级跳转(STM32/GD32/HC32)

编写BOOT程序,和APP程序。
BOOT程序检查OTA参数,执行OTA升级,然后跳转到APP代码。

记录一下跳转APP需要修改得东西:

1、BOOT程序 修改跳转地址

先检查APP地址是否有效
然后关闭外设 反初始化
设置MSP指针,进行跳转

/*** @brief  Jump from boot to app function.* @param  [in] u32Addr                 APP address* @retval LL_ERR                       APP address error*/
int32_t IAP_JumpToApp(uint32_t u32Addr)
{uint32_t u32StackTop = *((__IO uint32_t *)u32Addr);uint32_t JumpAddr;func_ptr_t JumpToApp;/* Check stack top pointer. */if ((u32StackTop > SRAM_BASE) && (u32StackTop <= (SRAM_BASE + 0x010000UL))) {IAP_PeriphDeinit();/* Jump to user application */JumpAddr = *(__IO uint32_t *)(u32Addr + 4U);JumpToApp = (func_ptr_t)JumpAddr;/* Initialize user application's Stack Pointer */__set_MSP(u32StackTop);JumpToApp();}return LL_ERR;
}

2、APP程序修改起始地址

修改VECT_TAB_OFFSET定义值 与BOOT对应

/*** @brief  Setup the microcontroller system. Initialize the System and update*         the SystemCoreClock variable.* @param  None* @retval None*/
void SystemInit(void)
{/* FPU settings */
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)SCB->CPACR |= ((3UL << 20) | (3UL << 22)); /* set CP10 and CP11 Full Access */
#endifSystemCoreClockUpdate();
#if defined (ROM_EXT_QSPI)SystemInit_QspiMem();
#endif /* ROM_EXT_QSPI *//* Configure the Vector Table relocation */SCB->VTOR = VECT_TAB_OFFSET;    /* Vector Table Relocation */
}

3、APP程序修改内存加载文件

如下图,如果不勾选该项,则要手动修改ACT文件的LR_IROM1区的起始地址和结束地址
如果勾选,则要在target选项中设置起始地址和结束地址
KEIL内存加载配置
在这里插入图片描述

ACT文件一般格式:

; ****************************************************************
; Scatter-Loading Description File
; ****************************************************************
LR_IROM1 0x00004000 0x00040000  {    ; load region size_regionER_IROM1 0x00004000 0x00040000  {  ; load address = execution address*.o (RESET, +First)*(InRoot$$Sections).ANY (+RO).ANY (+XO)}RW_IRAM1 0x1FFF8000 UNINIT 0x00000008  {  ; RW data*(.bss.noinit)}RW_IRAM2 0x1FFF8008 0x0000FFF8  {  ; RW data.ANY (+RW +ZI).ANY (RAMCODE)}RW_IRAMB 0x200F0000 0x00001000  {  ; RW data.ANY (+RW +ZI)}
}

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

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

相关文章

ZooKeeper+HBase分布式集群环境搭建

安装版本&#xff1a;hadoop-2.10.1、zookeeper-3.4.12、hbase-2.3.1 一、zookeeper集群搭建与配置 1.下载zookeeper安装包 2.解压移动zookeeper 3.修改配置文件&#xff08;创建文件夹&#xff09; 4.进入conf/ 5.修改zoo.cfg文件 6.进入/usr/local/zookeeper-3.4.12/zkdata…

Vue 模板字符串碰到script无法识别,报错Parsing error: Unterminated template.

需求&#xff1a; 将js代码完整的显示在界面上&#xff0c;包括标签 代码如下&#xff1a; 报错信息如下&#xff1a; 我们在上图中可以看到模板字符串加入了script标签后会报错 原因&#xff1a;运行JS的时候由上至下&#xff0c;先识别模板字符串里面的script标签&#xf…

基于B/S架构,包括PC后台管理端、APP移动端、可视化大屏端的智慧工地源码

智慧工地管理平台充分运用数字化技术&#xff0c;聚焦施工现场岗位一线&#xff0c;依托物联网、互联网、AI等技术&#xff0c;围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三大体系为基础应用&#xff0c;实现全面高效的工程…

计算机网络,网络(OSI)七层模型,三次握手四次挥手,get与post请求区别,网络IO(BIO\NIO\AIO),TCP与UDP区别

1.OSI模型&#xff1f; 开放式系统互联通信参考模型(Open System Interconnection Reference Model) OSI网络七层模型&#xff1a;应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP协议群简化了OSI七层模型&#xff1a;应用层、传输层、网络层、数据链路…

自然语言处理---文本预处理概述

自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是计算机科学与语言学中关注于计算机与人类语言间转换的领域。其主要应用于&#xff1a;语音助手、机器翻译、搜索引擎、智能问答等。 文本预处理概述 文本语料在输送给模型前一般需要一…

QSlider 类使用教程

文章目录 1、简介2 、公共类型3、属性4、functions4.1、访问属性相关 function4.2、公共槽4.3、Signal4.4、其他方法 5、设置样式 QT 官方文档参考地址&#xff1a;https://doc.qt.io/qt-5/qslider.html 1、简介 QSlider是垂直或水平滑块条控件&#xff0c;最常见的应用就是视…

业绩不俗,毛利率下滑,股价接连下跌,片仔癀将向何处去?

撰稿|行星 来源|贝多财经 10月16日&#xff0c;中药龙头企业漳州片仔癀药业股份有限公司&#xff08;600436.SH&#xff0c;下称“片仔癀”&#xff09;发布截至9月30日的2023年前三季度业绩报告。发布财报后&#xff0c;片仔癀的股价多日下跌。 10月17日、18日、19日和20日…

探索流视频的发送

1.网络连接 2.主设备将某处视频开始的视频数据发送给从设备。 之前有读取本地视频并播放的demo,所以可以先测试网络连接的问题。 先用模拟器进行模拟吧。方便进行测试。 是的&#xff0c;可以使用Android设备使用上述库或框架来构建实时Web应用程序。虽然这些库和框架在Java服…

MySQL常见面试题

一、存储引擎相关 &#xff08;1&#xff09;MySQL 支持哪些存储引擎? MySQL支持多种存储引擎&#xff0c;比如InnoDB&#xff0c;MyISAM&#xff0c; MySQL大于等于5.5之后&#xff0c;默认存储引擎是InnoDB &#xff08;2&#xff09;InnoDB 和 MyISAM 有什么区别? InnoD…

【计算机网络】IP协议的相关特性

IP协议&#xff1a;互联网的核心组件 在当今高度数字化的世界中&#xff0c;互联网已成为人们生活、工作不可或缺的一部分。而在这个庞大的网络中&#xff0c;IP协议&#xff08;Internet Protocol&#xff09;作为核心的通信协议&#xff0c;发挥着至关重要的作用。本文将详细…

【二级建造师】首次报考人员需提供以下材料

(1)相应的学历证书原件及复印件; (2)本人身份证(或军官证)原件及复印件; (3)有效的业务工作证明(在报名表"单位意见"栏填写并加盖公章); (4)本人近期1寸同底免冠照片2张, 2寸同底免冠照片1张(贴于报名表指定位置); (5)如实填写的当年度二级建造师执业资格考试报名表(…

简单实现spring的set依赖注入

Maven依赖: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0…

http post协议发送本地压缩数据到服务器

1.客户端程序 import requests import os # 指定服务器的URL url "http://192.168.1.9:8000/upload"# 压缩包文件路径 folder_name "upload" file_name "test.7z" headers {Folder-Name: folder_name,File-Name: file_name } # 发送POST请求…

Linux 内存管理

【精选】Linux 内存管理 详解&#xff08;虚拟内存、物理内存&#xff0c;进程地址空间&#xff09;_linux内存管理详解-CSDN博客 物理内存 虚拟内存 页表和MMU建立虚拟地址和物理地址的映射关系。 页4K&#xff0c;页表

Android 13.0 根据包名授予OP_REQUEST_INSTALL_PACKAGES权限

1.概述 在系统13.0的定制化开发中,对于在app中调用安装第三方app的时候,会在这时弹出安装未知来源弹窗,需要默认授予REQUEST_INSTALL_PACKAGES 权限,来安装第三方app的安装未知来源权限,所以就是今天需要解决的这个问题 2.根据包名授予OP_REQUEST_INSTALL_PACKAGES的核心…

浏览器从输入url到渲染页面发生了什么?

浏览器从输入url到渲染页面发生了什么&#xff1f; 一、解析URL 首先浏览器做的第一步工作就是要对 URL 进行解析&#xff0c;浏览器会判断这个url的合法性 &#xff0c;以及是否有可用缓存&#xff08;如果有缓存即可以不用进行下一步的DNS域名解析&#xff09;&#xff0c;…

CAN总线测试——CAN一致性之物理层

CAN一致性物理层测试项 1.最小通讯电压测试2.最大通讯电压测试3.显性位/隐性位输出电压测试4.信号跳变沿测试5. 地偏移6. 终端电阻 1.最小通讯电压测试 2.最大通讯电压测试 3.显性位/隐性位输出电压测试 4.信号跳变沿测试 5. 地偏移 6. 终端电阻

Docker笔记-docker搭建nginx及移植

从官网找到对应的镜像&#xff1a; ​​​​​​https://hub.docker.com/_/nginx/tags 查看镜像 docker images 运行容器&#xff0c;然后将配置文件等拷贝到主机上&#xff1a; docker run --name nginx -d nginx 拷贝路径&#xff1a; docker cp nginx:/etc/nginx/nginx…

maven-plugin-shade 详解1

maven-plugin-shade 是 Maven 的一个插件&#xff0c;它的作用是将多个 jar 包合并成一个 jar&#xff0c;同时将其中的依赖关系也合并到该 jar 中。这个插件常用于创建可执行 jar 包和打包 web 应用程序。 下面是 maven-plugin-shade 的一些常用配置&#xff1a; 打包的形式&…

JDBC相关记录

JDBC&#xff1a;Java DadaBase Connectivity 即Java语言连接数据库。 本质&#xff1a;JDBC是SUN公司制定的一套接口&#xff08;interface&#xff09;。 作用&#xff1a;不同的数据库有自己独特设计原理&#xff0c;JDBC的可以让Java程序员关注业务本身&#xff0c;而不需要…