如何给Arduino芯片烧入bootloader

时间:2023-02-20 19:59:14

这里主要向大家介绍两种向Arduino的cpu芯片烧入bootload的方式,其实两种方式差别并不大,看完下面的内容你就知道了。

 

Reference:

  Bootload_百度百科

  http://baike.baidu.com/view/1223454.htm?fr=aladdin

  BIOS_鸟哥

  http://linux.vbird.org/linux_basic/0510osloader.php#startup_loader

  Arduino官网给块mini板烧bootloader

  http://arduino.cc/en/Hacking/MiniBootloader

 

一.什么是bootload?为何要烧?

BootLoader 百度百科:

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

想象一下我们的计算机是怎么启动的,当我们让计算机通电后,计算机的BIOS会引导计算机到系统盘的一个叫MBR的区域去读取bootloader(开机管理程序),然后计算机开始执行bootloader,bootloader的功能在于想用户提供开机选项。如果你是多操作系统的话,要是你选择开启其他的操作系统,那计算机就会到相应系统的系统盘中的MBR读取并执行其他的bootloader程序;如果你选择进入当前系统盘的系统,那么bootloader就会引导计算机加载操作系统内核到内存,之后计算机开始执行操作系统,再之后就进入了操作系统主导的世界了,开机过程也就基本结束。

        所以bootloader的功能简而言之就是,加载操作系统,但是很多单片机是没有操作系统的,不过这些单片机上的ROM里可能会存在一些我们先前烧入的程序,然后bootloader就会引导机器加载并执行之。

        多数情况下,我们是可以不用鸟bootloader的,但是假如你要自己做板就可能遇到一些里面什么都没有的芯片或者你损坏了原本的bootloader,这时你就需要自己烧一下它的bootloader了。

 

二.怎么烧?

这里有两种烧写bootloader的方式

1.  用一块arduino板给另一块烧bootloader:

直接上接线图:

  如何给Arduino芯片烧入bootloader

其接线方式就是:

Programmer                Being programmed

       Vcc           ------>        Vcc

       GND          ------>        GND

       Pin 10         ------>        pin 1 (RESET)

       Pin 11         ------>        pin 11(MOSI)

       Pin 12         ------>        pin 12(MISO)

       Pin 13         ------>        pin 13(SCK)

       接好线之后将作为Programmer的那块板连接电脑,然后打开Arduino的IDE(一般用1.0以上的版本就可以了):

(1). 打开Arduino的示例文件ArduinoISP将其上传到作为Programmer的那块板(假设你已经知道怎么上传了);

(2). 上传完毕后,选择工具 --> 程序员--> Arduino as ISP,因为用的是中文版,程序员选项就是工具栏中倒数第二个,最后点击工具栏中最后一个选项”烧录引导程序”,然后等待烧录完成就好了,如果顺利的话。

 

2. 直接用一个串口适配器来烧:

      这个方法是Aduino官网上提供的,接线就像这样:

      如何给Arduino芯片烧入bootloader

      那个串口适配器的接口就是这样:

       如何给Arduino芯片烧入bootloader 如何给Arduino芯片烧入bootloader

       连接好线路,之后的操作方法与方法一有点类似,不过这里不用这里不用上传ArduinoISP程序,直接选择好要烧录的板和芯片的类型,在工具栏里的程序员项中

       选择USBasp选项,之后点击烧录引导程序选项,等待烧录完毕。

 

3. 可能出现的问题及解决方法:

     要是出现烧录不成功的情况的话,先检查一下是不是板什么选错了,要是觉得板没错,就看看你的芯片,假如你在IDE中选择的芯片ATmega328,要是你实际使用的

芯片是ATmega328-PU,那么你可以这么办:

  1. 进入Arduino IDE的安装文件备份其中的avrdude.conf文件;
  2. 用记事本打开avrdude.conf文件;
  3. 找到其中的”0x1e 0x95 0x0F”这一行,将其替换为”0x1e 0x95 0x14”;
  4. 保存更改,重启IDE,再烧一次。 (这是原链接http://www.instructables.com/id/Bootload-an-ATmega328/?ALLSTEPS)