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的文件,而且软件也没有给出烧录引导程序这一选项,所以我对我的认知产生了一丝丝怀疑。
于是,我选择再搜索一下BootLoader到底是什么,百度的解释是可以把它当做一个启动引导程序,但是感觉这种解释有点抽象,然后我找到另外一篇文章是说把它当做一个系统,我们的程序就是运行在这个系统的软件,这种说法感觉有一定道理,但是感觉又不是那么对,因为平常如果我们没有BootLoader,我们也可以对普通单片机烧录程序,但是如果软件没了系统,是无法直接在电脑裸机上运行的。但是这个文章还是给了我一定的思路,所以我搜索了一下“如何使用串口给avr烧录程序”,然后我找到了这个。然后结合我目前掌握的知识和已知条件:
- 每次Arduino在上传程序时都会进行一次复位,我怀疑是为了让Arduino进入BootLoader模式
- 没有BootLoader的avr单片机不能直接在ArduinoIDE上烧录程序,在如何使用串口给avr烧录程序那篇文章里,提到了需要给avr烧录BootLoader后才可以通过串口给avr直接烧录程序
- Arduino UNO的原理图中,官方最原版使用了一块atmega16u2,而市面上常见的UNO R3都是使用的一块ch340(USB转串口芯片)来代替,说明BootLoader并没有直接让avr芯片拥有USB功能
- 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),大概步骤为:
- ArduinoIDE安装开发板:http://dan.drown.org/stm32duino/package_STM32duino_index.json
stm32f103c8t6调整好boot引脚,连接usb转ttl,然后连接电脑
随便写个程序,注意引脚名称修改,我这里使用了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 seconddigitalWrite(PC13, LOW); // turn the LED off by making the voltage LOWdelay(1000); // wait for a second}
- 选择好板子、端口,然后选择烧录模式为serial
- 点击上传即可
详细步骤请参考帖子: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来下载。不过最好再深入学习一下吧……
以上内容如有错误或遗漏,欢迎指正!
Arduino通过USB转TTL无BootLoader烧录程序的两种办法相关推荐
- DSP烧录程序的两种方式
(1)通过传统PC机上位机软件烧写 (2)通过MCU通过SPI接口给DSP烧录,其中的烧录文件以多个个.h文件方式集成在MCU工程中一起编译,上电运行后给DSP加载. 记得早年在威马后面做一个语音识别 ...
- win7 计算机名称 ip6,Win7系统提示ipv6无网络访问权限的两种原因及解决方法
Win7系统提示ipv6无网络访问权限,导致无法上网,这该如何解决呢?ipv6无网络访问权限的原因有很多种,针对此问题,下面脚本之家的教大家解决ipv6无网络访问权限的问题,大家一起来看看吧. 故障原 ...
- 通过USB转TTL串口下载stm32程序
文章目录 前言 一.硬件及其接线 二.使用步骤 1.主芯片STM32F103C8T6开发板 2.转串口模块接线 3.CH340驱动及安装方法 4.CH340驱动及安装方法 4.下载测试 5.0.91寸 ...
- 使用USB转ttl给stm32下载程序
电路连接 0准备 最小系统版的BOOT0置1,BOOT1置0 USB转TTL的5V与VCC短接 1连接 USB转TTL STM32 单片机引脚定义 3V3 3V3 TXD PA10 RXD RXD P ...
- 串口烧录(无仿真器烧录程序)
没有ST-Link或者DAP,通过USB可以将Keil中的程序烧录到开发板上 http://t.csdn.cn/FXdOQ 注意程序选Output文件夹中的.hex文件,如果没找到,可以根据图片设置之 ...
- C# 系统应用之无标题窗体移动的两种方法
在做项目界面设计中,常常为了美观需要设置窗体属性"FormBorderStyle"(窗体边框和标题栏外观)为None无标题窗口.此时隐藏标题的窗口怎样实现移动呢?我根据自己的项目从 ...
- openwrt路由器固件烧录mt7621用tftp方式实现烧录固件的两种方式
tftp软件: 链接:https://pan.baidu.com/s/1VYRUgzCkh5PEaBK0ZDJyKQ 提取码:f8ba 两种方式中tftpd32都必须处于运行模式 存疑?:目前看只有设 ...
- 微信小程序订票选座PHP后台网站MySQL数据库和无前端小程序版本两个程序
微信小程序订票选座PHP后台网站MySQL数据库和无前端小程 下载点此去 两个相同功能 差别在一个有前端微信小程序 一个没有 (1)登录功能:注册普通账号登录:也可以直接使用微信登录:登录后可以修改用 ...
- 【无标题】单例模式的两种创建方式:饿汉式和懒汉式
这里写自定义目录标题 单例模式的两种创建方式:饿汉式和懒汉式 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂 ...
最新文章
- 初识C语言---(1)
- C#用Tesseract进行OCR识别,可识别中英日韩所有语言
- 解读zookeeper的配置项
- 农发行:BI数据平台建设
- window xp系统安装php环境_Windows Server 2003及XP系统如何安装SQL Server 2000数据库?
- kafka 主动消费_Kafka核心API——Consumer消费者
- CVPR 2021 Oral | GLEAN: 基于隐式生成库的高倍率图像超分辨率
- Vue.js 入门案例
- vip会员统计表 (vip等级是灵活配置的 非写死1是金卡用户 2是什么 等)
- Fabric学习--环境搭建
- MyEclipse10破解方法
- 同步时间服务器修改同步间隔,如何更改Windows 10时间同步间隔
- SQL基础【一.DQL 数据查询语言】
- 华为智慧屏鸿蒙os的特点,华为智慧屏功能特点一览
- 黑桃怎么用html代码,index.html
- 【问题】PPS、PPSX自动放映格式打开直接进入编辑模式
- 0xffffffff是多少?
- 12.寻光集后台管理系统-库存信息(后端)
- 浏览器访问jsp页面
- Java使用spire进行word文档的替换
热门文章
- 【Python Sympy】将表达式化为关于x的多项式,求出多项式系数
- 文献综述怎么写 ,一直没头绪写不出来怎么办?
- CSS(二)文字样式
- 《Linux命令行与shell脚本编程大全》笔记一
- 函数返回值的优化技术(RVO和右值引用)
- STM32,三色灯组合任意颜色
- [转载]读史札记22:政治家的道德底线——谈李斯之死
- 基于STM32移植U8g2图形库——OLED显示(HAL库)
- 事件分发机制Android,宅家36天咸鱼翻身入职腾讯,复习指南
- 下载安装Psychtoolbox详细教程【Windows10+Matlab R2020a】