本人接触keil和stm32时间不长,目前使用一块F401的芯片,flash大小是256K。
目前因为搞升级功能,写了个引导程序。 我开始设定是这样的,引导程序起始地址是0x08000000,size是默认的0x40000,也就是256K。 应用程序起始地址定为0x08003000,长度也是默认的0x40000.
引导程序编译后的大小不足1k。
开始我怎么都无法跳转应用程序成功,后来发现我用keil下载程序之后,发现0x08000000到0x08003fff,也就是16K的flash空间全部擦除了,从0x4000开始数据不是0xFF。后来我将应用程序的起始地址调整为0x4000,一切都正常了。
我的疑问是,这个stm32的flash擦除为什么直接擦除了16K?我看资料说的好像是一块2KB大小。 还是说有其他什么门道? |