串口IAP实验的几个问题 一直不懂

2019-07-21 07:58发布

这两天在看实验例子中的IAP实验 一直有几个问题不懂
1、
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0x08xxxxxx 为什么要这么判断  0x08xxxxxx又是什么意思,那个资料有说,我一直没找到。
  类似的
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x20000000)//判断是否为0X20XXXXXX.也不懂 希望得到大家的帮助 小弟一直很迷惑
2、jump2app();这个在IAP.C中这个不是一个函数吗?为什么找不到定义的地方,我也一直没明白!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
zhaojiangbao
1楼-- · 2019-07-21 13:41

1,第一个问题。


STM32程序地址从 0X08000000 开始 执行,PC机也是从硬盘上的 0X08000000 地址开始执行。前四个字节是栈顶地址main()函数式主函数,也有个栈顶地址,其他函数一样,在调用跳转之前,将其对应的函数栈地址保存起来。 BootLoader程序先烧进Flash里,它的栈顶地址从0X08000000开始,4字节栈顶地址数据空间,然后是各种中断服务地址。。。
当收到APP程序时(它自己已经定义好了,收到APP文件后写道0X08000000+N这个地址上),它要把APP程序写到0X08000000+N上,因此,它需要首先判断一下APP程序在MDK中编译生成.bin文件后否是遵循这个0X08000000+N这个地址。如果和Bootloader要求的一样,那么就是正确的文件。

2,是一个函数指针。你自己搜一下相关资料。


qiuxiaoping
2楼-- · 2019-07-21 17:26
0x8000000是Flash的起始地址,0x20000000是SRAM的起始地址。jump2app()是一个虚拟函数,具体网上可以找到
lydevs
3楼-- · 2019-07-21 23:03
串口IAP是什么??
Admin
4楼-- · 2019-07-21 23:24
 精彩回答 2  元偷偷看……
ln1990
5楼-- · 2019-07-22 03:41
谢谢给予解答 我明白了
xiaokun
6楼-- · 2019-07-22 05:25
zhaojiangbao 发表于 2014-1-17 08:47
1,第一个问题。

STM32程序地址从 0X08000000 开始 执行,PC机也是从硬盘上的 0X08000000 ...

谢谢解答

一周热门 更多>