搜索
bottom↓
回复: 15

avr通用bootloader另类使用笔记

[复制链接]

出0入0汤圆

发表于 2008-6-23 13:21:26 | 显示全部楼层 |阅读模式
前段时间在本坛上发现了shaoziyang老师的avr通用bootloader。非常感谢shao老师奉献bootloader程序,使我等菜鸟有机会进一步学习。下面是一些使用心得,写出来共享,有兴趣者可以一起探讨。

当然首先说明的是,如果你使用的OS是windows,则直接参考shao老师在软件中的readme就可以毫无障碍地使用,而且shao老师给出的上位机软件也是非常方便实用的。你无需再看本笔记。

由于之前我已经决定慢慢远离windows追随Fedora。当然这是要附出代价的。其它损失尚属其次,在Linux下不能使用shao老师的bootloader上位机软件实在是无可弥补的遗憾。怎么办呢?于是有了这篇笔记。

简单来说,方法有二。
一:
shao老师的bootloader使用XMODEM协议,理论上说只要支持XMODEM协议的软件都可以用来下载,如windows下的超级终端。多方寻找,发现Linux下有一个叫做minicom的软件有此功能。拿来试验,结果,是成功了!不过是有一些使用方面的决窍的。方便性不太好。但作为学习中的替代还是可以选择的。
用minicom当上位机要成功下载的技巧是一定要把从机程序配置为“引脚电平触发”模式,并且一定先启动minicom进入XMODEM上传文件功能,选择好下载文件进入发送状态,然后再触发下位机进入bootloader接收数据状态,这样就可以成功的下载。如果用“串口触发”模式,在输入联机码后再选择文件发送,则minicom会收到一串NAK而失败。而且在“引脚电平触发”模式下,如果先触发从机进入bootloader发出‘C’等待,这时再选择文件来发送,minicom也会收到一串NAK而失败。所以用minicom当上位机,操作顺序至关紧要。

下面是minicom作bootloader上位机的一些操作画面:
1、这是minicom的欢迎画面(命令行下输入sudo minicom)

(原文件名:minicom_welcome.png)
2、这是minicom的命令列表(CTRL+a, z)

(原文件名:minicom_command.png)
3、选择XMODEM上传功能(CTRL+a, s, j or k)

(原文件名:minicom_xmodem.png)
4、选择一个要上传的BIN文件

(原文件名:minicom_select_file.png)
5、进入发送状态等待从机回应,这是很关键的一步。这时才可以触发从机进入bootloader接收状态了。如果一切正常,应该马上会开始数据传送的。

(原文件名:minicom_wait.png)
6、成功上传了一个文件。

(原文件名:minicom_complete.png)

二、
自己编写上位机软件
由于使用minicom用上位机软件始终有不方便的地方,比如,选择文件比较麻烦 ,不能用从机“串口触发”模式等等。所以一直有自己写一个下载软件的想法,直到最近才初步完成。我叫它avrboot。

这是用avrboot作上位机的画面(从机设备是本站开源充电器第一版,从机bootloader是shao老师的avr通用bootloader程序。)

(原文件名:avrboot.png)

这是可执行文件,可以复制到/bin或者/usr/bin目录之下以方便使用。
点击此处下载 ourdev_322962.rar(文件大小:5K) (原文件名:avrboot.rar)
这是源码
点击此处下载 ourdev_322943.zip(文件大小:16K) (原文件名:avrboot.zip)

简单介绍一下,这个简单的程序只能在Linux命令行方式下工作,由于没有转换功能只可转发BIN文件。最简单使用方法是
[sudo] avrboot 文件名
1、程序要以root身份运行,才能获得串口操作权。
2、[]里的是可项,如果是以root登录,可以省去。
3、文件名不能带路径,所以要确定文件在当前目录之下。
4、程序内定使用串口一(/dev/ttyS0)。要更改只可更改源文件重新编译。

默认波特率是38400,如果你要指定波特率,可以这样
[sudo] avrboot 文件名 -b 波特率

例如指定以115200波特率下载main.bin文件,输入
[sudo] avrboot main.bin -b 115200

从机配置成“串口触发”模式(可省下单片机一条腿)。与从机的连接码是‘d’,屏幕上每出现一个‘d’表示发送了一次连接码,连续20次从机无响应程序中止。
屏幕上每出现一个‘P’表示已经完成1024B数据的发送。

另外,从机bootloader可以用shao老师的程序,这样可以支持更多的型号AVR。你也可以选择我为开源充电器第一版而改写过的bootloader程序,基于shao老师的程序为充电器的实际硬件作了更改,程序细节实现也有所不同。源文件在这里,直接把带地址定位的HEX文件烧入MCU就可。当然别忘了配置适当的熔丝位。
点击此处下载 ourdev_322944.zip(文件大小:23K) (原文件名:slave_for_ourdev_charger.zip)

