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

【GD32】ROM Bootloader、自定义Bootloader区别

Bootloader是应用程序跑起来之前,用于初始化的一段程序,它分为两种,ROM Bootloader、自定义Bootloader。GD32芯片出厂时预烧录在ROM中的Bootloader(以下简称ROM Bootloader)和自己编写的Bootloader(以下简称自定义Bootloader)在角色、目的、能力和实现方式上有着根本性的区别。

你可以将它们理解为:

  • ROM Bootloader:芯片厂商提供的、永久的、功能单一的 “安全救生艇”。它被固化在硬件里,无法被修改或擦除,用于最基础的恢复和编程。
  • 自定义Bootloader:软件工程师开发的、灵活的、功能强大的 “汽车4S店”。它存储在用户Flash中,可以实现复杂的应用逻辑(如网络更新、故障恢复、A/B分区),但本身也可能被损坏。

下面是它们的详细区别:

核心区别对比表

特性芯片ROM Bootloader (内置ISP)用户自定义Bootloader (在Flash中)
物理存储只读存储器(ROM)用户Flash的起始部分 (例如 0x0800 0000)
可修改性不可修改、不可擦除可被修改、更新、甚至擦除
调用方式通过BOOT引脚电平在复位时强制进入通常由软件逻辑标志位决定跳转
主要目的工厂编程、烧录器替代、恢复变砖产品发布后的现场固件升级(FOTA/OA)
功能功能固定单一 (通常是串口/USB DFU)功能无限可能 (以太网、Wi-Fi、蓝牙、CAN、USB等)
内存占用不占用用户Flash空间占用一部分用户Flash空间 (通常几十KB)
安全性无或基础校验可加入高级安全措施 (加密、签名、CRC校验)
易用性手动操作BOOT引脚,配合PC软件全自动,用户无感或通过App触发
****“救命”的“优化”的

详细解释

1. ROM Bootloader (内置Bootloader)
  • 本质:它是芯片硅片的一部分,在芯片制造时就被固化在硬件里。它不是存储在Flash中的,因此你无法通过任何方式修改或删除它。它永远在那里。
  • 目的
    • 最初编程:在芯片贴到PCB板上之前,厂商或客户可以用它通过串口给空白芯片下载第一个程序。
    • 恢复“变砖”:如果用户的自定义Bootloader或应用程序编写有bug,导致程序无法运行(即“变砖”),你可以通过操作BOOT引脚强制进入ROM Bootloader,从而重新烧写一个正确的程序。它是最后的救命稻草。
  • 功能:通常只支持非常基础的通信接口,如:
    • USART(串口):这是最普遍的方式。
    • USB DFU(部分型号支持)。
    • 功能单一:主要是接收数据并写入主Flash。
  • 使用场景:需要手动干预。工程师必须用跳帽改变BOOT引脚电平,然后复位芯片,再打开电脑上的ISP下载工具(如GD32 MCU ISP Programmer)进行操作。普通最终用户根本无法使用这个功能。
2. 自定义Bootloader (用户Bootloader)
  • 本质:它是你自己编写或使用第三方库开发的一段程序存储在主Flash的开头部分(例如从 0x0800 0000 开始)。它和你的应用程序(App)一样,是可以被修改、更新和擦除的。
  • 目的
    • 现场固件升级(FOTA - Firmware Over-The-Air):这是最主要的目的。产品发布到现场后,可以通过各种网络方式(Wi-Fi、4G、以太网)远程接收新固件并更新自身,无需召回产品。
    • 多应用程序管理:实现A/B分区(双固件备份),保证更新失败后能回滚到旧版本。
    • 安全启动:在跳转到应用程序前,对其进行密码签名验证、CRC校验等,确保固件完整且来自可信源。
  • 功能取决于你的代码能力和硬件资源,可以实现任何复杂的功能:
    • 支持多种通信协议:以太网、Wi-Fi、蓝牙、CAN总线、USB、SD卡等。
    • 高级功能:固件解密、数字签名验证、断点续传、更新状态上报等。
  • 使用场景全自动或用户友好。例如:
    • 设备屏幕上出现“发现新版本,是否更新?”的提示,用户点击“确定”即可。
    • 设备在半夜自动从服务器检测并下载更新,完成后自动重启生效。

工作流程对比

ROM Bootloader 工作流程:

操作BOOT引脚
BOOT0=1, BOOT1=0
硬件复位
CPU自动运行ROM Bootloader
通过串口等待PC指令
接收数据并烧写至用户Flash
完成后需手动设置BOOT0=0
复位后运行新程序

自定义Bootloader 工作流程:

