NXP

20170922在arduino IDE添加mega163264128 mcu支持

2019-07-12 13:32发布

很多人认为,现在是32位单片机烂大街的时代,不用再折腾8位机了,豆腐搞成肉价钱。
Anyway …
——我觉得正是时代赋予我们的GEEK精神造的就我们。 言归正传,在arduino里面添加通用avr的board支持。这已经不是什么新鲜的话题,但通过百毒到的资料都不能一把成功,于是有了这次的尝试记录分享给大家。
开始之前,先明确几个要点:
1,arduino里自带有两种bootloader(另一个是optiboot)固件及源代码和相应的makefile;目录为 *arduino-1.8.4hardwarearduinoavrootloaders
*arduino-1.8.4hardwarearduinoavrootloadersoptiboot 2,arduino中支持的board类型目录 *arduino-1.8.4hardwarearduinoavrvariants 实际上上面两个目录为avr系列在arduino IDE内相关的配置目录,当然也可以根据自己需要增加像stm32的基于arduino开发包的目录,这样让stm32在arduino中进行。如图: 这里写图片描述 该目录下的boards.txt即是这次需要修改的配置文件。打开可以看到一些板的配置信息,如图: 这里写图片描述 里面支持的board是按IDE中显示的顺序排列,如需增加新board支持,在
后面接着添加即可,这里以mega32为例进行一些关键参数的解释,需要指出的是:IDE支持的配置关键字可以参照已有的board进行增加,需要根据实际情况作相应增删来满足不同的需要,eg代码见下: atmega32.name=Custom ATmega 32 Board using AVRISP #atmega32.upload.using=avrispmkii atmega32.upload.tool=avrdude atmega32.upload.maximum_size=32256 atmega32.upload.maximum_data_size=2048 atmega32.upload.speed=115200 atmega32.bootloader.low_fuses=0xFF atmega32.bootloader.high_fuses=0xCA #atmega32.bootloader.extended_fuses=0xFF atmega32.bootloader.path=atmega atmega32.bootloader.file=atmega/ATmegaBOOT_168_anio32.hex atmega32.bootloader.unlock_bits=0x3F atmega32.bootloader.lock_bits=0x0F atmega32.build.mcu=atmega32 atmega32.build.f_cpu=11059200L atmega32.build.core=arduino atmega32.build.variant=mega32 atmega32.build.board=AVR_MEGA32_DEV 总共可以分为4段信息,且每一段都以 A.B.C=D的结构类型给出:
A:代表为整个配置段的类型名称
B:不同功能段的类型
C:具体功能段的参数名称
D:相应的参数值 比如第一段,
atmega32.name=Custom ATmega 32 Board using AVRISP “Custom ATmega 32 Board using AVRISP”为IDE里菜单里显示的可选择board类型,
如图: 这里写图片描述 第二段为通过IDE经过串口upload用户代码对应mcu配置,比如下载工具、协议、可用的flash大小、下载速率;
第三段为通过IDE为mcu写入bootloader的相关配置,如AVR高低字节熔丝、bootloader路径、文件名称;
第四段为通过IDE编译代码时,告知编译器的配置,如mcu型号、外部晶振频率、配置目录中avriants目录下对应的board类型文件名; 这里需要说明几点:
1.upload段中的几个跟flash及ram有关的空间大小设置需要根据mcu相应空间大小和bootloader大小来确定,这就是为什么官方的配置里面upload段数值上有些微差异;
2.bootloader熔丝需要参考对应的mcu DS手册内进行修改;
3.build段的mcu、f_cpu、variant等需要与bootloader里面的参数保持一致,
(关于arduino bootloader的一些相关择日再研究),avriant目录中对应的ins_arduino.h需要与硬件开发板保持一致。 另外,总共4段配置字相关的信息还有许多,如果有兴趣的朋友可以继续研究,根据需要酌情添加,这里就不再赘述了。
下面为参考mega32重新写的一个mega128的board描述,测试可以使用。 Xatmega128.name=Custom ATmega 128 Board Xatmega128.upload.using=avrispmkii Xatmega128.upload.tool=avrdude Xatmega128.upload.maximum_size=126976 #Xatmega128.upload.maximum_data_size=2048 Xatmega128.upload.speed=115200 Xatmega128.bootloader.low_fuses=0xFF Xatmega128.bootloader.high_fuses=0xCA Xatmega128.bootloader.extended_fuses=0xFF Xatmega128.bootloader.path=atmega Xatmega128.bootloader.file=atmega/ATmegaBOOT_168_mega.hex Xatmega128.bootloader.unlock_bits=0x3F Xatmega128.bootloader.lock_bits=0x0F Xatmega128.build.mcu=atmega128 Xatmega128.build.f_cpu=16000000L Xatmega128.build.core=arduino Xatmega128.build.variant=mega128 Xatmega128.build.board=AVR_MEGA32_DEV 如图:
这里写图片描述 这里写图片描述 需要说明的是,每个段里’=’后面的参数修改不需要重新关闭工程初始化操作,但修改其它的信息内容,均需要重启工程进行初始化才会生效,可能这是arduino的编译系统的特 {MOD}。后续会把关于arduino的bootloader相应的笔记整理出来再作讨论。
(全文完)