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

news2024/11/24 3:33:08

注解目录

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

关于 Bootloader

2.3 BL实现的要点


首先要说,并不是任何一个单片机都可以实现 BL的,要满足几个要点。

1.芯片体系架构要支持

来看图 7.13。

我们知道单片机程序的最开头是中断向量表,包含了程序栈顶地址以及 Reset 程序人口.通过它才能把程序运行起来。很显然在从 BL 向 APP 跳转的时候,APP 程序必须有自己的中断向量表。而且单片机体系架构上要允许中断向量表的重定向。

传统 51 单片机的中断向量表只允许放到 ROM 开头,而不能有偏移量,所以传统 51 单片


图 7.13 BL的实现需要单片机支持中断向量表偏移(重定向)

机是不能支持 BL 的。有人要问“你这不是自相矛盾吗?你前面说 STC的 51 单片机是支持串口ISP 的,那它应该内置有 ISP 程序,我理解它应该和 BL 是一个道理。”没错,它内置的ISP程序就是一种 BL。STC 之所以可以实现 BL 功能,是因为宏晶半导体公司对它的硬件架构进行了改进,请看图 7.14。


图7.14 STC对传统51单片机硬件架构上的改进

可以看到,STC51 单片机多出了一块专门存放 BL的 ROM,称为 BOOTROM。网上有一位叫 shaoziyang 的网友为 AVR 单片机写了一个 BL,还配套开发了一款叫AVRUBD 的上位机,如图 7.15 (AVRUBD 是很有用的,本章后面会介绍,它可以让我们实现隔空烧录)所示,实现了 AVR 单片机的串口烧录,让很多人摆脱了对 USBISP 之类 ISP 下载器的依赖(虽然 ISP 下载器已经很方便了,但它毕竟还需要银子嘛)。

AVR 在硬件架构上与 STC51 是一个套路,如图 7.16 所示。

通过配置 AVR 的熔丝位可以控制复位入口地址以及 BOOT 区的大小和开始地址,如图 7.17 所示。

讲到这里,有人会说:“那有没有一种单片机,程序放在 ROM 的任何位置都可以运行起来,也就是中断向量表可以重定位?”当然有,这种单片机还很多,其中最典型的就是 STM32.它的程序之所以可以放之各地皆可运行,是因为在它的 NVIC 控制器中提供了中断向量表偏移量的相关配置.这个后面我们再详细说。

2.ROM 要支持 IAP

这也是需要单片机硬件支持的。很好理解,在 BL 获取到固件数据之后,需要将它写人到ROM的 APP 区中,所以说单片机需要支持 IAP 操作,所谓 IAP 就是 I Application Programming,即在应用烧录。也就是在程序运行过程中,可以对自身 ROM 进行擦除和编程操作。

大家仔细想想是不是这样?似乎支持串口 ISP 的单片机都支持 IAP 能。STC 还把这


图 7.15shaoziyang 的 AVR BL配套上位机软件 AVRUBD


图 7.16 AVR 单片机硬件架构上对 BL的支持


图 7.17AVR 单片机硬件架构上对 BL的支持

功能包装成了它的一大特色,可以用内部 ROM 来充当 EEPROM 的功能,可以在运行时记录一些掉电不丢失的参数信息。

STM32 的 ROM 擦写在配套的固件库(标准库或 HAL 库)中已经有实现,大家可以参考或直接使用。

3.APP 程序的配套修改

为了让 BL 可以顺利地将 APP 程序引导运行起来,APP 程序在开发的时候需要配合 BI做出相应的修改。最重要的就是 APP 程序的开始地址(即中断向量表的开始地址)以及对中断控制器的相应配置。

对于 51、AVR 这类单片机 APP 程序不用修改,具体原因大家应该明白。这里主要对STM32 APP 程序如何修改进行详细讲解。

我们依然是结合实例,如图 7.18 所示。


