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

注解目录

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。)

2.3 BL实现的要点

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? )

2

关于 Bootloader

2.1 Bootloader的基本形态


直接看图7.9。


图7.9 Bootloader的基本形态

可以看到 BL就是一段存储在 ROM 中的程序,它主要实现 4 个功能:

(1) 通过某种途径获取要烧录的固件数据;

(2)将固件数据写入到 ROM的 APP区中;

(3)跳转到 APP 区运行,将烧录进去用户程序引导起来;

(4) 在此过程中,提供必要而友好的人机交互界面。

这么说可能不好理解,我们还是通过实例来进行讲解

2.2 Bootloader的两个设计实例


下面的两个实例,用于说明 BL 的实际应用形态,不涉及具体的实现细节,旨在让大家了解 BL 实际是如何运行的。

1.带Shell命令行的串口BL

基本的操作逻辑如下:

(1) 通过超级终端、SecureCRT 或 Xshell 之类的串口终端输人命令 program;

(2) BL 接收到命令后,开始等待接收固件文件数据;

(3) 串口终端通过某种文件数据传输协议(大家可以参见本书相应章节对 X/Y/Zmodem协议的介绍)将固件数据传给 BL;

(4) BL将固件数据写人到 ROM的 APP 区中;

(5) BL将 APP 区中的程序引导运行起来。

更具体的示意如图 7.10 所示

这里把操作逻辑说得很简单,实际实现起来却并不容易。我们放在后面去细究其具体实现。


图7.10 带Shell命令行的串口 BL逻辑示意

2.插 SD 卡即烧录的 BL

基本的操作逻辑如下:

(1) 将待烧录的固件拷贝到 SD 卡中;

(2) 将 SD 卡插人到卡槽中;

(3) BL 检测到 SD 卡插人,搜索卡中 BIN 文件:

(4)将 BIN 文件数据读出写人到 ROM的 APP 区中:

(5) BL将 APP 区中的程序引导运行起来。

如图 7.11 所示。

通过这两个设计实例,大家应该已经了解 BL 是什么了吧。有没有感受到 BL 是比ISP 烧录器更通用、更灵活、更友好、功能更强大的固件烧录和管理手段呢?

有人可能知道 Linux 下的 Uboot,它就是一个强大的 BL,它提供非常强大的刷机(烧录操作系统镜像)的功能以及完备而灵活的 Shell界面,如图 7.12 所示。其实我们电脑的 BIOS 也是一种广义的 BL。

那如何实现一个 BL 呢?别急,要实现 BL 是需要满足一些基本要求的。


图 7.11 插 SD卡即烧录的 BL 逻辑示意


图 7.12 Uboot Shell 界面

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS设置--查看引用库源代码

1.工具-->选项-->文本编译器-->C#-->高级-->勾选支持导航到反编译源(试验)

45 深度学习(九):transformer

文章目录 transformer原理代码的基础准备位置编码Encoder blockmulti-head attentionFeed Forward自定义encoder block Deconder blockEncoderDecodertransformer自定义loss 和 学习率mask生成函数训练翻译 transformer 这边讲一下这几年如日中天的新的seq2seq模式的transform…

云原生之使用Docker部署home-page个人导航页

云原生之使用Docker部署home-page个人导航页 一、home-page个人导航页介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载home-page镜像五、部署home-page导航页5.1 创建挂…

Origin:科研绘图与学术图表绘制从入门到精通

文章目录 一、引言二、安装和启动Origin三、创建和保存图表四、深入学习Origin绘图功能五、应用Origin进行科研绘图和学术图表绘制六、总结与建议《Origin科研绘图与学术图表绘制从入门到精通》亮点内容简介作者简介目录获取方式 一、引言 Origin是一款功能强大的数据分析和科…

TypeError: Can‘t parse ‘center‘. Sequence item with index 0 has a wrong type

报错代码 import sys sys.path.append(rD:\文档\Temp\WX-FIles\data) # sys.path.append(rD:\文档\Temp\WX-FIles\data)p11 [125, 195] p12 [200, 275] # and the corresponding two points on the second image are:p21 [120, 190] p22 [200, 280] # TODO: write your ow…

如何使用功率放大器

功率放大器是一种用于放大电流或电压的重要设备,广泛应用于音频、通信、无线电和电力等领域。正确地使用功率放大器可以确保其正常工作并获得满意的性能。下面西安安泰将介绍使用功率放大器的一般步骤和注意事项。 首先,了解功率放大器的规格和特性非常重…

CPU vs GPU:谁更适合进行图像处理?

CPU 和 GPU 到底谁更适合进行图像处理呢?相信很多人在日常生活中都会接触到图像处理,比如修图、视频编辑等。那么,让我们一起来看看,在这方面,CPU 和 GPU 到底有什么不同,哪个更胜一筹呢? 一、C…

wireshark打开tcpdump抓的包 vwr: Invalid data length runs past the end of the record

tcpdump -i any -n -s0 > t.pcap 使用此命令在Debian系统上抓包,下载到PC,用wireshark打开时报错: 后来发现写入文件时使用 -w 是没问题的,原因还不清楚。 tcpdump -i any -n -s0 -w t.pcap

物联网AI MicroPython学习之语法 bluetooth蓝牙

学物联网,来万物简单IoT物联网!! bluetooth 介绍 该模块为板上的蓝牙控制器提供了相关接口。目前支持低功耗蓝牙 (BLE)的Central(中央), Peripheral(外设), Broadcaster(广播者&…

什么是 CASB,在网络安全中的作用

数字化转型正在稳步攀升,组织现在越来越关注在线生产力系统和协作平台,各行各业的企业都采用了不同的云基础设施服务模式。云基础架构提供按需服务,可提高易用性、访问控制、内容协作和减少内部存储资源,以及许多其他好处。迁移到…

mac M2 pytorch_geometric安装

我目前的环境是mac M2,我在base环境中安装了pytorch_geometric,仅仅做测试用的,不做真正跑代码的测试 首先我的base环境的设置如下: pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.…

upload-labs关卡7(基于黑名单的空格绕过)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第七关通关思路1、看源代码2、空格绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试…