STM32L151C8T6 的IAP实现方案
来源:互联网 发布:editplus Java自动完成 编辑:程序博客网 时间:2024/05/21 17:00
STM32L151C8T6的Bootloader设计
思想:
FLASH分三个区:
Bootloader区: 校验备份程序,若满足条件将用备份程序替换用户程序,否者运行用户程序.
运行区:运行用户程序,程序中要求能接受用户程序到备份区,接收完后,在备份区的程序头内打上标记,然后启动Bootloader,由Bootloader完成程序替换
备份区:用户程序在此接受
4.1 空间分区
STM32L151C8T6有64KB的FLASH空间,每4KB是一个区,每个区有16个页,程序编程是按页来编程的.
程序的Vector是按512的整数倍偏移的, 空间划分如下图, 后续所示的设置都是基于这个空间划分来配置的.
程序头的含义是这个新程序正文的标签,标记了当前程序的版本号,程序总校验,程序总包数,程序的适用设备类型,等信息.
4.2 Bootloader需要设定的地方
4.2.1 设置Bootloader的ROM空间
Bootloader最好是扇区的整数倍!
4.2.2 设置JLINK的烧写空间区间
4.2.3 设置烧写文件输出
注意第六步是要选择是STM32L15x LowPower FLASH,不能选择STM32F的类型哦!!!
4.2.4 使用JLIN在线烧写Bootloader
4.2.5 要点
连接JLINK后再点LOAD按键,就可将Bootloader烧写进设定好的Bootloader区,而不会影响任何其地址空间的FLASH.
如果Bootloader空间划分不是扇区的整数倍,MDK会按Bootloader占用的扇区擦写,如Bootloader占用4.2KB,实际MDK会先擦除8KB空间
Bootloader程序最好先关闭中断,在用户程序中由用户开启
4.3 用户程序需要设定
4.3.1 设置用户运行程序的FLASH
4.3.2 设置JLINK烧写地址
4.3.3 设置输出文件
输入内容: fromelf.exe --bin -o $L@L.bin
4.3.4 烧写用户程序
点击LOAD按钮可烧写编译好的用户程序到程序运行区,而不会干预任何其他区.
4.3.5 用户程序要点
由Bootloader存在的用户程序需要在用户的main程序中添加如下信息,不加这些信息程序会死机的哦!!!
int main(void)
{
NVIC_SetVectorTable(0x08001200,0); //设置中断向量表
__enable_irq(); //允许全局中断
//以下是用户代码
……
}
- STM32L151C8T6 的IAP实现方案
- IAP一个实例---LPC2214的IAP实现方案
- STM32的IAP方案
- STM32的IAP方案
- STM32的IAP方案
- STM32的IAP方案
- STM32的IAP方案
- IAR环境下STM32+IAP方案的实现
- IAR环境下STM32+IAP方案的实现
- IAR环境下STM32+IAP方案的实现
- IAR环境下STM32+IAP方案的实现(转)
- IAR环境下STM32F103ZET6+IAP方案的实现
- 【转】STM32的IAP方案
- STM32的IAP实现
- IAR环境下STM32+IAP方案的实现(基于STM32F103ZET6的UART通讯实现)
- 现场升级方案:LPC1788采用U盘方式进行程序IAP升级功能的实现
- 现场升级方案:LPC1778采用U盘方式进行程序IAP升级功能的实现
- 现场升级方案:采用U盘方式进行程序IAP升级功能的实现
- 博客搬家了,搬到CSDN,以后在CSDN混了
- 小结 (int argc,const char* const* argv)
- xmlSchema的作用
- to_number与oracle 里面number类型易出错的问题
- oracle job使用详解及job不运行的检查方法
- STM32L151C8T6 的IAP实现方案
- cpu位数
- android ContentResolver详解
- RAISE_APPLICATION_ERROR用法
- 邮件客户端雷鸟使用
- SAFE_REEE(P)
- 定时任务:Java中Timer和TimerTask的使用
- JQuery获取元素对象大全
- oracle 软解析 硬解析