图 7.18 STM32 ROM 划分实例

假设我们所使用的 STM32小为128KB;BL程序的体积是 16KB,APP 程序紧邻BL,那么 APP 区的开始地址为0X08004000,也就是程序的中断向量表偏移地址为 0X4000。

如果我们使用 MDK 作为开发环境的话,需要修改这里,如图 7.19 所示。


图 7.19 MDK 开发环境中对程序存储器开始地址与大小进行配置

而如果我们使用的是 gcc 的话,则需要对 link.ld 链接文件进行修改,如图 7.20 所示。

然后我们还需要对 NVIC 的中断向量表相关参数进行配置,主要是中断向量表的偏移量,


图 7.20gcc 编译环境下对 link,ld 文件的修改

如下代码:

# define VECT TAB OFFSET  0x4000

OK,经过修改后的程序,我们把它放到 ROM 的 0X08004000 开始地址上,然后再让 BI跳转到这个地址,我们的程序就能运行起来了。

有人又会问:“BL 中的跳转代码怎么写?”别急,这是我们要讲的下一个要点

4.BL 中的跳转代码

跳转代码是 BL 要点中的关建,直接关系到 APP程序能否正常运行,如图 7.21 所示。


图 7.21 BL向 APP 的跳转示意


这段代码大家自行研究,如果展开讲就属于赘述了。

到这里 BL 相关的要点就介绍完了,大家应该有能力去完成一个简单的 BL了。我基于STM32 设计了一个小实验.大家有兴趣可以小试牛刀一下,如图 7.22 所示。


图 7.22 BL功能验证实验

我们将 BL 程序用Jlink 烧录到 0X08000000 位置,而把 APP 程序烧录到 0X08002000 开始位置,然后复位,如果串口打印了 hello world 或流水灯亮起来了,就说明我们的 BL 成功了

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

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

相关文章

迅软DSE答疑专业解析:内网遭受攻击的威胁到底有多大

当今数字化时代,企业数据安全已演变为企业生存和发展的至关重要因素。随着信息技术的迅猛发展,企业内网不仅是承载核心数据和信息的关键平台,也成为黑客和恶意软件攻击的主要目标。因此,确保企业数据安全和内网安全已成为企业管理…

2024上海国际智能驾驶技术展览会(自动驾驶展)

2024上海国际智能驾驶技术展览会 2024 Shanghai International Autonomous driving Expo 时间:2024年3月26-28日 地点:上海跨国采购会展中心 随着科技的飞速发展,智能驾驶已经成为了汽车行业的重要趋势。在这个时代背景下,汽车不…

element ui的日期选择器动态设定年份,并默认显示在该年份范围的日期时间

选中某个年份,让日期选择器只能选择该年份内的时间,并且默认显示该年份的时间(由于日期选择器默认显示为当前时间,所以需要跳转到选择的年份) 例:年份选择了2022年,那么日期选择也相应显示到2022年&#xf…

160. 相交链表-哈希表法O(n)时间复杂度

160. 相交链表-o(n)时间复杂度 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个…

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

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

揭密,这个微信群机器人的所有秘密在这里

技术长久不用就废了,我想把软件开发技术重新捡拾起来。 咱们“一起学英语”群已有三年时光,群里很多朋友互帮互助走到了今天。可是,即使再好玩的英语话题,也有谈腻的时候。 群里是不是应该引入一点好玩的东西? 人工智能…

【DP】背包问题全解

一.简介 DP(动态规划)背包问题是一个经典的组合优化问题,通常用来解决资源分配的问题,如货物装载、投资组合优化等。问题的核心思想是在有限的资源约束下,选择一组物品以最大化某种价值指标,通常是总价值或…

Ulimit -系统资源配额配置说明

Linux 对于每个用户,系统限制其最大进程数,为提高性能,可以根据设备资源情况, 设置个Linux用户的最大进程数,一些需要设置为无限制; ulimit 参数说明 选项 含义 例子 -H 设置硬资源限制,一旦…

