基于“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条回答
richards
1楼-- · 2020-01-03 06:58
这个 怎么能撑下去呢?
sblpp
2楼-- · 2020-01-03 11:50
这个应该酷的!
yuangt
3楼-- · 2020-01-03 16:02
下载来试试看,呵呵
工程师030
4楼-- · 2020-01-03 21:11
 精彩回答 2  元偷偷看……
工程师030
5楼-- · 2020-01-04 03:00
其实我一直有点好奇,这两段程序既然是完全独立的,那么ram的地址为何还要重新分配呢,反正跳至用户程序区,iap的ram也不需要了,楼主可以解答一下吗?
xyz2008
6楼-- · 2020-01-04 03:39
楼主,能否吧你虚拟串口对的驱动也传上来,先谢谢楼主

一周热门 更多>