flash分三个区:
bootloader区: 校验备份程序,若满足条件将用备份程序替换用户程序,否者运行用户程序.
运行区:运行用户程序,程序中要求能接受用户程序到备份区,接收完后,在备份区的程序头内打上标记,然后启动bootloader,由bootloader完成程序替换
备份区:用户程序在此接受
stm32l151c8t6有64kb的flash空间,每4kb是一个区,每个区有16个页,程序编程是按页来编程的.
程序的vector是按512的整数倍偏移的, 空间划分如下图, 后续所示的设置都是基于这个空间划分来配置的.
程序头的含义是这个新程序正文的标签,标记了当前程序的版本号,程序总校验,程序总包数,程序的适用设备类型,等信息.
bootloader最好是扇区的整数倍!
注意第六步是要选择是stm32l15x lowpower flash,不能选择stm32f的类型哦!!!
连接jlink后再点load按键,就可将bootloader烧写进设定好的bootloader区,而不会影响任何其地址空间的flash.
如果bootloader空间划分不是扇区的整数倍,mdk会按bootloader占用的扇区擦写,如bootloader占用4.2kb,实际mdk会先擦除8kb空间
bootloader程序最好先关闭中断,在用户程序中由用户开启
输入内容: fromelf.exe –bin -o $l@l.bin
点击load按钮可烧写编译好的用户程序到程序运行区,而不会干预任何其他区.
由bootloader存在的用户程序需要在用户的main程序中添加如下信息,不加这些信息程序会死机的哦!!!
int main(void)
{
nvic_setvectortable(0x08001200,0); //设置中断向量表
__enable_irq(); //允许全局中断
//以下是用户代码
……
}
『本文转载自网络,皇冠最新app版本的版权归原作者所有,如有侵权请联系删除』