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在线升级的源码中的地址解读相关推荐

  1. 在线直播网站源码开发,视频的采集如何实现?

    支撑在线直播网站源码发展的关键就是直播技术的实现,在整个流媒体传输中视频的采集时开始,一般利用到的是设备端的摄像头,我们在实现视频采集时,不仅需要获取摄像头的调用权限,还要获取到视频录制的数据. 我们 ...

  2. CRC校验原理及STM32 IAP在线升级程序

    CRC校验原理: 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据 ...

  3. 单片机 stm32 差分升级 增量升级算法源码, 纯c编写跨平因为是程序源码

    单片机 stm32 差分升级 增量升级算法源码, 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag

  4. 单片机 stm32 差分升级 增量升级算法源码,纯c编写跨平因为是程序源码

    单片机 stm32 差分升级 增量升级算法源码,纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 现有:69500653978935134Deflag

  5. 单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码

    单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag

  6. 单片机 stm32 差分升级 增量升级算法源码

    单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag

  7. STM32 IAP 在线升级原理全解析

    点击左上角的"关注",定期更新 STM32 最新资讯,总有你想要的信息! STM32 IAP 在线升级原理全解析 1. 什么是 IAP?    IAP(In-Application ...

  8. LPC2478(22)IAP在线升级

    目录 1.开发环境 2.特性 3.IAR编译器的相关文件 3.1.icf文件 3.2.IcfEditorFile文件内容 3.3.ddf文件 3.4.board文件 4.IAP相关 4.1.软件复位 ...

  9. STM32F429实现USB通过IAP在线升级

    1.目标 1.实现STM32对U盘文件的读取. 2.实现STM32拓展外部SDRAM. 3.实现STM32拓展外部Flash. 4.实现内存管理. 5.实现Fatfs文件系统,读写U盘和外部Flash ...

最新文章

  1. WEB前端开发的思考与感悟
  2. R语言实战应用精讲50篇(十九)-R语言gganimate函数应用案例:静态图变成动态,让你的图表更酷炫
  3. 【CV秋季划】人脸算法那么多,如何循序渐进地学习好?
  4. sonarqube扫描安卓代码
  5. 排序算法模板(C语言版)
  6. ITU-RBT.656视频标准接口
  7. 清华大学 张春良 计算机系,南京张春良老师小学生信息学辅导
  8. 【英语学习】【English L06】U05 Appointments L6 The experience of booking or canceling
  9. java 容器 List
  10. 题解报告:hdu 1754 I Hate It(线段树)
  11. Jenkins+Git+Maven+Nexus+Tomcat
  12. OICQ登录号码清除器实现原理
  13. 程序员必备的8个学习工具
  14. Sftp中文件名乱码
  15. JSP面试题(重要)
  16. 数据库作业8:SQL练习5 - SELECT(嵌套查询EXISTS、集合查询、基于派生表的查询)
  17. 2021上交应用统计考研经验贴(初试)
  18. 搜搜(www.soso.com),I 老虎油!
  19. html画圣诞树—动态效果展示【炫酷合集】
  20. 11个资源强大的网站!知乎超20万人强烈推荐,再也不怕资源难找

热门文章

  1. oracle单节点加入rac,实验:Oracle单节点RAC添加节点
  2. re匹配字符串的中间一段_爬虫利器之 re 模块
  3. java junit 怎么写_使用JUnit测试java代码
  4. mac微软雅黑字体_“微软雅黑”有坑,小编向你推荐免费的开源字体
  5. oracle视图用法,Oracle视图用法示例
  6. php 匹配多个字符串,php 字符串中是否包含指定字符串的多种方法
  7. 范数与L1损失(MAE)、L2损失(MSE)的关系
  8. Discretized Streams (DStreams)离散化流
  9. CreateJS基础 学习笔记(上)
  10. fastjson 添加key value_FastJson迁移至Jackson