【C++初阶(六)】类和对象(中)与日期类的实现

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

【C++】——运算符重载

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

第二证券:今日投资前瞻:可控核聚变进展加速 光模块产业趋势加强

昨日,两市股指全线高开,盘中窄幅轰动,尾盘三大股指全线翻红。到收盘,沪指涨0.25%报3046.53点,深成指涨0.1%报9988.83点,创业板指涨0.2%报2009.21点,北证50指数涨近1%。两市估计成交8686亿元&…

个体诊所电子处方系统设计,诊所电子处方模板,药店电子处方系统,佳易王电子处方管理系统V16.0下载

个体诊所电子处方系统设计,诊所电子处方模板,药店电子处方系统,佳易王电子处方管理系统V16.0下载 软件支持配方模板,病人病历记录查询等,软件打印处方单所用的纸张为 A5纸。软件可以下载试用,点击最下方官网…

高效攻略各类BOSS,成为真正的剑侠!

逆水寒作为一款备受瞩目的国产武侠游戏,其精美的画面和真实的剑术体验吸引了众多玩家。在这篇实用干货分享中,我们将详细介绍一些攻略各类BOSS的技巧和策略,帮助你在游戏中轻松击败强大的对手,成为真正的剑侠大师。 首先&#xff…

谁在推动国际现货白银价格?

在过去的几十个年头里,国际现货白银价格经历了显著的波动,银价从1970年的每盎司1美元,到1980年的每盎司50美元,再到2010年的每盎司30美元,惊人的涨跌幅度令不少人留下了深刻的印象,本文将为大家剖析这些波动…

猪酒店房价采集

<?php // 设置代理 $proxy_host jshk.com.cn;// 创建一个cURL资源 $ch curl_init();// 设置代理 curl_setopt($ch, CURLOPT_PROXY, $proxy_host.:.$proxy_port);// 连接URL curl_setopt($ch, CURLOPT_URL, "http://www.zujia.com/");// 发送请求并获取HTML文档…

基于安卓android微信小程序的快递取件及上门服务系统

项目介绍 本文从管理员、用户的功能要求出发&#xff0c;快递取件及上门服务中的功能模块主要是实现管理员服务端&#xff1b;首页、个人中心、用户管理、快递下单管理、预约管理、管理员管理、系统管理、订单管理&#xff0c;用户客户端&#xff1b;首页、快递下单、预约管理…

​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型

内容来源&#xff1a;xiaohuggg Distil-Whisper&#xff1a;比Whisper快6倍&#xff0c;体积小50%的语音识别模型 ​该模型是由Hugging Face团队开发&#xff0c;它在Whisper核心功能的基础上进行了优化和简化&#xff0c;体积缩小了50%。速度提高了6倍。并且在分布外评估集上…

【软考】_高级_信息系统项目管理师_考前冲刺1

目录 一、某项目预计最快12天完成&#xff0c;最慢36天完成&#xff0c;21天完成的可能性最大。公司下达的计划是18天完成&#xff0c;要使计划完成的概率达到50%&#xff0c;在计划中需要增加&#xff08; &#xff09;天应急时间。 二、&#xff08; &#xff09;是指一个操…

二、网站高性能架构设计——web前端与池化

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、高性能浏览器访问 1.减少HTTP请求 HTTP协议是无状态的应用层协议&#xff0c;也就是说每次HTTP请求都需要建立通信链路、进行数据传输&#xf…

锂价疲软,市场需求持续低迷,赣锋锂业在短期内将继续面临痛苦

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 公司介绍 在赣锋锂业(01772)(002460)网站上&#xff0c;赣锋锂业称自己是一家拥有“中国第一”和“世界最大锂金属生产商”的“锂化合物产能”公司。 根据其2022财年年度报告&#xff0c;该公司最近一个财年的收入有84%和1…