stm32 利用iap更新程序

1 篇文章 0 订阅

1、iap程序
   1)接收程序
   2)烧写到对应app地址

 


2、app程序
  1.修改程序起始地址
  2.修改中断向量表偏移量

app:软件复位函数

//在官方软件库的 core_cm3.h 文件里 直接提供了 系统复位的函数 
void SoftReset(void)
{
__set_FAULTMASK(1);      // 关闭所有中端
NVIC_SystemReset();// 复位
}

方式一:stm32 ram足够大的情况下使用ram来缓存新的程序 一般程序的bin文件大小只有几十K

第一步自定义一个协议

例:

第二步 接收到进入boot程序命令即调用SoftReset软件复位(复位后默认先启动boot程序)

第三步 在boot程序启动时回应上位机,接着上位机发送开始下载命令加数据长度,boot回应并开始接受新的APP程序缓存到ram

第四步 上位机发送结束后会发送一个结束命令加校验码,boot程序校验后返回结果,如果正确则将程序覆盖到内部FLASH指定区域。

第五步 复制到FLASH指定区域并读出校验后(如果ram不足 可以只读最后1k数据进行比对),跳转到新程序的开始地址。

注: 新的APP程序中修改向量中断表,修改APP程序的下载地址

int main(void)
 {
    SCB->VTOR = FLASH_BASE | 0x3C00;//15k´¦//程序开始的地方

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值