当前位置: 首页 > news >正文

bootloader相关部分

简单说明

程序烧录的方式主要有ICP,ISP,IAP

其中ICP就是常用的jlink等工具

ISP就是利用MCU自带的一些特殊引脚烧录,比如uart

IAP就是利用用户写的bootloader代码烧录

bootloader主要分为三层,厂家出厂的bootrom ,用户自己写的bootloader,最后就是app

Bootloader 会进行时钟设置、内存配置,中断向量表设置,内存保护单元(MPU)设置,外设配置、Flash 操作、系统复位、看门狗等功能的初始化,并最终跳转到应用程序执行。通过这种方式,Bootloader 充当了一个系统的初始化阶段,而应用程序则专注于核心功能的实现

所以app的代码可以把时钟部分注释掉,节省flash空间,还有外设初始化部分

APP和boot部分也是如此

调试:除了在程序中调试以外,可以使用jlink  command  调试

-h   帮助 查看地址

-r  复位  

-g  运行

bootloader的起始地址一般是0x8000 0000 
APP1 部分是0x8000 0000 +SIZE(boot)

APP2 部分是0x8000 0000 +SIZE(boot) + SIZE2(app1)

恢复出厂设置的程序放到APP2

在APP部分有的还需要在main函数添加中断向量表的偏移

程序步骤:

需要确认选择CAN还是串口,需要定制一套通讯协议是一段一段还是一整个包,需不需要帧头帧尾

另外可能还需要一个配套的上位机去升级。

flash擦除用到的是页擦除,写入部分半字和全字都可以,不过需要额外转换,协议一般都是单字节的,半字是两个字节

先擦除一页,接收满一页后再写入

以下红色说反了,还要修改flash大小,以下是APP修改地方

最后还需要修改iap文件的(boot)

然后就是bootloader部分

 CAN传输

不足:这样传输是一整个数据包一起发送出去的,对RAM有要求,如果RAM不够大,需要1kb为单位进行发送,需要一个专门的上位机。


http://www.mrgr.cn/news/94042.html

相关文章:

  • 通道注意力机制、空间注意力机制、混合注意力机制
  • 【Spring 事务】
  • PySide(PyQT),QGraphicsRectItem的setPos()和setRect()的坐标位置的区别
  • 【WRF-Urban】使用 LCZ 替换 WRF 运行中的 LUCC 数据
  • 【Yonghong 企业日常问题07 】 东方通TongWeb替代Tomcat的实战指南!
  • 如何使用logrotete定时切割mysql的慢日志
  • Android DUKPT - 3DES
  • shell编程——条件表达式和if判断
  • liunx磁盘挂载和jar启动命令
  • Vue3项目-大事件
  • 在资源有限中逆势突围:从抗战智谋到寒门高考的破局智慧
  • 瑞芯微RK3576(2)-调试过程中遇到的问题
  • 使用STM32CubeMX配置定时器中断实现LED每秒闪烁一次(STM32G070CBT6)
  • 制作自定义镜像
  • 【OpenGL】01-配置环境
  • react中字段响应式
  • 安装、配置和启动 ssh 服务,实现远程连接服务器
  • SVT-AV1源码分析函数 svt_av1_optimize_b
  • c++ constraints与concepts使用笔记
  • 如何用HTML5 Canvas实现电子签名功能✍️