STM32的IAP在线升级的源码中的地址解读
1.ApplicationAddress的内容含义
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{
SerialPutString("Execute user Program\r\n\n");
//跳转至用户代码
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
//初始化用户程序堆栈指针
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
解析:
ApplicationAddress:APP程序起始地址,此处为 #define ApplicationAddress 0x8004000
该地址处的内容(对应的值)通过在线仿真是:20000428。如图1:
地址20000428含义,通过查APP程序的.map文件,如图2:
20000000:SRM运行内存起始处
20000428 = 20000000+4+20+400(1024)
2. 0X20001000含义
u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)));
IAP将接收到的APP内容放到运行内存0X20001000处,0x1000(4kb)空间大小的内存留给IAP程序自身用。
3. (ApplicationAddress+4)地址对应内容的含义
if(((*(vu32*) (ApplicationAddress+4) ) &0xFF000000)==0x08000000)
{
iap_load_app(FLASH_APP1_ADDR);
}
解析:
((*(vu32*) (ApplicationAddress+4) ) <<==========>>*(0x8004000+4)
其内容对应的值为08004100如图1所示。
地址08004101的含义是复位中断处理函数入口,通过查APP程序的.map文件,如图3:
4.地址0X20001000+4内容含义
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
{
iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//更新FLASH代码
}
解析:
0X20001000:APP运行内存的起始地址
0x20001000+4的内容:是FLASH内存物理地址。如图4.
1.ApplicationAddress的内容含义
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{
SerialPutString("Execute user Program\r\n\n");
//跳转至用户代码
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
//初始化用户程序堆栈指针
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
解析:
ApplicationAddress:APP程序起始地址,此处为 #define ApplicationAddress 0x8004000
该地址处的内容(对应的值)通过在线仿真是:20000428。如图1:
地址20000428含义,通过查APP程序的.map文件,如图2:
20000000:SRM运行内存起始处
20000428 = 20000000+4+20+400(1024)
2. 0X20001000含义
u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)));
IAP将接收到的APP内容放到运行内存0X20001000处,0x1000(4kb)空间大小的内存留给IAP程序自身用。
3. (ApplicationAddress+4)地址对应内容的含义
if(((*(vu32*) (ApplicationAddress+4) ) &0xFF000000)==0x08000000)
{
iap_load_app(FLASH_APP1_ADDR);
}
解析:
((*(vu32*) (ApplicationAddress+4) ) <<==========>>*(0x8004000+4)
其内容对应的值为08004100如图1所示。
地址08004101的含义是复位中断处理函数入口,通过查APP程序的.map文件,如图3:
4.地址0X20001000+4内容含义
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
{
iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//更新FLASH代码
}
解析:
0X20001000:APP运行内存的起始地址
0x20001000+4的内容:是FLASH内存物理地址。如图4.
---------------------
作者:qq_21476953
来源:CSDN
原文:https://blog.csdn.net/qq_21476953/article/details/53464479
版权声明:本文为博主原创文章,转载请附上博文链接!
STM32的IAP在线升级的源码中的地址解读相关推荐
- 在线直播网站源码开发,视频的采集如何实现?
支撑在线直播网站源码发展的关键就是直播技术的实现,在整个流媒体传输中视频的采集时开始,一般利用到的是设备端的摄像头,我们在实现视频采集时,不仅需要获取摄像头的调用权限,还要获取到视频录制的数据. 我们 ...
- CRC校验原理及STM32 IAP在线升级程序
CRC校验原理: 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据 ...
- 单片机 stm32 差分升级 增量升级算法源码, 纯c编写跨平因为是程序源码
单片机 stm32 差分升级 增量升级算法源码, 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag
- 单片机 stm32 差分升级 增量升级算法源码,纯c编写跨平因为是程序源码
单片机 stm32 差分升级 增量升级算法源码,纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 现有:69500653978935134Deflag
- 单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码
单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag
- 单片机 stm32 差分升级 增量升级算法源码
单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag
- STM32 IAP 在线升级原理全解析
点击左上角的"关注",定期更新 STM32 最新资讯,总有你想要的信息! STM32 IAP 在线升级原理全解析 1. 什么是 IAP? IAP(In-Application ...
- LPC2478(22)IAP在线升级
目录 1.开发环境 2.特性 3.IAR编译器的相关文件 3.1.icf文件 3.2.IcfEditorFile文件内容 3.3.ddf文件 3.4.board文件 4.IAP相关 4.1.软件复位 ...
- STM32F429实现USB通过IAP在线升级
1.目标 1.实现STM32对U盘文件的读取. 2.实现STM32拓展外部SDRAM. 3.实现STM32拓展外部Flash. 4.实现内存管理. 5.实现Fatfs文件系统,读写U盘和外部Flash ...
最新文章
- WEB前端开发的思考与感悟
- R语言实战应用精讲50篇(十九)-R语言gganimate函数应用案例:静态图变成动态,让你的图表更酷炫
- 【CV秋季划】人脸算法那么多,如何循序渐进地学习好?
- sonarqube扫描安卓代码
- 排序算法模板(C语言版)
- ITU-RBT.656视频标准接口
- 清华大学 张春良 计算机系,南京张春良老师小学生信息学辅导
- 【英语学习】【English L06】U05 Appointments L6 The experience of booking or canceling
- java 容器 List
- 题解报告:hdu 1754 I Hate It(线段树)
- Jenkins+Git+Maven+Nexus+Tomcat
- OICQ登录号码清除器实现原理
- 程序员必备的8个学习工具
- Sftp中文件名乱码
- JSP面试题(重要)
- 数据库作业8:SQL练习5 - SELECT(嵌套查询EXISTS、集合查询、基于派生表的查询)
- 2021上交应用统计考研经验贴(初试)
- 搜搜(www.soso.com),I 老虎油!
- html画圣诞树—动态效果展示【炫酷合集】
- 11个资源强大的网站!知乎超20万人强烈推荐,再也不怕资源难找
热门文章
- oracle单节点加入rac,实验:Oracle单节点RAC添加节点
- re匹配字符串的中间一段_爬虫利器之 re 模块
- java junit 怎么写_使用JUnit测试java代码
- mac微软雅黑字体_“微软雅黑”有坑,小编向你推荐免费的开源字体
- oracle视图用法,Oracle视图用法示例
- php 匹配多个字符串,php 字符串中是否包含指定字符串的多种方法
- 范数与L1损失(MAE)、L2损失(MSE)的关系
- Discretized Streams (DStreams)离散化流
- CreateJS基础 学习笔记(上)
- fastjson 添加key value_FastJson迁移至Jackson