振南技术干货集:深入浅出的Bootloader(1)

news2024/12/30 0:54:53

注解目录

1、烧录方式的更新迭代

1.1 古老的烧录方式

(怀旧一下,单片机高压烧录器。)

1.2 ISP 与ICP 烧录方式

(还记得当年我们玩过的 AT89S51?)

1.3 更方便的 ISP 烧录方式

1.3.1串口 ISP

(是 STC 单片机成就了我们,还是我们成就了 STC?)

1.3.2 各种 USB ISP

1)AVR

2) C8051F

3) MSP430

(在当前 STM32 一统天下的时代,上面这些单片机你还在用吗? )

2、关于 Bootloader

2.1 Bootloader 的基本形态

(Bootloader 先行,APP 在后。)

2.2 Bootloader 的两个设计实例

1)带 Shell 命行的口 BL

2)插 SD 卡即烧录的 BL

(上面这两种 BL 在实际应用中最常见,还讲了一下 Linux 的 Uboot。)

3、花百出的 BL

3.1 BL(串口传输)的现与延伸

(告诉你一个秘密: STM32F103C8T6 的后64K ROM 也能用,不信你试。)

3.2 10 米之内隔空烧录的实现

(一部安卓手机在手,空中升级调试全有。)

3.3 BL的分散烧录

(你以为 BL 只能给自己烧序? )

4、不走寻常路的BL

4.1 Bootpatcher

(反其道而行之,APP 先行,BL 在后。)

4.2 APP 反烧 BL

(你以为只能 BL 烧录 APP? )

当我面对一个有一定规模、稍显复杂的嵌入式项目时,我通常并不会直接专注于主要功能的实现,而是会做一些磨刀不误砍柴工的工作一一设计一个 Bootloader(以下简称 BL)以及构建一个 Shell框架。可能有人会觉得它们很高深,实则不难,正所谓“会者不难,难者不会”本章就针对 BL 进行详细的讲解,希望让大家可以体会到它的重要性。

1

烧录方式的更新迭代

1.1 古老的烧录方式


单片机诞生于20 世纪 80 年代,以 51 为代表开始广泛应用于工业控制、家电等很多行业中。起初对于单片机的烧录,也就是将可执行的程序写人到其内部的 ROM 中,这不是一件容易的事情,而且成本不低,因为需要依赖于专门的烧录设备。而且受到半导体技术与工艺的限制,对于 ROM 的烧写大多需要高压。这种境况一直持续到 2000 年左右(我上大学的时候还曾用过这种专门的烧录器),如图 7.1 所示。


图7.1 单片机烧录器

1.2 ISP与ICP烧录方式


随着低压电可擦写 ROM 的成熟,单片机开始集成可通过数字电平直接读写的存储介质。其最大的优势在于可实现在系统或在电路直接烧录程序,而无须像以前一样把单片机芯片从电路中拿出来,放到编程器上,这种烧录方式就是 ISP(In System Programming)或 ICP(InCircuit Programming),如图 7.2 所示。

有人问过这样一个问题:“ISP 和ICP 我都听说过,都说是可以在电路板上直接烧录程序而无须拿下芯片,那 ISP 和ICP 有什么区别?”从广义上来说,两者没有区别,平时我们把其意义混淆也毫无问题。非要创根问底的话,那可以这样来理解:ISP 要求单片机中驻留有专门的程序,用以与上位机进行通信,接收固件数据并烧录到自身的 ROM 中,很显然 ISP 的单片机是需要可运行的,即要具备基本的最小系统电路(时钟和复位);而ICP 可以理解为 MCU 就是一块可供外部读写的存储电路.它不需要预置任何程序,也不需要单片机芯片处于可运行的状态。

支持ISP或ICP 的芯片,以 AT89S51 最为经典,当时从 AT89C51 换成 S51,多少人曾因此不再依赖烧录器而大呼爽哉。这种并口下载线非常流行,如图 7.3 所示,网上还有各种 ISF小软件,可以说它降低了很多人人门单片机的门槛,让单片机变得喜闻乐见。一台电脑、一个S51 最小系统板、一条并口 ISP 下载线,齐了!


图7.2 单片机的ISP烧录


图7.3 用于 AT89S51的并口ISP下载线

1.3 更方便的ISP烧录方式


1.串口ISP

但是后来我们发现带有并口的电脑越来越少。那是在 2005 年前后,STC 单片机开始大量出现,在功能上其实与 S51 相差无几,甚至比同期的一些高端 51 单片机还要逊色。但是它凭借一个优势让人们对它爱不释手,进一步降低了单片机的学习门槛。这个优势就是一一串口 ISP,这是真正意义上的 ISP,如图 7.4 和图 7.5 所示。

