slf123123 发表于 2021-7-10 16:55

flash擦除

升级程序保存在0x801B000-0x801EC00 flash从0x801B000擦除没有问题可以把升级程序擦除掉但一从0x8000000开始擦除就过不去了 之前在st32f103可以

slf123123 发表于 2021-7-10 16:57

用的是415CBT6        
FLASH_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:58

slf123123 发表于 2021-7-10 16:57
用的是415CBT6        
FLASH_Unlock();
          j=0;for(i=0;i

ErasePagelen值是107

fuqinyyy 发表于 2021-7-11 09:06

是不是实际地址偏移不对

slf123123 发表于 2021-7-12 15:13

fuqinyyy 发表于 2021-7-11 09:06
是不是实际地址偏移不对

我试了一下把升级的程序做为主程序跑 是可以正常擦除的但把升级程序放到0x801B000 擦除0x8000000的内容的话只能擦除掉两页 之后的操作就不执行 好像是被中断了

lidi911 发表于 2021-7-14 08:41

雅特力的flash结构和分区和ST一样不?

muyichuan2012 发表于 2021-7-14 09:07

和ST一样,要注意flash page size会根据flash容量而不同。256K及以上flash容量,page size为2K.   而对于256K以下flash容量,page size为1K.

slf123123 发表于 2021-7-14 13:21

muyichuan2012 发表于 2021-7-14 09:07
和ST一样,要注意flash page size会根据flash容量而不同。256K及以上flash容量,page size为2K.   而对于25 ...

我看到一个文档是将IAP放在非闪存起始地址的方法
当放在非 page0 的起始地址时,需要在 page0 增加一个引导程序,
请问一下这个引导程序是必须要加的吗因为我之前用st的时候是没有这个引导程序的IAP是放在非闪存起始地址   然后直接从0x8000000开始擦开始写

slf123123 发表于 2021-7-14 13:23

muyichuan2012 发表于 2021-7-14 09:07
和ST一样,要注意flash page size会根据flash容量而不同。256K及以上flash容量,page size为2K.   而对于25 ...

flash页数我应该是没搞错的用的是CBT6 128k 的flash所以擦的时候按一页0x400擦的

单片小菜 发表于 2021-7-14 14:41

这样做是可以的,没有任何问题的。

单片小菜 发表于 2021-7-14 14:50

这个可以随意的擦除的,没有任何问题的。

自己造声卡 发表于 2021-7-14 16:21

需要进行擦除之后,再进行烧录。解锁,擦除,烧录。

wsnsyy 发表于 2021-7-14 18:20

前面两页是不能擦除的吧,自动写保护的

slf123123 发表于 2021-7-17 09:10

来结一下贴我用的是AT32F415CBT6 程序的话起始地址放的是一个UCOSIII 然后IAP放在了flash的最后面几页一开始从os跳转到iap升级后一直发现flash擦除出现问题只能擦除掉几页不能全擦然后我就在flash起始页做了个引导程序做跳转发现可以了但我一直奇怪的是为什么不能从0x8000000开始擦写 我明明用ICP把flash全擦 保护什么也全关了 然后我又回去试了一下把主程序放起始的位置发现可以了!

aple0807 发表于 2021-7-19 09:20

升级程序放在后半段是很危险的,一旦升级过程失败设备就废了。 我们一般是放在复位处,APP放在后半段。
页: [1]
查看完整版本: flash擦除