请赐教:C8051F340单片机,如何实现通过USB更新程序

时间:2022-09-17 19:48:18
本人使用C8051f340单片机,不知道如何通过USB更新程序,请各位做过USB更新程序的哥哥姐姐赐教!

13 个解决方案

#1


和WINCE的BOOTLOADER一个原理。

#2


通过USB更新程序??
仿真器不是USB的嘛 通过USB下载程序 就是USB更新程序啊

你可以做成那种,自己写个程序,通过USB下载你的程序的可执行文件,通过串口操作,也挺好的,ARM的bootloader就是这样做的,你可以参考

#3


恩,你说对了一半,我是想通过USB接口(不是串口),通过PC软件把程序烧录到单片机FLASH中,没有外部中断,只有一个USB接口,估计要写个USB更新程序放在code区的某个位置,在单片机正常跑的情况下,接收到要更新程序的命令,然后跳到这个区域,执行更新程序的代码。


说是这样说,我感觉无从下手!再请赐教!

#4


这个不用你自己写吧,C8051f340的仿真器有USB的吧,只要把把程序烧写进去就可以吧

#5


USB升级程序?不太了解!我们公司自己做了一个IAP程序,可以在程序运行状态下串口升级,不过要上位机软件配合。

#6


友情帮顶下

#7


关注,学习

#8


http://blog.ednchina.com/wacke/404482/Message.aspx

#9


必须有个BOOTLOADER.
上电的时候把代码调到RAM中运行,监测USB状态。实行上位机命令,接收数据,写入程序存储器。
新下载的程序必须也有一样的bootloader,不然下次下载不了了

#10


得用汇编,给代码定位,BOOTLOADER里面,需要执行USB的数据收发处理、写FLASH操作,在非数据下载期间,BOOTLOADER将程序指针定位到用户代码区,如果不涉及中断操作,应该不太难。

#11


我见过一篇文章,lpc单片机作的,

LPC2000系列处理器USB ISP Bootloader 使用说明.pdf

http://www.elechome.com/

一个人写的,我没有用过,

想法不错,但是不知道,这么做,单片机的程序,安全性好象有所降低,还要写一套加密的小程序代码,

而且还写了大量usb代码,给单片机的稳定性能也降低了,

如果升级失败会如何?送厂返修?回来再用usb仿真器写一下?

如果做复杂的效验程序,把主程序在flash区备份,如果升级失败再恢复主程序,这不是就是浪费flash么?

一个简单的usb程序,最小也要6k,带上你的附加的功能,会做得很大,

给自己造成不必要的麻烦,

我个人觉得,看过,知道原理就好了,

只是个人看法

#12


引用 3 楼 zhimu 的回复:
恩,你说对了一半,我是想通过USB接口(不是串口),通过PC软件把程序烧录到单片机FLASH中,没有外部中断,只有一个USB接口,估计要写个USB更新程序放在code区的某个位置,在单片机正常跑的情况下,接收到要更新程序的命令,然后跳到这个区域,执行更新程序的代码。


 说是这样说,我感觉无从下手!再请赐教!

我觉得你说的很清楚了,呵呵。

#13


 学习

#1


和WINCE的BOOTLOADER一个原理。

#2


通过USB更新程序??
仿真器不是USB的嘛 通过USB下载程序 就是USB更新程序啊

你可以做成那种,自己写个程序,通过USB下载你的程序的可执行文件,通过串口操作,也挺好的,ARM的bootloader就是这样做的,你可以参考

#3


恩,你说对了一半,我是想通过USB接口(不是串口),通过PC软件把程序烧录到单片机FLASH中,没有外部中断,只有一个USB接口,估计要写个USB更新程序放在code区的某个位置,在单片机正常跑的情况下,接收到要更新程序的命令,然后跳到这个区域,执行更新程序的代码。


说是这样说,我感觉无从下手!再请赐教!

#4


这个不用你自己写吧,C8051f340的仿真器有USB的吧,只要把把程序烧写进去就可以吧

#5


USB升级程序?不太了解!我们公司自己做了一个IAP程序,可以在程序运行状态下串口升级,不过要上位机软件配合。

#6


友情帮顶下

#7


关注,学习

#8


http://blog.ednchina.com/wacke/404482/Message.aspx

#9


必须有个BOOTLOADER.
上电的时候把代码调到RAM中运行,监测USB状态。实行上位机命令,接收数据,写入程序存储器。
新下载的程序必须也有一样的bootloader,不然下次下载不了了

#10


得用汇编,给代码定位,BOOTLOADER里面,需要执行USB的数据收发处理、写FLASH操作,在非数据下载期间,BOOTLOADER将程序指针定位到用户代码区,如果不涉及中断操作,应该不太难。

#11


我见过一篇文章,lpc单片机作的,

LPC2000系列处理器USB ISP Bootloader 使用说明.pdf

http://www.elechome.com/

一个人写的,我没有用过,

想法不错,但是不知道,这么做,单片机的程序,安全性好象有所降低,还要写一套加密的小程序代码,

而且还写了大量usb代码,给单片机的稳定性能也降低了,

如果升级失败会如何?送厂返修?回来再用usb仿真器写一下?

如果做复杂的效验程序,把主程序在flash区备份,如果升级失败再恢复主程序,这不是就是浪费flash么?

一个简单的usb程序,最小也要6k,带上你的附加的功能,会做得很大,

给自己造成不必要的麻烦,

我个人觉得,看过,知道原理就好了,

只是个人看法

#12


引用 3 楼 zhimu 的回复:
恩,你说对了一半,我是想通过USB接口(不是串口),通过PC软件把程序烧录到单片机FLASH中,没有外部中断,只有一个USB接口,估计要写个USB更新程序放在code区的某个位置,在单片机正常跑的情况下,接收到要更新程序的命令,然后跳到这个区域,执行更新程序的代码。


 说是这样说,我感觉无从下手!再请赐教!

我觉得你说的很清楚了,呵呵。

#13


 学习