在ArduinoIDE中加入一个新的开发板: 以1.8.9版本的ArduinoIDE为例,主目录是arduino-1.8.9 ArduinoIDE中每一个开发板,在boards.txt文件中都对应一段定义,如Arduino Nano的ATmega328P:
boards.txt文件中可以找到: #################################### nano.name=Arduino Nano nano.upload.tool=avrdude nano.upload.protocol=arduino nano.bootloader.tool=avrdude nano.bootloader.unlock_bits=0x3F nano.bootloader.lock_bits=0x0F nano.build.f_cpu=16000000L nano.build.board=AVR_NANO nano.build.core=arduino nano.build.variant=eightanaloginputs ## Arduino Nano w/ATmega328P ##-------------------------- nano.menu.cpu.atmega328=ATmega328P nano.menu.cpu.atmega328.upload.maximum_size=30720 nano.menu.cpu.atmega328.upload.maximum_data_size=2048 nano.menu.cpu.atmega328.upload.speed=115200 nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex nano.menu.cpu.atmega328.build.mcu=atmega328p
从定义中可知: 熔丝位为Lfuse:FF,Hfuse:DA,Efuse:FD,Lock:3F。 时钟为16M,波特率为115200,FLASH大小为30720bytes,bootloader文件为optiboot_atmega328.hex等等。 boards.txt文件在:ArduinoIDE目录(arduino-1.8.9)\hardware\arduino\avr\boards.txt 接下为是bootloader文件,目录是:ArduinoIDE目录(arduino-1.8.9)\hardware\arduino\bootloaders\,这里不同开发板的bootloader文件在不同的目录里。
如optiboot\下就可以找到optiboot_atmega328.hex这个以328P为MCU构成的NANO板的bootloader文件,而这个文件产生,要使用Makefile文件进行编译。用记事本打开,可以找到如下一段:
atmega328: TARGET = atmega328 atmega328: MCU_TARGET = atmega328p atmega328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' atmega328: AVR_FREQ = 16000000L atmega328: LDSECTIONS =-Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe atmega328: $(PROGRAM)_atmega328.hex atmega328: $(PROGRAM)_atmega328.lst atmega328_isp: atmega328 atmega328_isp: TARGET = atmega328 atmega328_isp: MCU_TARGET = atmega328p # 512 byte boot, SPIEN atmega328_isp: HFUSE = DE # Low power xtal (16MHz) 16KCK/14CK+65ms atmega328_isp: LFUSE = FF # 2.7V brownout atmega328_isp: EFUSE = 05 atmega328_isp: isp 这里面定义了熔丝位,波特率,boot区的大小及起始地址,与boards.txt对应。
了解了以上,就可以自己为ArduinoIDE,定制一块开发板了,朋友项目中使用了内部8M的时钟,下面我们一起来做个使用内部1M时钟的。 首先,要下载一个1.0.4版本的ArduinoIDE,主要是为了做出bootloader文件,因为在1.8.9的版本内精简了文件,不能做出bootloader文件,1.0.4测试通过的。
第一步:在arduino-1.0.4\hardware\arduino\bootloaders\optiboot\目录下找到Makefile文件,没有扩展名的。用编辑器(可以用记事本)打开,适当位置加入以下这部分并保存: # Standard atmega168, only at 9,600 baud for closer clock accuracy ANDusing 1Mhz internal RC oscillator BY-jf201006 # atmega168_1MRC: TARGET = atmega168 atmega168_1MRC: MCU_TARGET = atmega168 atmega168_1MRC: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=9600' atmega168_1MRC: AVR_FREQ = 1000000L atmega168_1MRC: LDSECTIONS =-Wl,--section-start=.text=0x3e00 -Wl,--section-start=.version=0x3ffe atmega168_1MRC: $(PROGRAM)_atmega168_1MRC.hex atmega168_1MRC: $(PROGRAM)_atmega168_1MRC.lst atmega168_1MRC_isp: atmega168 atmega168_1MRC_isp: TARGET = atmega168 atmega168_1MRC_isp: MCU_TARGET = atmega168 # 2.7V brownout, SPIEN atmega168_8MRC_isp: HFUSE = DD # Int. RC Osc. 1MHz, slowly rising power-65ms atmega168_1MRC_isp: LFUSE = 62 # 512 byte (256Words) boot atmega168_1MRC_isp: EFUSE = 04 atmega168_1MRC_isp: isp
在命令窗口运行omake atmega168_1MRC命令进行编译,
运行结束后会在optiboot目录下多出两个文件:optiboot_atmega168_1MRC.hex和optiboot_atmega168_1MRC.lst,我们只要HEX文件。 记事本打开可以看到如下内容:
将optiboot_atmega168_1MRC.hex拷贝到现以使用的ArduinoIDE(arduino-1.8.9)\hardware\arduino\avr\bootloaders\optiboot\目录下。
第二步:在arduino-1.8.9\hardware\arduino\avr目录下找到boards.txt并打开(可以使用记事本)。加入如下部分并保存: ###################################################### atmega168_1MRC.name=ATmega168 Optiboot @ 9,600baud w/ 1MHz IntRC. atmega168_1MRC.upload.tool=avrdude atmega168_1MRC.upload.protocol=arduino atmega168_1MRC.upload.maximum_size=14336 atmega168_1MRC.upload.maximum_data_size=1024 atmega168_1MRC.upload.speed=9600 atmega168_1MRC.bootloader.tool=avrdude atmega168_1MRC.bootloader.low_fuses=0x62 atmega168_1MRC.bootloader.high_fuses=0xDF atmega168_1MRC.bootloader.extended_fuses=0xFC ## atmega168_1MRC.bootloader.path=optiboot atmega168_1MRC.bootloader.file=optiboot/optiboot_atmega168_1MRC.HEX atmega168_1MRC.bootloader.unlock_bits=0x3F atmega168_1MRC.bootloader.lock_bits=0x0F atmega168_1MRC.build.board=AVR_NANO atmega168_1MRC.build.mcu=atmega168 atmega168_1MRC.build.f_cpu=1000000L atmega168_1MRC.build.core=arduino atmega168_1MRC.build.variant=standard
第三步:打开ArduinoIDE查看:
已经有我们做的开发板了。
使用方法:168芯片熔丝低位设置为62,高位DF(可根据实际设置),扩展位为FC。为芯片下载bootloader文件,就是第一步做出来的optiboot_atmega168_1MRC.HEX。之后就可以在ArduinoIDE中使用了。
根据此方法可以做出自己项目中需要的开发板来。
另附上optiboot_atmega168_1MRC.hex文件的内容: :103E0000112484B714BE81FFF0D085E08093810037 :103E100082E08093C00088E18093C10086E08093B7 :103E2000C2008CE08093C4008EE0C9D0259A86E061 :103E300023EC3FEF91E0309385002093840096BB04 :103E4000B09BFECF1D9AA8958150A9F7CC24DD2404 :103E500088248394B5E0AB2EA1E19A2EF3E0BF2E27 :103E6000A2D0813461F49FD0082FAFD0023811F076 :103E7000013811F484E001C083E08DD089C0823420 :103E800011F484E103C0853419F485E0A6D080C024 :103E9000853579F488D0E82EFF2485D0082F10E0EE :103EA000102F00270E291F29000F111F8ED0680127 :103EB0006FC0863521F484E090D080E0DECF843678 :103EC00009F040C070D06FD0082F6DD080E0C816C8 :103ED00088E3D80618F4F601B7BEE895C0E0D1E053 :103EE00062D089930C17E1F7F0E0CF16F8E3DF0614 :103EF00018F0F601B7BEE89568D007B600FCFDCF14 :103F0000A601A0E0B1E02C9130E011968C911197C0 :103F100090E0982F8827822B932B1296FA010C01A0 :103F200087BEE89511244E5F5F4FF1E0A038BF07D0 :103F300051F7F601A7BEE89507B600FCFDCF97BE86 :103F4000E89526C08437B1F42ED02DD0F82E2BD092 :103F50003CD0F601EF2C8F010F5F1F4F84911BD0D7 :103F6000EA94F801C1F70894C11CD11CFA94CF0C53 :103F7000D11C0EC0853739F428D08EE10CD084E9ED :103F80000AD086E07ACF813511F488E018D01DD0B0 :103F900080E101D065CF982F8091C00085FFFCCFD4 :103FA0009093C60008958091C00087FFFCCF809158 :103FB000C00084FD01C0A8958091C6000895E0E688 :103FC000F0E098E1908380830895EDDF803219F06E :103FD00088E0F5DFFFCF84E1DECF1F93182FE3DF0A :103FE0001150E9F7F2DF1F91089580E0E8DFEE2736 :043FF000FF2709940A :023FFE000404B9 :0400000300003E00BB :00000001FF
如果觉着有用就伸出小手点个赞 谢谢观赏!! 祝坛友们周末快乐!!
|