好了,mowin班门弄斧,请各位多多拍砖,谢谢!

出0入0汤圆

发表于 2008-6-23 13:28:49 | 显示全部楼层
linux下控制串口只要你的应用程序运行帐号处在 /dev/ttyS0 的所有者组中就可以了,没必要 su……

出0入0汤圆

发表于 2008-6-23 21:15:36 | 显示全部楼层
不知道mowin是否愿意将Linux下程序加入到avr通用bootloader中,这样Linux下的使用者就可以使用了。

另外想问一下,在Linux的wine下能否直接运行avrubd这个文件。
头像被屏蔽

出0入0汤圆

发表于 2008-6-23 21:24:01 | 显示全部楼层
谢谢共享。COOL !

出0入0汤圆

发表于 2008-6-24 00:57:44 | 显示全部楼层
不错
明天研究研究

出0入0汤圆

 楼主| 发表于 2008-6-25 16:54:49 | 显示全部楼层
谢谢各位
回shaoziyang老师,我当然非常愿意将程序加入到avr通用bootloader之中。不过要说明的是,我很久没有上网了,之前我获得的从机程序是你的最早版本,现在我发现你的从机程序已经更新了好几代,我不知道能不能对应现在的从机程序。

出0入0汤圆

发表于 2008-7-6 21:49:07 | 显示全部楼层
其实还有一个串口工具程序可以使用, 那就是cutecom, 可是实现基于串口的命令的bootloader

使用方法附图,
第一步, 设置好串口
第二步, 将发送方式选成“no line end”, (否则会跟上一些这里并不必要的换行符)
最后, 打开设备, 安装bootloader通过串口给的提示就可以了


(原文件名:cutecom.jpg)


如果使用基于debian的发行版本, 使用这个命令就可以安装cutecom
apt-get install cutecom

出0入0汤圆

发表于 2008-7-6 22:27:07 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2008-7-11 13:05:10 | 显示全部楼层
不知道有没有朋友试用过这个程序。我自己这段时间是一直在测试,发现了一个问题,下载M64时显示成功下载完成,可是程序大多不能正确执行。检查了发现,M64的flash每页256B,要两个XMODEM包才能填满一页,如果文件长度正好分解成奇数个包,则flash有一页未编程,程序当然不能正常运行。

下面发一个新版本,已经修正了这个错误,这个版本已经测试过下载M64,M16,M8这三种MCU,其它AVR未测试,因为手头只有这三种。

这是可执行文件
点击此处下载 ourdev_344943.zip(文件大小:6K) (原文件名:avrboot_bin.zip)

这是源代码
点击此处下载 ourdev_344963.rar(文件大小:20K) (原文件名:avrboot0709_v0.02.rar)

这是用来测试的从机bootloader程序,从机设备是在本站买来的M64+VS1003B实验板。
点击此处下载 ourdev_344945.zip(文件大小:25K) (原文件名:slave_for_mp3.zip)
点击此处下载 ourdev_344946.txt(文件大小:789字节) (原文件名:slave_for_mp3.txt)

这是下载成功的画面

(原文件名:avrboot0709_v0.02.png)

这是用minicom显示MP3板送回的DEBUG信息的画面

(原文件名:M64_MP3_MINICOM_DEBUG.png)

作为测试,这里把MP3板的程序也传至这里吧!
点击此处下载 ourdev_344949.zip(文件大小:91K) (原文件名:ourdev_m64_mp3_firmware.zip)

有条件的朋友也帮忙测试一下。谢谢!

出0入0汤圆

发表于 2008-7-13 11:54:58 | 显示全部楼层
学习。。。。。。

出0入46汤圆

发表于 2008-7-15 10:05:19 | 显示全部楼层
正准备做一个bootloader,学习了!

出0入0汤圆

发表于 2009-4-9 16:10:36 | 显示全部楼层
学习了

出0入0汤圆

发表于 2013-6-19 15:51:13 | 显示全部楼层
最近在写一个从U盘中读取数据在用来更新Flash。但是每次下载bootloader里的程序,应用区的就会丢掉。下载应用区的程序时候,bootloader中的程序会掉。有高手在做这个吗?

出0入0汤圆

发表于 2013-6-23 21:21:33 来自手机 | 显示全部楼层
不错 不错

出0入0汤圆

发表于 2013-6-24 10:34:19 来自手机 | 显示全部楼层
学习一下....

出0入0汤圆

发表于 2013-9-20 22:38:39 | 显示全部楼层
看过……厉害!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 07:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表