stm32 bootloader简单练习

Stm32f103 bootloader 简单实现

测试平台信息:
单片机型号:stm32f103c8t6
开发环境: MDK5
仿真器:ST-Link

BootLoader 原理理解:
BootLoader实现:
一个单片机内部划分为多个区域,bootloader程序负责引导启动其他app程序,单片机上电工作时,首先运行bootloader程序,bootloader程序根据设定的条件,主动跳转到app1,app2…等其他应用程序处开始执行。

实现的基本思路:
Note:stm32f103c8t6,rom是64K
我们需要为BootLoader程序和APP程序分配空间,因为BootLoader程序所需要的功能比较少,所有不用分配很多空间,如下。
BootLoader 0x8000000–0x8002000 //8K的BootLoader
APP 0x8002000–0x8004000 //8K的APP空间(根据app程序的大小调整)。
执行流程:
1.建立两个工程,分别为bootloader工程、app工程;
2.1在BootLoader利用函数跳转功能跳转到APP的程序地址;
2.2采用全部擦除方式下载BootLoader程序;
2.3BootLoader程序下载RAM地址:0x8000000–0x8002000

3.1在APP程序中重新设计中断向量;
3.2采用部分擦除范式下载APP程序;
3.3APP程序下载RAM地址:0x8002000–0x8004000.

开始Demo:
Part1.
1.准备一个BootLoader工程;
2.添加跳转函数;
while (1)
{
LED_ON();
HAL_Delay(500);
LED_OFF();
HAL_Delay(500);
if(IO_IN3_STATE == 0)
{
LED_ON();
HAL_Delay(1000);
LED_OFF();
HAL_Delay(1000);
/* -1-新建跳转函数 /
void (p)(void) = (void ()(void))(
((int*)0x08002004));
/* -2-跳转到指定地址执行新的程序 */
p();
}
}
在这里插入图片描述

3.设置程序的下载地址
3.1设置下载地址
在这里插入图片描述
3.2烧录设置
在这里插入图片描述4.烧录程序。
 Part2.
1.准备一个app工程;
2. 重新设置程序栈地址和中断向量表;
/重新设置程序栈地址和中断向量表/
SCB->VTOR = 0x08002000;
//NVIC_SetVectorTable(0x8002000,0);
在这里插入图片描述
3.设置程序的下载地址
3.1设置下载地址
在这里插入图片描述3.2烧录设置,flash 选择 扇区擦除。
在这里插入图片描述4.程序烧录。

###结束。
Wednesday, September 25, 2019 16:46:26
Sigma-k
参考链接:
https://blog.csdn.net/tq384998430/article/details/81010002
Thanks a lot!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值