STM32的Bootloader

我们给STM32单片机下载程序通常会使用ST-LINK或者J-LINK等使用SWD接口的下载/调试器,可是我们现在要跟他们说再见辣——

本文目录 [隐藏]

事前准备

Bootloader

STM32的Bootloader

AN2606

关于103C8T6…

后记

事前准备

下载STM32CubeProgrammer

下载这个PDF

下载DFUSE软件,因为它包含了DFU驱动

Bootloader

提到bootloader,你可能会想到计算机中的引导程序,它是计算机开机完成自检后装载操作系统或者其他系统软件的计算机程序。

引导在英文中为Boot,是Bootstrap的缩写,源自于短语Pull oneself up by one's Bootstraps.,即靠自己振作起来。如果大部分软件需要通过其他已经运行的程序加载到计算机中,则必须存在一个将初始软件加载到计算机中的机制——也就是 Bootloader

是不是有点抽象?那么我们来举个栗子:

你的电脑,装了windows系统,而我们运行的所有软件比如QQ,Steam,浏览器,Photoshop等,必须通过Windows这个大软件来加载到计算机中,那么Windows如何加载到计算机中呢?——答案当然是Bootloader咯

STM32的Bootloader

我们不多说PC和手机的Bootloader啦,我们主要讲STM32,如果你想了解更多,请上Wiki: 引导程序

我们说单片机也是一种微型计算机。我们为他编写代码,并且烧录进他的非易失性存储介质(如Flash),然后就可以让他运行我们期望的任务,实现相应的功能。

我们可以这样定义一下,方便后续讲解:

我们编写的代码——> App (应用)

IAP——> In application Programming (在应用编程,就是在单片机运行的过程中对代码存储介质进行重新编程)

我们注意到,刚刚买回来的STM32像个脑袋进水的傻子一样——什么都不会做,这是因为我们没有给他烧录程序…等等,你不是说有bootloader吗?这个引导程序至少能做点什么吧?

他确实能"做点什么",它不能让你的单片机变得聪明(帮你写代码)起来,但是它可以帮你让单片机变得聪明~(帮你把你写好的代码编译出来的二进制文件烧录进去)

AN2606

看到这个奇怪的字符串序列,你是不是以为是什么神秘车牌?

是的是的,它是ST的应用手册(Application Note即缩写为AN)的编号, 请在这里查看

众所周知,读官方手册是开发者必备的技能——那么我们找到General Bootloader description章节,开始慢慢啃天书…

在开头的Intro中:

The bootloader is stored in the internal boot ROM memory (system memory) of STM32 devices. It is programmed by ST during production.

我们得知Bootloader是位于STM32单片机的内部只读存储器内的,也就是System Memory,而且这个Bootloader程序是单片机生产时就烧录好的。咱们接着读

It’s main task is to download the application program to the internal Flash memory through one of the available serial peripherals (USART, CAN, USB,I2C, SPI, etc.).

这个bootloader的主要任务是通过可用的串行接口(如I2C,SPI,USART,USB等)对单片机实行IAP(在应用编程)

然后再往后看看,能找到支持使用Bootloader进行IAP的产品型号表:

可以看到,支持的还是非常全面的~

那么我们就可以开始骚操作了。我们在这里使用STM32F103C8T6和STM32F072CBT6两款单片机对Bootloader的功能进行验证。

首先对应型号找到Menu:

在这段开头有一句话:

The STM32F071xx/072xx bootloader is activated by applying pattern2 (described in Table 2: Bootloader activation patterns).

如果想要进入Bootloader模式,我们需要使用 Pattern 2 (启动序列2),根据他的链接跳转到Pattern表格,如下:

意思就是我们需要在单片机上电的时候把BOOT0和BOOT1引脚接到对应的电平,这样单片机启动时就会进入ROM中Bootloader。

然后回到072的Bootloader描述,下面有一个大 表 哥(格):

这个表格列举了所有支持的烧录方式,可以看到F072的支持是比较全面的…包含了USART1/2,I2C,USB_DFU,表格中还详细列举了如果使用这些接口进行编程时,对单片机片上外设的具体需求

我们在这里使用USB-DFU(USB-Device Firmware Update)啦,因为它只需要一个USB接口就可以跟ST-LINK分手,属于最简单的方式了!接下来实践一下试试~

STM32的BOOT0引脚只有一个,而BOOT1引脚一般默认为PB2引脚

在这里Pattern 2是2个引脚都接高电平,不过请注意给2个引脚串接一个100k电阻,以防止过流/倒灌电流,给单片机造成损坏。我的测试板是这样接的,通过一个2位拨码开关切换启动模式,实测是没问题的…(不要问我为什么接地不串接100k电阻orz)

拨动开关,将2个引脚接高电平(3.3V),然后接上我们的USB-C,(注意设计电路时需要在USB的2根数据线上串联22欧姆的电阻,以防止过高的通信速率在信号线上产生振铃和串扰,破坏数据传输的稳定性):

插上电脑后,打开电脑的设备管理器,出现了STM32 BOOTLOADER设备,说明我们的电脑已经识别到了单片机的BOOTLOADER~(如果没有识别到,试试安装DFU驱动?)

然后打开我们之前安装好的 STM32CubeProgrammer

是这个界面的鸭子,然后我们在右侧选择USB,如果识别成功就会显示有一个USBx,这时候点Connect,就可以连接上单片机了~

打开之后可以看到一大串0x080$%^&*什么的,不用管啦反正也看不懂(

下一步,当然是下崽啦

点击download旁边的小箭头,可以看到还有别的选项,我们这里只需要点击下崽,然后就可以把程序烧录进单片机,和ST-LINK和J-LINK彻底说掰掰~

此时,把USB线缆拔下来,将BOOT0和BOOT1拨回接地的状态,这样单片机下次上电的时候就会读取内部FLASH中的程序,而不是启动Bootloader啦~

完成操作后接上电,发现单片机正常运行~

关于103C8T6…

好吧,其实我有点懒得写了,学会了这一个应该别的也很简单啦!

103c8t6呢,他的Bootloader只支持USART1,所以我们用不了USB-DFU啦…

我们可以用USB-TTL模块或者IC,比如CH340来实现C8T6的IAP~

具体的过程就不多阐述啦,需要注意的是C8T6进入Bootloader的启动模式和前文的F072不一样,C8T6是Pattern 1,也就是BOOT0-1,BOOT1=0,在STM32CubeProgrammer中选择UART,除此之外没啥区别.

转载STM32的Bootloader-跟各种LINK分手吧~ - Emoe-Studio

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容