如何烧录 arduino 的 bootloader
展开全部 为了恢复Arduino的功能,必须得重新给ATMega328P单片机里烧写bootloader(其实Arduino就是在AVR单片机中预置了一个bootloader程序,这样再配合Arduino开发环境就是所谓的Arduino了,但Arduino这个词本身只留给官方使用)。
当然在淘宝上也能买到已经烧写好的AVR单片机,只是自己手上已经有了AVR单片机,就没必要去花那冤枉钱了。
于是马上打开万能的百度,输入关键字“Arduino bootloader”果然,一大堆乱七八糟相关的问题就出来了,经过一轮的筛选,发现许多说的也并不是很清晰,不过让我明白了个大概:一个普通的AVR单片机确实能烧写bootloader之后作为Arduino使用。
那么问题来了,如何把bootloader烧录到AVR单片机中去了?这的确是个问题,反正对于不懂AVR开发的我来说是个问题。
不过还好之前在淘宝上买了一个USBASP下载器,跟之前擦除bootloader一样,也要用到progisp软件(因为此时的ATMega328P只是一个普通的AVR单片机,用Arduino开发软件是烧写不进去的)。
既然要烧录bootloader,那么什么是bootloader呢?正如你所想,bootloader当然是一个程序,既然要烧录到单片机中去,应该是一个.HEX之类的文件。
但是,bootloader文件从哪来呢?继续百度。
。
。
找到了,在Arduino软件安装目录中的hardware\arduino中。
此文件夹下的“boards.txt”文件很重要,是很重要,其他的或许都可以在百度上找到,但因为这个文件折腾了我大半个晚上,百度上也没有明确的说明。
打开文件,找到自己对应的Arduino版本,因为我的是“Arduino Uno”,于是锁定“uno.name=Arduino Uno”区域的说明,因为看上去很乱,一定要仔细去看。
找到“uno.bootloader.low_fuses=0xff"指编程熔丝低位为FF,”uno.bootloader.high_fuses=0xde“指编程熔丝高位为DE,”uno.bootloader.extended_fuses=0x05“指扩展位为05。
这三个值非常重要,是决定你烧录bootloader成功的关键。
至于这三个值具体是什么意思,我也不是很不清楚,但AVR单片机的烧录时需要设置熔丝位,而且不能乱设置,这也是AVR跟51单片机的不同之处。
用progisp软件把这三个熔丝位的值写入到AVR单片机中,然后继续浏览”boards.txt“文件往下看,找到”uno.bootloader.path=optiboot“这就是说要烧录的bootloader文件在bootloaders\option文件夹中,“uno.bootloader.file=optiboot_atmega328.hex”文件名就是optiboot_atmega328.hex,这就是接下来需要烧录到AVR单片机中的程序。
用progisp软件调入此文件,然后直接写入到AVR单片机中就行了,一个支持Arduino的AVR就做好了。
。
。
其实这个问题本身不难,但对于没接触过AVR的人来说,还是要花许多时间的,中间也会存在许许多多各种各样的问题。
至于progisp的使用方法很简单,百度上的教程也很多,还有手上必须有一块可以烧录AVR单片机的下载器。
我当时就是忽略了那三个熔丝位的值,所以反反复复也没有成功,百度上面也没有对”boards.txt“文件做详细的解释。
没设置熔丝位程序是可以正常的烧录进去,但Arduino是不能用的,所以必须要按照官网给出的说明操作。
我当时大多数时间主要花在两个问题上,一个是.HEX文件具体位置,因为Arduino有不同的版本,所以.HEX文件也不同,还有一个就是熔丝位上。
...为何Digispark的Arduino开发板(基于ATTINY85)可以用USB下载程...
Arduino ,实际上就是一块AVR单片机,只是它有自己的bootloader,然后用专用的IDE编写、下载代码。
好处很明显:它不用你明白底层的东西,因为有强大而丰富的库在支持,并且开源,网上的库、元件应用实例可以说铺天盖地。
应用简单,比如:串口初始化只要:Serial.begin(9600);,串口输入也只要一句:Serial.print(XXX);不用你再设定一大堆的东西。
你可以投入绝大部分精力来创新,实现你的想法。
即使想批量的话,也容易:Arduino IDE编译完成后,可以生成一个hex文件,用它就可以量产。
所以,推荐使用Arduino。
用Arduino控制短信模块,最后hex发送1A怎么弄
1.下载ArduBlock.jar这个档案(附件来自极客工坊,中文版的O)。
2. 把它放到 C:\Users\Administrator\Documents\Arduino\tools\ArduBlockTool\tool下。
(Adminsitrator用户名可能会有区别,你也可从Arduino IDE-File-Preferences中找到Sketchbook location,如下图)如果没有这个目录,就建立一下。
之后重新打开Arduino IDE,打开ardublock软件打开,选你的文件,然后就芝麻开门喽。
用arduino测量电阻的的程序,最基本的,希望有图,有实物链接
1. Arduino IDE对代码进行转换,确保生成正确的C/C++代码(两种常用的编程语言)。
2. 通过编译器(avr-gcc)将上一步生成的可读代码,编译成机器能识别的指令(或称之为目标文件)。
3. 通过链接器,将上一步产生的目标文件与标准Arduino库文件(提供基础函数,如digitalWrite()或Serial.print())共同链接,生成一个Intel Hex文件,该文件中的指定内容将写入到Arduino板上的可编程内存中。
4. 将上一步产生的HEX文件上传至Arduino板:可以使用USB或串口,通过板上已有的bootloader传输到Arduino板,也可以通过其它编程器直接烧写。
转载请注明出处51数据库 » arduino HEX下载软件
莫叹流年