为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】

时间: 2024-10-18 16:57:52

为Atmega328P定制bootloader 添加自己的板卡到Arduino IDE的相关文章

进阶之路(基础篇) - 012 Arduino IDE 添加DHT11传感器第三方库的方法

由于Arduino本身没有DHT 11温湿度传感器的的头文件,单有第三方的库可以给我门使用.方法如下: Step 1:下载地址:https://pan.baidu.com/s/1qYfdBJ2#list/path=%2F 如果你已经下载了最新版的Arduino IDE就可以使用其自带的库管理器和版型管理器啦! 当然也可以去官网下载安装最新的Arduino IDE:https://www.arduino.cc/en/Main/Software Step 2:在Arduino IDE中安装有关有 D

如何对Site Settings页面进行定制化 添加一个setting 链接

下面在Site Settings页 >Site Administration里添加一个Ruby Setting 超链接,点击进入到rubySetting.aspx 1.在SharePoint project里建一个Empty Element,会立即在feature下面生成一个feature,默认Scope是Web 2.在Elements.xml里修改如下 <?xml version="1.0" encoding="utf-8"?><Eleme

xadmin后台页面定制和添加服务器监控组件

项目需要添加服务器监控页面,碍于xadmin不是很好自定义页面,之前写过插件,太麻烦了,还是直接改源码 原文地址:https://www.cnblogs.com/lanqie/p/8675533.html

花 1 小时,开源设计 LoRa 继电器开关

提示1:锐米所有 LoRa 产品严格遵循国标标准的 LoRaWAN 协议. 提示2:您可以免费复制,修改和商用本项目,请注明锐米原创. 提示3:如果您有其他 LoRa 需求或建议,欢迎联系锐米 [email protected] LoRa 继电器开关 LoRa 继电器开关,用于无线远程控制电气设备,通过 App 下发指令能实时控制:电器,灯光,电机,阀门等. 物联网 Arduino LoRa LoRaWAN 继电器开关 组件和材料 LoRa 扩展板 x 1 采购链接 Arduino UNO x

【基础】GNS3 给路由器添加板卡及基本操作

实验目的: 给R1添加16块板卡. 让C1和C2 正常通信. 实验步骤: 1.给R1添加板卡: 打开 点OK就可以了. 右击R1点开始,来启动R1. 然后再 双击R1会出现命令提示符. 点  会显示所有端口的接口. 2.给路由器R1配IP地址: 3.给PC配IP地址: 用C2 ping 网关确保是能够通信,再用C2ping C1也是能够通信. 4.在R1上有16个接口,若想给f1/10配ip地址,不能直接配,需要执行一条命令(no switchport),因为它的板卡是一个二层板卡(就是交换机板

PIC32MZ 通过USB在线升级 -- USB CDC bootloader

了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 最近给我的开发板PIC32MZ EC starter kit写了个USB 在线升级程序--USB CDC bootloader.有了它,我可以很方便的升级我的应用程序.我大概是一个星期前开始决定写这个USB在线升级程序的,USB 有很两种类型,USB host和USB device. 由于USB host接触不多,所以我

自己用C语言写RL78 serial bootloader

了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 之前用C实现过多款PIC单片机的bootloader, 包括8-bit的PIC16,PIC18:16-bit的PIC24, dsPIC30, dsPIC33; 和32-bit的PIC32MX,PIC32MZ,我为这些类型PIC都写过C bootloader.今天要介绍的serial bootloader 是为我的RL78

利用 jQuery UI 和 Ajax 创建可定制的 Web 界面

如今,网站比以往更具可定制性,允许用户更改其空间,根据自己的喜好对其进行个性化.个性化的主页或仪表板页面(例如 iGoogle.MyYahoo! 和 MyAOL)日渐普及,大多数 Web 应用程序内甚至也整合了类似的功能.jQuery 库简化了此类复杂 JavaScript 交互的编写,随着 jQuery UI 的引入,这项功能得到了进一步的简化,该库以易于访问的 jQuery 插件的形式提供了常用用户界面类型. 本文介绍了如何利用 Ajax 和 jQuery UI 创建具有各种定制功能的高度可

非标准USBasp下载线烧录Arduino BootLoader的参数设置

本文仅适用于BootLoader损坏且买到国产“免驱USBasp下载线”导致Arduino IDE无法识别从而不能烧写的情况.是一种略显非主流的操作方式. 因为Arduino的IDE并不支持这种免驱的USBasp线,会提示错误. 事情的全程是这样的: 1.症状 用Arduino控制舵机不慎玩脱了,插入电脑时,在“设备管理器”中没有串口提示,用Arduino IDE无法下载程序到电路板中,提示找不到COM口.而且电脑也找不到串口.估计是BootLoader损坏了,准备用USBasp下载线重新烧录.