我用stm8l050j3,想要实现串口升级固件,所以需要bootloader。 我找到了一个网上的程序。还是挺全的,但是因为芯片不同,flash大小不同,我不会分配内存地址。 我的芯片是8K flash的。 1,第一个问题是IAR编译的 我编译看到的是程序占用吗? 如果是的话,3个memory是表示什么意思,bootloader的总大小是3107byte吗?那我APP从4K开始可以吧?如果从0x8000开始,那4K位置应该是多少怎么算的呢? 2,下图从哪是8K呢,好像都说是0x8000开始,但是我看图片里有虚线那是什么意思呢?我的bootloader是从0x8000开始,还是从0x8100开始? 我也没搞懂到底是0x8000还是0x00800,这个到底是左对齐还是右对齐? 我找的程序是下面的这个,但是他芯片是64K的,我的是8K
|
评分
查看全部评分
IAP + APP 不能大于你选用的芯片的最大FLASH,一般来说IAP部分至少都要2K左右,你要分配好flash的地址才行
评分
查看全部评分
#define USER_APP_START_ADD ((u32)0x1000) //用户APP起始地址,这是4K
评分
查看全部评分
2、flash从0x8000地址开始,0x8000到0x80FF段存复位和中断向量表。具体0x008000写了6位数,跟对齐没有关系,只是说6位数足够表示stm8的全部地址空间了,也可以写成8位数,但是在多也没有任何意义了。
评分
查看全部评分
所以整体分割应该是 BootLoader +app+data ;
BootLoader用于通讯、升级数据、程序跳转等
data区存储升级数据
评分
查看全部评分