再后来,9 针串口都很少见了,只有 USB。这促使一个烧录和调试神器炙手可热--USB


图7.4 STC单片机的串口ISP线路示意


图7.5 STC单片机的串口ISP原理示意

TTL 串口。这下 232 转换芯片省掉了,直接通过 USB 进行烧录。这种方式造福了无数的单片机学习者和工程师。我本人虽然已经搞了近 20 年单片机和嵌入式,USB 串口依然是不可或缺的调试工具。

多年来,在串口与单片机的交互上,我动了很多脑筋,这也是我乐于开发 Bootloader 的一个原因。我希望“USB 串口在手,一切全有!”

STC 并不是第一个使用串口 ISP 烧录程序的,但它是最成功和最深入人心的。与之同期的很多单片机,包括时至今日仍然应用最广泛的 STM32 全系列也都支持了串口 ISP,它成了种标配的、非常普遍的程序烧录手段。

2,各种 USB ISP

串口 ISP 固然方便,但是下载速度是它的硬伤,当固件体积比较大的时候,比如一些大型嵌入式项目的固件动辄几百 KB,甚至几 MB,再用串口 ISP 就未免太慢了。所以一些单片机配有专门的 USB ISP 下载器。以下列举几种比较主流的单片机及其 USB ISP 下载器

(1) AVR

AVR单片机曾经盛极一时,但经历了 2016 年的缺芯风波之后,加之 STM32 的冲击,开始变得一蹶不振,鲜有人用了。与之配套的 USB ISP 下载器非常多样,有些是官方发布的,更多的是爱好者开源项目的成果,如图 7.6 所示。


图7.6 AVR多样的 USB ISP下载工具(AVRISP MKII与 USBASP)

(2)C8051F(见图7.7)


图7.7 C8051F的 USB ISP下载器(EC6)

(3)MSP430(见图7.8)


图7.8 MSP430的 USB ISP下载器

我们会发现,一个具有良好生态的主流单片机,一定有配套的高效便捷的烧录下载工具。可见一种好的烧录方式,对单片机开发是多么重要。

不论是串口 ISP 还是各种专用的 ISP 下载器,都有一些共同的弊端。

(1) 依赖于专门的上位机或不载器硬件,不能做到统型;

(2)下载器价格仍然比较高,尤其是原厂的,这也是为什么有些单片机催生出很多第三方的下载器,比如 AVR;

(3) 下载的时候通常需要附加额外的操作,比如 STC 要重新上电、STM32 需要设置BOOT引脚电平等。

这些额外的操作都增加了烧录的复杂性。尤其是在产品形态下要去重新烧录程序,比如嵌人式升级,就要打开外壳,或将附加信号引出到壳外。这都是非常不高效,不友好的做法。

如果有一种烧录方法,对于任何一种单片机:

(1) 通信方式统一(比如一律都用串口):

(2) 提供一个友好的操作界面(比如命令行方式):

(3) 高效快速,没有附加操作,最好一键自动化烧录;

(4) 另外再增加一些嵌人式固件管理的功能(比如固件版本管理).

这一定会让我们事半功倍。

Bootloader 就能实现上述的这一切!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1206928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 列表List数据复杂操作

