钻石会员
  
主题
帖子
积分11939
阅读权限50
注册时间2012-3-2
最后登录1970-1-1
在线时间 小时
|

楼主 |
发表于 2022-1-28 19:40
|
显示全部楼层
因为电子负载使用串口连接上位机,而且我的M328P是插件版(烧bootloader方便),所以考虑将来升级固件直接使用串口,不再引出ICSP,方便使用的同时方便PCB排版。
我的最重要的需求是占用空间小,m328p的最小boot区为256words(512bytes),所以就按照这个要求去选。
考察了几个BOOTLOADER方案:optiboot, tinysafeboot, avrubd,还有两个没名字的bootloader,发现都不合适。
1. optiboot,就是arduino用的那个,基本为C语言,缺点是没有EEPROM上传下载能力,如果重新编译加入EEPROM功能,又超512字节了。
2. tinysafeboot,全汇编,有EEPROM功能,缺点是PC端只有命令行,找了一个改进版本有GUI,就没成功上传过。命令行每次都需要输很长的不规则密码,繁琐。而且波特率还很低,最高16000。
3. avrubd,国产,没有EEPROM功能,pass。
最终还是自己动手,修改optiboot,激活EEPROM上传下载功能,同时删除部分不影响使用的非功能代码,成功编译小于512字节。
经过测试,效果令人满意,适用于8MHz晶振的M328P。
上位机使用 Avrduess (Avrdude的GUI界面),编程器选择arduino,波特率选择38400。
optiboot_atmega328p_UART0_38400_8000000L_NOLED_BIGBOOT.rar
(861 Bytes, 下载次数: 10)
|
|