基于“USB虚拟串口+zmodem”的STM32引导程序

2020-01-01 17:43发布

这是这段时间搞STM32做的一个引导程序。官方有一个基于USART+ymodem的引导程序,但不满足需求,所以才写了自己的引导程序。

下面是该引导程序的来历说明:
1、以前在搞at91sam9260时,做了一个USART+zmodem的引导程序,就是上电时,尝试zmodem连接,如果连接不上,就从DATAFLASH读取应用程序并运行,如果检测到PC机超级终端有zmodem发送行为,则通过超级终端的zmodem的发送功能,把程序发到引导程序,引导程序再写入到AT45DB161 DATAFLASH存储器。这样就非常方便,再也不用通过SAMBA烧录,也不要拔开关。由于9260内部只有4KRAM,所以引导程序不能超过4K,把zmodem裁减到只有接收的功能,并且去掉CRC32的校验,因为CRC32有一个校验表格很占空间,,只保留CRC16校验。优化等级调到最高,这样勉强下来,做到了4K大小。发送512K的程序,用时大概1分钟。

2、在9260应用层,我采用的是全功能的zmodem程序,有接收、发送、CRC32校验功能。同时,把USART+zmodem改成USB虚拟串口+zmodem,发现测试速度大大提升,发送512K程序,只用了几秒钟。

3、基于上述经验,移植了ST官方的USB虚拟串口,只要USB接收和发送部分,不要USART部分。同时加上LCD显示、DATAFLASH驱动、FLASH擦除和写入、蜂鸣器、按键,可以升级STM32应用程序、其他要烧录固化的资源,,存储位置可以是STM32的FLASH、Dataflash等等。


点击此处下载 ourdev_708627AYCLY6.zip(文件大小:1.06M) (原文件名:STM32BootLoader.zip)



(原文件名:烧录演示截图.JPG)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
xyz2008
1楼-- · 2020-01-04 04:25
wuxi_stl 发表于 2012-9-9 21:26
我按照楼主的思路做了一遍,移植到库3.4,IAR EWARM中。

另外,添加了binary image的项目,注意这个项目中 ...

请教你,请问你说的意思是否是,是串口下发数据包时,如果数据长度不是4的倍数,会丢掉数据包尾部的数据,不知道我理解,是否正确
Spunky
2楼-- · 2020-01-04 06:44
STM32 USB 引导下载
YWH2012
3楼-- · 2020-01-04 09:07
 精彩回答 2  元偷偷看……
qiushui_007
4楼-- · 2020-01-04 13:38
很好的参考工程
深邃人
5楼-- · 2020-01-04 16:54
研究zmodem中,谢谢楼主
wsxiaoping
6楼-- · 2020-01-04 18:03
谢谢分享。

一周热门 更多>