在面包板上DIY自己的Arduino:Arduino Bootloader探秘

一、什么是Bootloader?

大家都知道,Arduino的本质就是“ATmega单片机最小系统板+USB转串口芯片”。所有单片机的应用开发中,均涉及到将编译好的程序上传(烧录)到单片机的程序存储器(一种ROM)中的过程。当前主流的单片机都支持ISP(In System Programing,在系统编程),即无需将单片机芯片从电路板(系统)上取下,即可对其上传(烧录)程序,其基本原理主要是通过串行通信端口或SPI(Serial Peripheral Interface,串行外设接口)端口来将程序从电脑传输到单片机的。为了在通用的通信接口上实现这种专用目的的数据传输,需要在单片机的ROM中事先烧录一段代码,这段代码在每次加电时自动运行,主要用于检测来自电脑端的程序传输信号,如果检测到特定信号,则启动程序上传(烧录)过程,否则就转去执行常规程序。这段代码就叫做Bootloader。
总之,Bootloader本质上与单片机程序存储器里存储的常规程序并无二致,可以将其理解为一种专用功能的程序,因而Bootloader本身也是可以向上传(烧录)程序一样进行修改的。
Arduino为配合IDE实现一键上传(烧录)程序,为各型号的Arduino板定制了专用的Bootloader,IDE会根据工具-处理器工具-开发板中的设置配合特定型号Arduino板的Bootloader来进行程序上传(烧录)。如果上述菜单中的设置与目标Arduino板中的Bootloader不匹配,则会出现长时间停留在上传中……最后提示上传失败的情况。一个具体的例子可参见:Arduino IDE的安装、测试与相关设置

二、如何让Arduino变身编程器(烧录器)

由于Arduino所采用的单片机支持SPI通信协议以及通过该协议上传(烧录)程序,因而Arduino本身通过编程即可变身基于SPI协议的编程器。
操作过程非常简单,打开文件-示例-11.ArduinoISP,将其上传到Arduino板,此时的Arduino板就成为了一个编程器。使用这个编程器,通过Arduino板上的6针ICSP( in-circuit serial programming)接口(各型号Arduino板均提供的基于SPI协议的编程接口),就可以对目标Arduino板进行更新Bootloader和上传(烧录)程序的操作了。

三、用NANO更新NANO Bootloader

NANO编程器用作编程器
  1. 如图连接两个NANO;
  2. 将作为编程器的NANO(左)用USB线连接到电脑;
  3. 工具-开发板中选择目标板的型号,此处为Arduino NANO
  4. 工具-处理器中选择ATmega328P,这就是2018年1月后新官方NANO的Bootloader;
  5. 工具-端口中选择作为编程器的NANO所连接的端口(作为目标的NANO无需接USB线,由作为编程器的NANO为其供电);
  6. 工具-编程器中选择Arduino as ISP
  7. 单击工具-烧录引导程序,将Bootloader烧录至目标NANO。

如果使用UNO作为目标板或编程器,操作过程与连接方式完全同上。可参考文后参考资料。

四、将NANO用作编程器(烧录器)

利用上面的连接方式,除了向目标板烧录Bootloader外,也可以向目标板烧录用户编写的程序,这一点佐证了Bootloader与用户程序没有本质区别。具体操作过程是:

  1. 如上图连接两个NANO;
  2. 将作为编程器的NANO(左)用USB线连接到电脑;
  3. 工具-开发板中选择目标板的型号,此处为Arduino NANO
  4. 工具-处理器中选择ATmega328P,这就是2018年1月后新官方NANO的Bootloader,若没有更新,则需要选择ATmega328P (Old Bootloader),总之3、4两项要与目标板相匹配;
  5. 工具-端口中选择作为编程器的NANO所连接的端口(作为目标的NANO无需接USB线,由作为编程器的NANO为其供电);
  6. 工具-编程器中选择Arduino as ISP
  7. **使用项目-使用编程器上传菜单项启动“编译+上传”的过程,这一步须注意,不能使用工具栏中的右向箭头(上传)图标。

五、在面包板上搭建自己的Arduino

通过上述原理可知,对于一个ATmega328P的最小系统,只要烧录进相应Arduino型号的Bootloader,即可将其“变成”一个Arduino板,即能够使用Arduino IDE为之编写并上传程序。
因此,我们可以参照Arduino NANO或UNO的电路图搭建ATmega328P的最小系统,然后利用另外一块作为编程器的NANO为之烧录Bootloader,烧录完成之后,即可利用第四节介绍的方法,在Arduino IDE中向其上传我们编写的程序了。

DIYduino电路图

ATmega328P最小系统的参考电路图如上图所示。所需原件如下:

  1. 晶振 16MHz 1个
  2. 瓷片电容 22pF 2个
  3. 瓷片电容 100nF 2个
  4. 电解电容 47uF 1个
  5. 电阻 10K 1个
  6. 电阻 1M 1个
  7. 集成电路 ATmega328PU(DIP28封装) 1个

ATmega328P引脚与作为编程器的NANO或UNO端口连接的对应关系如下:

ATmega328P引脚序号 Arduino GPIO序号
1 D10
17 D11
18 D12
19 D13

需要注意的是:这个DIYduino可以通过作为编程器的NANO下载程序,但是无法像标准Arduino那样直接与电脑进行串口通信, 因为这里上传程序使用的是SPI通信方式而非串口通信方式,若要使用串口与电脑通信,仍需外接USB到串口(TTL)的转接器。

参考资料:

Arduino - ArduinoISP https://www.arduino.cc/en/tutorial/arduinoISP

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

推荐阅读更多精彩内容