失败
成功
上电/复位
CPU运行自定义Bootloader
检查升级标志?
跳转到应用程序APP
通过WiFi/以太网等
从服务器下载新固件
校验固件
签名, CRC等
报告错误, 尝试回滚
将新固件写入
应用程序分区Flash
验证写入结果
设置标志, 复位

总结

ROM Bootloader自定义Bootloader
角色芯片自带的修复工具你开发的产品功能
存储硬件ROM用户Flash
特点永久、安全、功能弱灵活、强大、有风险
关系用于更新和恢复自定义Bootloader和App依赖于ROM Bootloader作为最后的备份

在开发中,典型的做法是:

  1. 首先使用 ROM Bootloader 通过串口将你的 自定义Bootloader 程序烧录到芯片中。
  2. 然后,你的 自定义Bootloader 再通过更高级的接口(如网络)去更新 应用程序(App)
  3. 如果 自定义Bootloader 本身需要升级,可能需要设计一个特殊的机制(例如由App来更新Bootloader),或者 fallback 到 ROM Bootloader 来进行恢复。

文章转载自:

http://KM1NLnWF.dpfLt.cn
http://Iaj291O3.dpfLt.cn
http://gFB3uYDH.dpfLt.cn
http://6YnhfdXS.dpfLt.cn
http://bH8RHg1t.dpfLt.cn
http://k1k1DdoC.dpfLt.cn
http://H3f5mY0Z.dpfLt.cn
http://GwU6P8j8.dpfLt.cn
http://Jc4bv5xM.dpfLt.cn
http://uNqZwWCJ.dpfLt.cn
http://V43Qbf5L.dpfLt.cn
http://mNoXXJcw.dpfLt.cn
http://VzyYsC4P.dpfLt.cn
http://1mDkxaGM.dpfLt.cn
http://uXtzlRHj.dpfLt.cn
http://QOWzDwv4.dpfLt.cn
http://wi3DMoSk.dpfLt.cn
http://uVZJV4y7.dpfLt.cn
http://hfGK5TRl.dpfLt.cn
http://HS00xsP2.dpfLt.cn
http://HK1zHTsb.dpfLt.cn
http://Pk2CofSz.dpfLt.cn
http://fTbVftXy.dpfLt.cn
http://dLH7YNVl.dpfLt.cn
http://ujDQxHtg.dpfLt.cn
http://65gqxFPR.dpfLt.cn
http://znO5mAqW.dpfLt.cn
http://r977M2Wp.dpfLt.cn
http://IkZFDZ75.dpfLt.cn
http://72wJg8p6.dpfLt.cn
http://www.dtcms.com/a/375209.html

相关文章:

  • 业务用例和系统用例
  • Google AI Mode 颠覆传统搜索方式,它是有很大可能的
  • MTC出席SAP大消费峰会:行业深度×全球广度×AI创新,助力韧性增长
  • 彩笔运维勇闯机器学习--决策树
  • 成都金牛区哪里租好办公室?国际数字影像产业园享税收优惠
  • vue3 实现将页面生成 pdf 导出(html2Canvas + jspdf)
  • golang 面试常考题
  • 单例模式(C++)
  • All in AI之二:数学体系的建立
  • 【Python】S1 基础篇 P5 字典模块指南
  • MySQL底层架构设计原理详细介绍
  • 《ServiceMesh落地避坑指南:从智慧园区故障看Envoy配置治理》
  • 【ARMv7-M】复位向量与启动过程
  • SQL面试题及详细答案150道(136-150) --- 性能优化与数据库设计篇
  • CMake Qt程序打包与添加图标详细教程
  • 【MySQL】mysql-connector-cpp使用
  • Oracle RAC认证矩阵:规避风险的关键指南
  • CTF-Web手的百宝箱
  • Django高效查询:values_list实战详解
  • Redis核心数据结构
  • 海外代理IP平台Top3评测:LoongProxy、神龙动态IP、IPIPGO哪家更适合你?
  • 开发避坑指南(43):idea2025.1.3版本启动springboot服务输入jvm参数解决办法
  • Vue3入门到实战,最新版vue3+TypeScript前端开发教程,笔记03
  • 四元数 (Quaternion)与李群SE(3)知识点(1)
  • 【Java】NIO 简单介绍
  • Qt从小白到进阶:完整学习路线与资源指南(补充)
  • 结合大数据知识体系对仓库建模方法总结
  • AI 辅助文档生成:从接口注释到自动化 API 文档上线
  • Day 18: 多模态大模型专项 - 理论深度与面试精通之路
  • Flink Checkpoint失败问题分析与解决方案