為Atmega328P定制bootloader 添加自己的板卡到Arduino IDE


當參照Arduino官方的電路設計自己做板卡的時候,Arduino官方提供的bootloader可能無法滿足需求,要定制自己的bootloader,下面就是具體步驟

1. 生成自己的bootloader: [這里使用的是optiboot, in arduino-1.0.5-r2, by aka WestfW]

在 arduino-1.0.5-r2\hardware\arduino\bootloaders\optiboot 目錄的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

緊隨其后添加如下內容:

# Atmega328p target 16Mhz for DIY Board with baud rate 14400
atmega328DIY: TARGET = atmega328p_DIY
atmega328DIY: MCU_TARGET = atmega328p
atmega328DIY: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=14400'
atmega328DIY: AVR_FREQ = 16000000L
atmega328DIY: LDSECTIONS  = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe
atmega328DIY: $(PROGRAM)_atmega328DIY.hex
atmega328DIY: $(PROGRAM)_atmega328DIY.lst

atmega328DIY_isp: atmega328
atmega328DIY_isp: TARGET = atmega328p_DIY
atmega328DIY_isp: MCU_TARGET = atmega328p
# 512 byte boot, SPIEN
atmega328DIY_isp: HFUSE = DE
# Low power xtal (16MHz) 16KCK/14CK+65ms
atmega328DIY_isp: LFUSE = FF
# 2.7V brownout
atmega328DIY_isp: EFUSE = 05
atmega328DIY_isp: isp

在目錄arduino-1.0.5-r2\hardware\arduino\bootloaders\optiboot\中,執行命令:

omake atmega328DIY

這樣,就在optiboot目錄中生成文件:optiboot_atmega328DIY.hex,optiboot_atmega328DIY.lst, hex 文件即為atmega328p所需要的bootloader。

 

在  中的boards.txt找到

##############################################################

uno.name=Arduino Uno

uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.speed=115200

uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F

uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
uno.build.variant=standard

##############################################################

緊隨其后,添加如下內容:

##############################################################

DIYBoard.name=Arduino DIYBoard

DIYBoard.upload.protocol=arduino
DIYBoard.upload.maximum_size=32256
DIYBoard.upload.speed=115200

DIYBoard.bootloader.low_fuses=0xff
DIYBoard.bootloader.high_fuses=0xde
DIYBoard.bootloader.extended_fuses=0x05
DIYBoard.bootloader.path=optiboot
DIYBoard.bootloader.file=optiboot_atmega328DIY.hex
DIYBoard.bootloader.unlock_bits=0x3F
DIYBoard.bootloader.lock_bits=0x0F

DIYBoard.build.mcu=atmega328p
DIYBoard.build.f_cpu=16000000L
DIYBoard.build.core=arduino
DIYBoard.build.variant=standard

##############################################################

重啟IDE后,就可以看到相應的板卡了

 

最后,就可以在IDE中選擇自己的板卡及其相應的串口號,使用ISP下載bootloader到Atmega328p中。

 

完成。

 

主要參考資料:http://www.geek-workshop.com/thread-1535-1-1.html 【作者:zcbzjx】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM