这是这段时间搞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)
请教你,请问你说的意思是否是,是串口下发数据包时,如果数据长度不是4的倍数,会丢掉数据包尾部的数据,不知道我理解,是否正确
一周热门 更多>