flash擦除
升级程序保存在0x801B000-0x801EC00 flash从0x801B000擦除没有问题可以把升级程序擦除掉但一从0x8000000开始擦除就过不去了 之前在st32f103可以 用的是415CBT6FLASH_Unlock();
j=0;for(i=0;i<ErasePagelen;i++)
{
FLASH_ErasePage(((uint32_t)0x8000000)+j);j=j+0x400;IWDG_Feed();
}
FLASH_Lock(); slf123123 发表于 2021-7-10 16:57
用的是415CBT6
FLASH_Unlock();
j=0;for(i=0;i
ErasePagelen值是107 是不是实际地址偏移不对 fuqinyyy 发表于 2021-7-11 09:06
是不是实际地址偏移不对
我试了一下把升级的程序做为主程序跑 是可以正常擦除的但把升级程序放到0x801B000 擦除0x8000000的内容的话只能擦除掉两页 之后的操作就不执行 好像是被中断了 雅特力的flash结构和分区和ST一样不? 和ST一样,要注意flash page size会根据flash容量而不同。256K及以上flash容量,page size为2K. 而对于256K以下flash容量,page size为1K. muyichuan2012 发表于 2021-7-14 09:07
和ST一样,要注意flash page size会根据flash容量而不同。256K及以上flash容量,page size为2K. 而对于25 ...
我看到一个文档是将IAP放在非闪存起始地址的方法
当放在非 page0 的起始地址时,需要在 page0 增加一个引导程序,
请问一下这个引导程序是必须要加的吗因为我之前用st的时候是没有这个引导程序的IAP是放在非闪存起始地址 然后直接从0x8000000开始擦开始写 muyichuan2012 发表于 2021-7-14 09:07
和ST一样,要注意flash page size会根据flash容量而不同。256K及以上flash容量,page size为2K. 而对于25 ...
flash页数我应该是没搞错的用的是CBT6 128k 的flash所以擦的时候按一页0x400擦的 这样做是可以的,没有任何问题的。
这个可以随意的擦除的,没有任何问题的。
需要进行擦除之后,再进行烧录。解锁,擦除,烧录。
前面两页是不能擦除的吧,自动写保护的 来结一下贴我用的是AT32F415CBT6 程序的话起始地址放的是一个UCOSIII 然后IAP放在了flash的最后面几页一开始从os跳转到iap升级后一直发现flash擦除出现问题只能擦除掉几页不能全擦然后我就在flash起始页做了个引导程序做跳转发现可以了但我一直奇怪的是为什么不能从0x8000000开始擦写 我明明用ICP把flash全擦 保护什么也全关了 然后我又回去试了一下把主程序放起始的位置发现可以了! 升级程序放在后半段是很危险的,一旦升级过程失败设备就废了。 我们一般是放在复位处,APP放在后半段。
页:
[1]