一、将列表数据每2个取一个数据添加到新列表中 prov_code [130100000000, 石家庄市, 130200000000, 唐山市, 130300000000, 秦皇岛市, 130400000000,邯郸市,130500000000, 邢台市, 130600000000, 保定市, 130700000000, 张家口市, 130800000000,承德市,130900000000, 沧州市, …

基于51单片机的智能窗控制系统设计

**单片机设计介绍, 基于51单片机的智能窗控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的智能窗控制系统通常是指通过单片机控制窗户的开关和调节,在实现基本的开关功能的同时&…

汽车OBD2蓝牙诊断仪解决方案程序开发

1、因TL718已经为你建立了物理层、数据链层和部分应用层的协议,所以只要OBD2标准应用层协议文本,ISO15031-5 或 SAE J1979(这两个协议是相同的内容)。 2、TL718诊断接口 1 套或用TL718芯片自建电路。3、家用PC机电脑一台。4、安…

@Accessors使用和详解

一、什么是Accessors注解? RequiredArgsConstructor是Lombok的一个注解,简化了我们对setter和getter方法操作。它可以作用在类上,也可以作用在类的单个属性上。修饰类的时候对这个类的所有属性都是有效的,修饰单个属性的时候,只…

element ui + echarts点击表格显示对应的图形

一、vue封装饼图、树状图、雷达图等组件 目录 resize.js需要utils.js utils.js import { parseTime } from ./yunhis/*** 表格时间格式化*/ export function formatDate(cellValue) {if (cellValue null || cellValue "") return "";var date new Da…

使用yolov8的一些错误

出现这个报错的时候: AutoInstall will run now for ultralytics.nn.modules.conv but this feature will be removed in the future. Recommend fixes are to train a new model using the latest ultralytics package or to run a command with an official YOLO…

新能源充电桩物联网应用之工业4G路由器

新能源充电桩是智慧城市建设中不可缺少且可持续发展的重要设施,而工业4G路由器物联网应用为其提供了更加高效、智能、实时的管理方式。充电桩通过工业4G路由器可以与充电运营商的管理中心建立稳定的连接,实现双向数据传输,为用户提供优质的充…

浪潮服务器安装操作系统

文章目录 一、准备工作1.1 制作启动 U 盘 一、准备工作 一开始认为将镜像文件导入U盘即可,但实操中并不行,得首先将U盘制作成启动盘才行。   首先需要确定安装的版本,我这里要安装的是 CentOS 7.9 版本,镜像文件为 CentOS-7-x86…

JSP教务管理系统eclipse定制开发mysql数据库BS模式java编程servlet

一、源码特点 java 教务管理系统是一套完善的web设计系统 系统采用serlvetdaobean 模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数…

BUUCTF 爱因斯坦 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 下载附件,解压得到一张.jpg图片。 密文: 解题思路: 1、因为题目没有什么提示,我们就一一尝试。将图片放到StegSolve中,在查看图片的File Format时&#x…

盘点60个Python网站项目Python爱好者不容错过

盘点60个Python网站项目Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1mY8pNUpZEV0Q-5-UvJTtBA?pwd8888 提取码:8888 项目名称 (No longermainta…

【史上最全】涵盖所有「存图方式」与「最短路算法」

题目描述 这是 LeetCode 上的 「1334. 阈值距离内邻居最少的城市」 ,难度为 「中等」。 Tag : 「最短路」、「图」 有 个城市,按从 到 编号。 给你一个边数组 edges,其中 代表 和 两个城市之间的双向加权边,距离阈值是一个整…

优化千万级数据表的实用指南

文章目录 优化千万级数据表的一次实践一、查询耗时太长二、优化解决方案三、优化后查询速度 优化千万级数据表的一次实践 一、查询耗时太长 随着数据量的增长,数据库性能往往成为关注的焦点。特别是在处理千万级数据表时,查询性能往往成为一个挑战。在这…

服务器数据恢复—服务器发生故障导致数据丢失如何恢复服务器数据?

服务器常见故障: 硬件故障:磁盘、板卡、电源故障等。 软件故障:操作系统崩溃、程序运行错误等。 入侵破坏:加密、删除服务数据等。 不可控力:浸水、火烧、倒塌等。 误操作:格式化、删除、覆盖等。 如何减少…

Cesium和Three.js的初步认识

一、Threejs和Cesium的对比 相同点: 都是基于WebGL技术开发的Javascript库,用于在浏览器中创建和显示动画3D计算机图形。 不同点: Threejs:受众面比较广,是封装了webgl的一些底层用法,让初学者更容易上…

[linux网络实验] 多网卡绑定

聚合链路技术 什么是bonding 提供了一种将多个网络接口设备绑定到一个网络接口的方法。这可用于网络负载平衡和网络冗余; 实现将两个网卡虚拟成一个网卡。这种聚合设备看起来就像一个以太网接口设备。通俗地说,这意味着两个网卡拥有相同的 IP 地址&am…

代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和

代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和 文章链接:最长公共子序列、不相交的线、最大子数组和 视频链接:最长公共子序列、不相交的线、最大子数组和 1. LeetCode 1143. 最长公共子序列 1…

WMS系统出库管理:功能、流程与优势

一、WMS系统出库管理概述 WMS系统是一种用于仓库管理的信息系统,它涵盖了从货物入库、在库管理到出库的全过程。在WMS系统中,出库管理是非常重要的一环,它涉及到的功能包括订单处理、拣货、打包、发货等。通过WMS系统的出库管理,…

世界互联网大会|美创科技新一代 数据安全管理平台,携五大新特性发布亮相

11月7日,2023年世界互联网大会“互联网之光”博览会在浙江乌镇开幕。今年是博览会办展第十年,重点突出国际性、创新性、引领性。在新产品新技术发布活动中,美创科技全新升级的新一代 数据安全管理平台(简称:DSM Cloud&…

SaaS 电商设计 (四) 如何做大促压测

一.背景&目标 1.1 常见的压测场景 电商大促:一众各大厂的促销活动场景,如:淘宝率先推出的天猫双11,而后京东拉出的京东 618 .还是后续陆陆续续的一些年货节, 3.8 女神节等等.都属于一些常规的电商大促 票务抢购:常见的如承载咱们 80,90 青春回忆的 Jay 的演唱会,还有普罗…