这两天在看实验例子中的IAP实验 一直有几个问题不懂
1、if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0x08xxxxxx 为什么要这么判断 0x08xxxxxx又是什么意思,那个资料有说,我一直没找到。
类似的if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x20000000)//判断是否为0X20XXXXXX.也不懂 希望得到大家的帮助 小弟一直很迷惑
2、jump2app();这个在IAP.C中这个不是一个函数吗?为什么找不到定义的地方,我也一直没明白!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1,第一个问题。
STM32程序地址从 0X08000000 开始 执行,PC机也是从硬盘上的 0X08000000 地址开始执行。前四个字节是栈顶地址main()函数式主函数,也有个栈顶地址,其他函数一样,在调用跳转之前,将其对应的函数栈地址保存起来。 BootLoader程序先烧进Flash里,它的栈顶地址从0X08000000开始,4字节栈顶地址数据空间,然后是各种中断服务地址。。。
当收到APP程序时(它自己已经定义好了,收到APP文件后写道0X08000000+N这个地址上),它要把APP程序写到0X08000000+N上,因此,它需要首先判断一下APP程序在MDK中编译生成.bin文件后否是遵循这个0X08000000+N这个地址。如果和Bootloader要求的一样,那么就是正确的文件。
2,是一个函数指针。你自己搜一下相关资料。
谢谢解答
一周热门 更多>