求助:stm32 用内部flash虚拟u盘进行IAP

2019-12-11 18:39发布

求助:stm32 用内部flash虚拟u盘进行IAP

现在我虚拟出来了(stm32f103c8t6) iap程序8k 虚拟出来是52k,格式化后32k(1024字节)
转跳程序.png (16.48 KB, 下载次数: 0) 下载附件 转跳程序 2014-8-21 21:14 上传
iap_load_app(0x08008000);        无法转跳,直接进入IAP
iap_load_app(0x08008800); 死机



我直接将app程序强制写进0x08008000,iap转跳成功(IAP设置转跳地址为08008000)..

求助..为啥直接放bin不能转跳.bin不是直接可以读取的文件?我找到bin真地址转跳不就行了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
95条回答
FlandreUNX
2019-12-13 21:58
richards 发表于 2014-8-23 10:29
你好 , “文件(0x0005000以前) ” 这是指什么,另外看了你的代码恍然大悟,分区表不需要我自己产生。我 ...

你好 , “文件(0x0005000以前) ” 这是指什么
flash将物理地址0x08003000以后的空间划分到U盘.所以0x08003000就是U盘的首地址.在PC看来就是0x00000000.而FLASH写入只能是先一页的擦除.所以当格式化完成时.0x08003000(0x00000000)到一段地址是为FAT分区表.大概是到0x08008000(0x00005000)
按照道理当复制一个文件进入U盘时就应该从0x08008000开始(0x00005000).但是实际看啦并不是.而是从0x08008800开始(0x00005800)
这就解析了为什么当我转跳地址填0x08008000时 过不了第一条栈顶判断

一周热门 更多>