Arduino通过USB转TTL无BootLoader烧录程序的两种办法

Arduino通过USB转TTL无BootLoader(引导程序)烧录程序的两种办法

注意

(这个实验室基于stm32duino的,avr单片机并不直接通用,不过如果你准备尝试使用串口来给avr单片机(就是Arduino官方出的几款Arduino)烧录Arduino的BootLoader,建议直接放弃因为avr单片机并不支持直接使用串口上传程序,而且Arduino的BootLoader好像目的也就是让Arduino能够直接串口烧录程序。

也就是说你不能在没有BootLoader的情况下烧录avr-Arduino的BootLoader,而当你可以用串口给avr-Arduino烧录BootLoader时就说明你已经有BootLoader了,可以不用再烧录一次了

于BootLoader的废话

因为准备参加电赛,想着如果比赛可以用Arduino或许会方便很多,所以准备研究一下Arduino的底层程序,学习一下如何把随便一块芯片都能做成Arduino来开发。不过这篇帖子和此并没有太大关系,只是属于机缘巧合做的一个小实验而已,对于已知BootLoader的原理或者想自己写BootLoader的朋友并无太大帮助。

最开始初学的时候,买了一块nano板,结果在我准备做点骚操作的时候(具体忘了做了啥了,好像是写错了个指针?),它被我搞废了,烧录不了程序。然后各种查资料,怀疑是BootLoader的问题,需要重新烧BootLoader。(事实上现在我也不知道具体是不是真的,因为拖延症导致我很久没去碰这块板子,现在不知道扔哪去了。而且当时没有记录的习惯,这个世界又多了个未解之谜)

当时我并不清除BootLoader是个什么东西,毕竟年轻的我看见hardware文件夹里那一堆文件就头(tuo)疼(yan),但是总体印象大概就是Arduino的便捷和这玩意有很大关系。然后在我脑海中Arduino不能没有BootLoader这个想法就形成了,于是这次准备把MSP430做成Arduino的时候我就想到了是不是要烧BootLoader?但是打开官方给出的energia软件,在其目录下并未发现BootLoader的文件,而且软件也没有给出烧录引导程序这一选项,所以我对我的认知产生了一丝丝怀疑。
avr

energia

于是,我选择再搜索一下BootLoader到底是什么,百度的解释是可以把它当做一个启动引导程序,但是感觉这种解释有点抽象,然后我找到另外一篇文章是说把它当做一个系统,我们的程序就是运行在这个系统的软件,这种说法感觉有一定道理,但是感觉又不是那么对,因为平常如果我们没有BootLoader,我们也可以对普通单片机烧录程序,但是如果软件没了系统,是无法直接在电脑裸机上运行的。但是这个文章还是给了我一定的思路,所以我搜索了一下“如何使用串口给avr烧录程序”,然后我找到了这个。然后结合我目前掌握的知识和已知条件:

  1. 每次Arduino在上传程序时都会进行一次复位,我怀疑是为了让Arduino进入BootLoader模式
  2. 没有BootLoader的avr单片机不能直接在ArduinoIDE上烧录程序,在如何使用串口给avr烧录程序那篇文章里,提到了需要给avr烧录BootLoader后才可以通过串口给avr直接烧录程序
  3. Arduino UNO的原理图中,官方最原版使用了一块atmega16u2,而市面上常见的UNO R3都是使用的一块ch340(USB转串口芯片)来代替,说明BootLoader并没有直接让avr芯片拥有USB功能
  4. Arduino Leonardo的原理图就没有使用ch340或是其他芯片,而是直接用USB数据口连接USB接口,而Leonardo和UNO这些的区别在于其芯片atmega32u4可以作为USB设备来识别。

所以我姑且对avr-Arduino的BootLoader进行了这样的推测性理解:Arduino的BootLoader可以当做一段启动程序,它的作用是让Arduino可以拥有与电脑直接(如Leonardo)(或间接(如UNO)),然后烧录时会把程序发送给BootLoader处理,然后BootLoader将其放到指定的ROM地址作为起始地址。在烧录结束后,芯片将从BootLoader部分跳到程序部分。而普通使用时,因为没有复位进入烧录这一行为,BootLoader会被直接运行到底然后跳到真正程序起始位。如果不烧录BootLoader,可以节省出BootLoader的内存空间,但是需要比较麻烦的接线方式(如JTAG,ISP之类)

当然以上为我的个人推理猜测,目前太忙(tuo)还没有专门系统地学习这一块知识(内容感觉太杂不确定学习路线,有点东学点西学点的样子,如果有大佬能够指导一下方向就太好了),如果有错误非常欢迎指正。

然后以下才进入正文……

通过ArduinoIDE的Serial模式烧录

因为没有找到MSP430的引导程序,而avr的引导程序又需要烧熔丝,和我的目的(研究msp430的Arduino)有比较大的差别,所以我选择了stm32来做测试。

用的是stm32f103c8t6的小蓝板(blue pill),大概步骤为:

  1. ArduinoIDE安装开发板:http://dan.drown.org/stm32duino/package_STM32duino_index.json

开发板管理

  1. stm32f103c8t6调整好boot引脚,连接usb转ttl,然后连接电脑

  2. 随便写个程序,注意引脚名称修改,我这里使用了blink例程,把引脚改为了PC13

   void setup() {
     pinMode(PC13, OUTPUT);
   }
   
   void loop() {
     digitalWrite(PC13, HIGH);   // turn the LED on (HIGH is the voltage level)
     delay(1000);                       // wait for a second
     digitalWrite(PC13, LOW);    // turn the LED off by making the voltage LOW
     delay(1000);                       // wait for a second
   }
  1. 选择好板子、端口,然后选择烧录模式为serial

Serial

  1. 点击上传即可

详细步骤请参考帖子:http://www.elecfans.com/d/1002467.html

通过二进制文件烧录

这个方法需要下载软件,软件使用时只需要一路点next即可,不懂的地方直接用翻译软件翻译一下就懂了,stm32的二进制烧录方式具体步骤可以参考这个帖子:https://www.cnblogs.com/wangguchao/p/7308657.html

而Arduino的二进制文件可以通过ArduinoIDE的项目-导出二进制文件获取,会导出到工作文件夹下。

二进制

总结

这个帖子其实就是做个思路引导,同时也是自己的学习笔记,如果需要烧录stm32的Arduino程序,在暂时不知道BootLoader原理或怎么写的情况下,可以用这种方式凑合着下载,而同理,avr可以用isp或jtag,msp430用jtag或sbw或bsl来下载。不过最好再深入学习一下吧……

以上内容如有错误或遗漏,欢迎指正!

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要使用USB-TTL烧录程序到ESP8266,您需要按照以下步骤操作: 1. 将ESP8266连接到USB-TTL适配器上,确保连接正确。 2. 打开Arduino IDE,并选择正确的板子和端口。 3. 在Arduino IDE中打开您要烧录程序。 4. 点击“上传”按钮,等待程序烧录完成。 5. 烧录完成后,您可以通过串口监视器查看ESP8266的输出信息。 请注意,烧录程序前,请确保您已经正确安装了ESP8266的驱动程序,并且选择了正确的板子和端口。如果您遇到任何问题,请参考ESP8266的官方文档或寻求技术支持。 ### 回答2: ESP8266是一款智能WIFI芯片,可以实现网络连接功能。为了将我们编写的代码烧录到ESP8266上并使其工作,我们需要使用USB-TTL接器。 首先,我们需要准备ESP8266开发板和USB-TTL接器,并将它们连接起来。在连接之前,我们需要确保ESP8266的电源关闭。然后,我们需要将USB-TTL接器的TXD引脚连接到ESP8266的GPIO0引脚,将USB-TTL接器的RXD引脚连接到ESP8266的GPIO2引脚,并将USB-TTL接器的GND引脚连接到ESP8266的GND引脚。最后,我们需要将ESP8266的电源开启。 接下来,我们需要下载ESP8266的烧录工具——ESP-Flash-Download-Tool,并将其解压缩到任意文件夹。然后,我们需要在ESP-Flash-Download-Tool中选择我们准备烧录的bin文件,并将其配置到相应设备中。在成功配置设备之后,我们需要将ESP8266设置为烧录模式,并点击“START”按钮进行烧录。在烧录完成后,我们需要将ESP8266从电脑上拔出,并重新连接至电源。 至此,ESP8266的烧录工作就完成了。我们可以使用串口调试工具进行测试,看看ESP8266是否正常工作。如果ESP8266连接正常,我们就可以开始编写我们自己的代码并将它们通过USB-TTL烧录到ESP8266上,让ESP8266实现更加强大的功能。 ### 回答3: ESP8266是一款广泛应用于物联网领域的芯片,也是很多物联网项目的常用芯片。为了让ESP8266正常运行,需要将程序烧录进去。USB-TTL是一种常见的串口适配器,可以将计算机上的USB换为串口口,以便烧录程序和调试。 ESP8266的烧录方式有多种,其中一种就是使用USB-TTL进行烧录。步骤如下: 1.准备工作 首先需要准备好ESP8266芯片和USB-TTL适配器,并将它们连接好。此外还需要使用串口工具,像PuTTY或者SecureCRT等,来进行后续烧录过程中的调试。 2.将ESP8266进入FLASH烧录模式 将ESP8266按照固定的操作模式进入FLASH烧录模式。具体而言,需要将ESP8266的GPIO0引脚连接到地线,然后将RST引脚拉高,最后按下电源键即可。(在此过程中,需要确保GPIO2引脚与3.3V电源相连)。 3.连接USB-TTL适配器 将USB-TTL适配器通过USB口连接到计算机,并将信号线依次连接到ESP8266的TX,RX,VCC和GND引脚上(同样的,需要确保CH_PD引脚与3.3V电源相连)。 4.烧录程序 打开串口工具,选择与USB-TTL适配器相对应的串口,波特率设置为115200,并打开串口。在串口工具中输入指定的烧录指令(通常是指令"AT+GMR"),然后按回车键,这时我们就可以看到ESP8266开始工作并输出一些信息。接下来,使用命令"AT+RESTORE"将芯片的配置恢复到出厂默认状态,等待芯片自动重启。然后,使用指令"AT+GMR"再次检查芯片状态,以确保芯片已经准备好接收程序。最后,使用指令"AT+CIUPDATE"进行程序烧录,此时我们需要选择需要烧录的固件文件,然后等待ESP8266芯片烧录程序的完成。 总之,ESP8266芯片的烧录方式有很多种,USB-TTL烧录法需要通过USB-TTL适配器连接ESP8266芯片,然后在计算机端使用串口工具进行烧录程序。只要我们掌握了烧录的基本步骤,就可以轻松地完成ESP8266的烧录工作,为物联网的应用提供更好的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值