搜索
bottom↓
回复: 450

从今天开始,像使用U盘一样,升级STM32

  [复制链接]

出0入0汤圆

发表于 2015-12-3 19:47:50 | 显示全部楼层 |阅读模式
有没有想过,像使用U盘一样升级STM32固件,非常简单,非常方便

1:        插入电脑USB接口
2:        把升级固件拖到设备盘符
3:        升级完成



抛弃繁琐的USB DFU,抛弃落后的串口升级,让我们来谈谈U盘升级STM32

1. 为什么设计这个BOOT LOADER

在电子产品开发过程中,为了满足市场需要,经常是先开发出一个简单可用的版本,然后逐步迭代升级,修复bug,并增强系统功能
一个稳定,简单,安全的升级方式,就变得非常重要
对于嵌入式系统来说,常见的升级方式为
串口升级(私有协议或者X-Modem)
USB升级(DFU)
U盘升级(OTG)
网络升级
无线升级(OTA)
从技术来说,这几种升级方式大同小异,原理类似:都是一个Loader代理接收数据通道的数据,然后解密,烧录到FLASH中;但用户体验完全不同,拿串口升级来说,首先用户需要一个串口软件,然后对于没有硬件串口的PC来说,就需要一个USB转串口设备,对于不同PC平台,串口软件就不一样,这需要学习成本,过程繁琐;所以在一些需要用户自行升级远程设备的情况下,即便是通过电话指导,80%的用户仍然不知道怎么升级,导致失败

USB的DFU升级,也是类似的问题,它设计的初衷就是面向专业用户的,而不是小白!所以需要安装DFU软件,按照手册来一步步升级

OTA升级和网络升级,体验好些,可用做到无感升级,但不适合所有场景

而U盘升级,用户学习成本最低,U盘大家都知道,然后拷贝一个Bin文件进去,插入设备,重启设备,就完成升级了,非常简单。类似的变种,比如手机升级,是最先进的,直接将手机模拟成U盘,然后用户拷贝数据到手机,重启就好了,非常简单
在嵌入式系统中,还没这么方便的升级手段,虽然ARM的Mbed有一种类似的固件更新功能,但它是专门为调试器设计的,不能内嵌到用户MCU中
所以,我将手机升级的方案引入到嵌入式系统中,从而为大家提供一个实现稳定,安全,零学习成本的升级方案
经过一段时间的学习研究,有了这个USB MSD Bootloader

2. 功能特点

只占用15K FLASH空间
简单易用,直接拖拽文件进行固件升级,无需任何专业知识
采用USB大容量设备类,不用安装任何驱动
支持各种系统(Windows/Linux/Mac/Android)
不用开发任何上位机,提高产品效率
支持各种加密算法(AES256等),轻松安全升级
自动识别Bin,Hex,自定义加密固件(后缀为sec)文件
支持MD5文件校验机制,保证固件升级的完整性
显示设备升级状态信息
支持长文件名升级
多种措施保证系统健壮性,保证Bootloader不会被误擦除,保证APP合法性
支持用户自定义加密算法和完整校验算法,极致安全

3. 系统原理

系统开机上电后,Bootloader接管系统,初始化USB硬件,等待USB连接
Bootloader在启动后1秒内,检测USB是否连接PC:如果连接PC,则进入固件升级模式,执行第3步;超时则跳转第8步,尝试执行用户APP
Bootloader模拟成MSD设备,构建FAT16虚拟文件系统,U盘名为”Bootloader”,容量为100M,但具体实际可用空间,根据用户MCU来确定,建议不要复制除APP之外的无关文件
当用户复制文件到U盘时,Bootloader会判断文件后缀和判断文件size,如果size大于实际的MCU可用FLASH或者文件后缀不合法,则进入错误状态,更新状态文件,重新枚举USB
文件后缀和size通过检测后,Bootloader会截获PC发送文件数据流,并写入MCU 对应的Flash中
如果写入过程中出错,则终止操作,擦除APP内容,进入错误状态,更新状态文件,重新枚举USB
成功写入后,Bootloader更新状态文件,重新枚举USB,显示升级完成;但不会运行APP,只有拔掉USB后,再次重启,才会进入第8步,尝试运行APP
Bootloader检查APP固件的栈和入口函数合法性,只有通过检测后,才开始执行APP。检测判断条件是栈指针必须在RAM地址空间内,入口函数地址必须处于THUMB模式,并LSB为1
停止USB设备,关掉所有的中断,执行APP,APP开始接管系统


4. 支持芯片
STM32F101/3/5/7
重点来了,点击下面链接,下载固件



使用说明手册和使用文档,点击下载
2015-12-3 19:41 上传


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-12-3 19:52:47 | 显示全部楼层
本帖最后由 renjun_EMbest 于 2015-12-3 20:02 编辑

上传具体的使用方法截图
希望大家都能用这个工具来实现USB固件升级






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-12-3 19:56:07 | 显示全部楼层
非常牛,如果能做到5K以下就更好了。

出0入0汤圆

发表于 2015-12-3 19:57:27 | 显示全部楼层
学习学习!!!

出0入0汤圆

发表于 2015-12-3 20:00:34 | 显示全部楼层
好,正需要啊。

出0入70汤圆

发表于 2015-12-3 20:03:59 | 显示全部楼层
你的 U盘模式,  USB接口 怎么接,  用了STM32什么管脚实现与PC连机.........整毛线啊............

出0入0汤圆

发表于 2015-12-3 20:05:35 | 显示全部楼层
好东西,好好学习下,谢谢楼主分享

出0入0汤圆

发表于 2015-12-3 20:05:39 | 显示全部楼层
带U口的设备的实用技能

出0入0汤圆

发表于 2015-12-3 20:06:33 | 显示全部楼层
感谢分享,不知道能不能在F407上运行呢?

出0入0汤圆

发表于 2015-12-3 20:07:59 | 显示全部楼层
我们的产品都用SD卡升级, 卡还可以用于黑匣子功能的数据记录.

出0入0汤圆

 楼主| 发表于 2015-12-3 20:09:00 | 显示全部楼层
starli 发表于 2015-12-3 19:56
非常牛,如果能做到5K以下就更好了。

优化一下,可以做到5K左右
现在主要是为了提高速度,刻意增加了内存使用,因为STM32 FLASH是2K的,分配了2个2K的缓冲区

STM32的FLASH已经足够大了,15K占用,应该不是大问题

出0入0汤圆

发表于 2015-12-3 20:09:38 | 显示全部楼层
学习一下,谢谢楼主

出0入0汤圆

发表于 2015-12-3 20:09:45 | 显示全部楼层
没有源码啊。。。还好之前下过一个开源的。 跟MBed差不多。

出330入1862汤圆

发表于 2015-12-3 20:10:34 | 显示全部楼层
有意思

出0入4汤圆

发表于 2015-12-3 20:13:05 | 显示全部楼层
支持下楼主,新唐的单片机早就支持了

出0入0汤圆

 楼主| 发表于 2015-12-3 20:13:16 | 显示全部楼层
SkyGz 发表于 2015-12-3 20:03
你的 U盘模式,  USB接口 怎么接,  用了STM32什么管脚实现与PC连机.........整毛线啊............ ...

STM103就只有一个USB
1)Device模式
2)PA11,PA12

基本原理就是模拟U盘,然后做一个虚拟FAT16文件系统

出0入0汤圆

 楼主| 发表于 2015-12-3 20:14:26 | 显示全部楼层
sblpp 发表于 2015-12-3 20:06
感谢分享,不知道能不能在F407上运行呢?

最近也在用F4,回头支持一下F4的芯片

出0入0汤圆

 楼主| 发表于 2015-12-3 20:17:04 | 显示全部楼层
bondxie3 发表于 2015-12-3 20:07
我们的产品都用SD卡升级, 卡还可以用于黑匣子功能的数据记录.

本来打算也用SD卡升级,后来为了节省成本,用了内置的FLASH,仿真一个100M的U盘
然后就做了这个升级代码

出0入0汤圆

 楼主| 发表于 2015-12-3 20:18:30 | 显示全部楼层
wajlh 发表于 2015-12-3 20:13
支持下楼主,新唐的单片机早就支持了



我瞧瞧去

出0入0汤圆

发表于 2015-12-3 20:19:35 | 显示全部楼层
这不就是类似于Nucleo的方式?只不过那个是下载到另一片STM32

出0入0汤圆

 楼主| 发表于 2015-12-3 20:23:16 | 显示全部楼层
nightseas 发表于 2015-12-3 20:19
这不就是类似于Nucleo的方式?只不过那个是下载到另一片STM32

新唐的不熟,哪个系列芯片,我研究研究

Mbed和Freescale采用过这种方式

出0入0汤圆

发表于 2015-12-3 20:24:57 | 显示全部楼层
就是ST的Mbed板子

出0入0汤圆

发表于 2015-12-3 20:30:56 | 显示全部楼层
sblpp 发表于 2015-12-3 20:09
没有源码啊。。。还好之前下过一个开源的。 跟MBed差不多。

能否分享下,学习学习

出0入0汤圆

发表于 2015-12-3 20:37:36 来自手机 | 显示全部楼层
多谢楼主分享

出100入101汤圆

发表于 2015-12-3 20:39:39 | 显示全部楼层
不错,空了仔细看下。

出0入4汤圆

发表于 2015-12-3 20:39:42 | 显示全部楼层
renjun_EMbest 发表于 2015-12-3 20:17
本来打算也用SD卡升级,后来为了节省成本,用了内置的FLASH,仿真一个100M的U盘
然后就做了这个升级代码 ...

内置的FLASH,仿真一个100M的U盘,怎么做的

出0入0汤圆

发表于 2015-12-3 20:43:49 | 显示全部楼层
   对于大批量设备升级程序还是使用U盘升级方式更方便,很多坏境下不能随身带电脑过去。

出0入0汤圆

发表于 2015-12-3 20:45:43 | 显示全部楼层
不能升级完后自动重启设备吗

出0入0汤圆

 楼主| 发表于 2015-12-3 20:46:56 | 显示全部楼层
zhenglingo 发表于 2015-12-3 20:43
对于大批量设备升级程序还是使用U盘升级方式更方便,很多坏境下不能随身带电脑过去。 ...

嗯,应用场合不一样,USB升级,适合小型的消费级产品升级

那个U盘升级的方式,确实适合设备现场升级

出0入0汤圆

发表于 2015-12-3 20:47:43 | 显示全部楼层
不错,先收藏了

出0入0汤圆

 楼主| 发表于 2015-12-3 20:50:00 | 显示全部楼层
yinzhongxing 发表于 2015-12-3 20:45
不能升级完后自动重启设备吗

可以,刚开始也确实升级完成自动运行APP
但后来考虑了一下,还是采用了复位重启,这样状态更可控

出0入0汤圆

发表于 2015-12-3 20:52:52 | 显示全部楼层
你不放源码,我们怎么用加密呢?

(我不要求哈,只是提提,毕竟是你辛苦开发的。)

出0入76汤圆

发表于 2015-12-3 20:53:00 | 显示全部楼层
不错,感谢分享

出0入0汤圆

 楼主| 发表于 2015-12-3 20:53:11 | 显示全部楼层
ztrx 发表于 2015-12-3 20:39
内置的FLASH,仿真一个100M的U盘,怎么做的

PC 会通过SCSI命令,来查询设备容量,你截获到这个命令后,然后返回特定的值就好了

理论上:可以设置任意大小容量

这个值需要和虚拟FAT表匹配,不然系统拒绝接受,要求重新格式化

出0入0汤圆

发表于 2015-12-3 20:56:02 | 显示全部楼层
支持,正在琢磨自己弄这个功能。呵呵,谢谢啦

出0入0汤圆

 楼主| 发表于 2015-12-3 20:56:28 | 显示全部楼层
LCRPN 发表于 2015-12-3 20:52
你不放源码,我们怎么用加密呢?

(我不要求哈,只是提提,毕竟是你辛苦开发的。) ...

稍后开放一个lib和相应的加密API给各位用

出0入0汤圆

发表于 2015-12-3 21:02:15 | 显示全部楼层
renjun_EMbest 发表于 2015-12-3 20:56
稍后开放一个lib和相应的加密API给各位用


还是不敢用。

等我真需要用这个做产品的时候再找你买源码吧。


(我现在也在玩USB,刚把U盘搞定。)

出0入0汤圆

 楼主| 发表于 2015-12-3 21:03:23 | 显示全部楼层
LCRPN 发表于 2015-12-3 21:02
还是不敢用。

等我真需要用这个做产品的时候再找你买源码吧。

好,多交流

出0入0汤圆

发表于 2015-12-3 21:03:29 | 显示全部楼层
尝试烧录进学习板,可是电脑没有识别出U盘,插上没反应。

出0入0汤圆

发表于 2015-12-3 21:15:46 | 显示全部楼层
学习一下思路。
谢谢楼主。

出0入0汤圆

发表于 2015-12-3 21:17:28 | 显示全部楼层
厉害,收藏看看      

出0入0汤圆

发表于 2015-12-3 21:21:07 来自手机 | 显示全部楼层
虽然暂时没有用到stm32,但还是为你这个新方案点赞

出0入0汤圆

 楼主| 发表于 2015-12-3 21:22:50 | 显示全部楼层
admvip 发表于 2015-12-3 21:03
尝试烧录进学习板,可是电脑没有识别出U盘,插上没反应。

哪个片子

出0入0汤圆

发表于 2015-12-3 21:24:34 | 显示全部楼层
是STM32F103VE的片子

出0入0汤圆

发表于 2015-12-3 21:25:04 | 显示全部楼层
这个比较屌,MARK先

出0入0汤圆

发表于 2015-12-3 21:28:16 | 显示全部楼层
不错的东西

出0入0汤圆

发表于 2015-12-3 21:34:57 | 显示全部楼层
不错不错,看完了!

出0入0汤圆

 楼主| 发表于 2015-12-3 21:38:26 | 显示全部楼层
admvip 发表于 2015-12-3 21:24
是STM32F103VE的片子


我也用的也是103VE,用原子的板子调的,JFlash烧录HEX文件
你对比一下原理图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-12-3 21:39:17 | 显示全部楼层
这个新唐的,可以参考下,记得坛子里的 LGT仿真器  也是类似方式升级的,另外使用NXP的LPC1343出厂都有这种 MSD的升级方式





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-12-3 21:45:09 | 显示全部楼层
renjun_EMbest 发表于 2015-12-3 21:38
我也用的也是103VE,用原子的板子调的,JFlash烧录HEX文件
你对比一下原理图

我用的是奋斗的STM32 MINI学习板,用JLink先将固件写入片子,写完后插入电脑USB,没有写用户文件,不知道是不是不识别的原因。

出0入0汤圆

发表于 2015-12-3 21:45:14 | 显示全部楼层
开放了hex,就已经类似开源了,

不过感觉还是没有SD卡进行升级方便

出0入0汤圆

发表于 2015-12-3 21:50:28 | 显示全部楼层
找到原因了,奋斗学习板USB接的是PA11和PA12,和楼主的硬件结构不一样。

出0入8汤圆

发表于 2015-12-3 21:57:06 | 显示全部楼层
试了下   可以将文件写入成功   但是无法运行  每次重新上电都是  进入boot  没有启动app

出0入0汤圆

发表于 2015-12-3 21:57:36 | 显示全部楼层
留个名,以后说不定会用的上

出0入76汤圆

发表于 2015-12-3 21:58:26 | 显示全部楼层
功能上与LGT的JTAG工具 在功能与使用上是基本上是差不多的, LGT的这个工具就是使用的新唐的MCU。
1) 刚才试用了一下, 感觉真心不错。
2) HEX加密可以使用标准加密算法,如果不放心,要使用自定义算法怎么操作?

出0入17汤圆

发表于 2015-12-3 22:03:18 | 显示全部楼层
标记下,明天看下。去年也想做了这个功能,板子都打好了,一直没动,哎。

出0入0汤圆

发表于 2015-12-3 22:03:50 来自手机 | 显示全部楼层
这个应该好了对系统的开发与调试太有用了,先MARK下下,谢谢楼主的分享

出0入0汤圆

 楼主| 发表于 2015-12-3 22:14:03 | 显示全部楼层
justdomyself 发表于 2015-12-3 21:57
试了下   可以将文件写入成功   但是无法运行  每次重新上电都是  进入boot  没有启动app ...

用户APP的地址是:0x0800500

运行的时候,先拔掉USB,再上电,不然会一直在Loader模式

出0入0汤圆

 楼主| 发表于 2015-12-3 22:15:40 | 显示全部楼层
foxpro2005 发表于 2015-12-3 21:58
功能上与LGT的JTAG工具 在功能与使用上是基本上是差不多的, LGT的这个工具就是使用的新唐的MCU。
1) 刚才 ...

HEX是标准文件,不需要加密,任何符合Intel hex标准的文件(IAR,MDK,GCC)都可以

SEC文件是加密文件,需要自定义加密头和加密结构

出0入0汤圆

 楼主| 发表于 2015-12-3 22:18:07 | 显示全部楼层
admvip 发表于 2015-12-3 21:50
找到原因了,奋斗学习板USB接的是PA11和PA12,和楼主的硬件结构不一样。

不至于啊,USB都是PA11和PA12
你运行一下自己开发板的USB例子,看能不能跑起来

出0入0汤圆

发表于 2015-12-3 22:21:39 | 显示全部楼层
这个确实会很方便。学习下

出0入0汤圆

发表于 2015-12-3 22:28:39 | 显示全部楼层
等楼主开源或出售源代码

出0入0汤圆

发表于 2015-12-3 22:30:13 | 显示全部楼层
坐等开源

出0入0汤圆

发表于 2015-12-3 22:32:08 | 显示全部楼层
这个以前用其他芯片的时候搞过,后来实际应用发现还是有点问题,最终没用了,主要是两个方面:

1 因为boot运行时如果检测到USB连接,则会停留在boot中等待升级,而对于应用程序APP也要使用USB与PC通讯的情况,比如虚拟串口,则不能插着usb上电,必须先上电等app运行之后才能连接usb,影响用户体验

2 遇到用户的PC带有U盘病毒的时候,会往boot虚拟的U盘写病毒程序,虽然有校验,不会刷掉app,但是还是可能会扰乱用户升级过程

还有种情况是客户电脑装了加密系统,禁止U盘拷贝文件,但是允许使用USB串口通讯,这种适合用USBCDC配合上位机更好用,这也是我们公司一直使用的方式,毕竟升级不会很频繁,操作不那么傻瓜化,有时反而能避免非专业人员乱搞,呵呵

出0入0汤圆

发表于 2015-12-3 22:32:42 | 显示全部楼层
支持一下。有空试试。

出0入0汤圆

发表于 2015-12-3 22:43:01 | 显示全部楼层
飞思卡尔的K60试过SD卡更新程序

出1000入0汤圆

发表于 2015-12-3 22:44:13 | 显示全部楼层
这个方法好,回头试试,谢谢

出0入0汤圆

 楼主| 发表于 2015-12-3 22:51:45 | 显示全部楼层
菜包 发表于 2015-12-3 22:32
这个以前用其他芯片的时候搞过,后来实际应用发现还是有点问题,最终没用了,主要是两个方面:

1 因为boot ...

嗯,确实是这样的

前两个确实是问题

1)进入Boot模式这个问题,如果有外部硬件还好,可以配合一下;现在是1S延时加USB插入检测,也没有太好的解决方案
2)病毒这个,没深入研究,暂时不清楚是什么情况

这种USB升级方式,更适合小白,不需要上位机的简单场合

出0入0汤圆

发表于 2015-12-3 22:52:53 | 显示全部楼层
确实是个好方法。学习一下。。

出0入0汤圆

发表于 2015-12-3 23:28:23 来自手机 | 显示全部楼层
谢谢卤煮分享

出0入0汤圆

发表于 2015-12-4 00:29:30 | 显示全部楼层
不错,学习下

出0入8汤圆

发表于 2015-12-4 07:28:22 | 显示全部楼层
renjun_EMbest 发表于 2015-12-3 22:14
用户APP的地址是:0x0800500

运行的时候,先拔掉USB,再上电,不然会一直在Loader模式 ...

:0x0800500??

不是:0x08005000么?


还有,我的app带ucos的

出0入0汤圆

发表于 2015-12-4 08:02:10 | 显示全部楼层
备用!!!回头试试

出0入0汤圆

发表于 2015-12-4 08:19:42 | 显示全部楼层
谢谢分享  

出0入0汤圆

发表于 2015-12-4 08:21:20 来自手机 | 显示全部楼层
openSDA好像也是这样?

出0入0汤圆

发表于 2015-12-4 08:23:10 | 显示全部楼层
强列支持!

出0入0汤圆

发表于 2015-12-4 08:27:02 | 显示全部楼层
楼主这方式真好,在基本不增加成本的情况下实现了功能

出0入0汤圆

发表于 2015-12-4 08:44:24 | 显示全部楼层
楼主好帅气!

出0入0汤圆

发表于 2015-12-4 08:48:18 | 显示全部楼层
能弄个STM32F0系列的吗?

出0入8汤圆

发表于 2015-12-4 08:49:20 | 显示全部楼层
这个好,之前DFU模式太麻烦,学习一下

出0入0汤圆

发表于 2015-12-4 08:49:59 | 显示全部楼层
这个东西确实大大的方便啊,多谢楼主

出0入0汤圆

发表于 2015-12-4 08:50:22 | 显示全部楼层
太强大了!mark!!!

出0入0汤圆

发表于 2015-12-4 08:54:33 | 显示全部楼层
做过U盘升级系统,不过需要单片机支持OTG,用STM32F207实现的,不过没有加密系统。这个很简单,只要把USB OTG搞定,其他的只要会做BootLoader的都知道

出0入0汤圆

发表于 2015-12-4 08:55:36 | 显示全部楼层
不错,对后期维护就方便多了。

出0入0汤圆

发表于 2015-12-4 08:55:40 | 显示全部楼层
比较好奇楼主的虚拟U盘的做法是怎么实现的,电脑和单片机怎么通讯的?

出0入0汤圆

发表于 2015-12-4 09:01:45 | 显示全部楼层
这个想法太好了,支持LZ,只是木有源码呀?不开放吗?

出0入0汤圆

发表于 2015-12-4 09:10:29 | 显示全部楼层
收藏了 后面慢慢看~

出0入0汤圆

发表于 2015-12-4 09:11:21 | 显示全部楼层
感谢楼主的分享!

出0入0汤圆

发表于 2015-12-4 09:12:41 | 显示全部楼层
lpc就有类似的功能

出100入85汤圆

发表于 2015-12-4 09:23:36 | 显示全部楼层
sblpp 发表于 2015-12-3 20:09
没有源码啊。。。还好之前下过一个开源的。 跟MBed差不多。

能否共享下你下载的?

出0入10汤圆

发表于 2015-12-4 09:26:12 | 显示全部楼层
哇哦,楼主有心了,多谢奉献

出0入10汤圆

发表于 2015-12-4 09:26:43 | 显示全部楼层
单飞 发表于 2015-12-4 08:55
比较好奇楼主的虚拟U盘的做法是怎么实现的,电脑和单片机怎么通讯的?

USB啊      

出0入0汤圆

 楼主| 发表于 2015-12-4 09:28:17 | 显示全部楼层
justdomyself 发表于 2015-12-4 07:28
:0x0800500??

不是:0x08005000么?

额,写错了,少加一个0

出0入22汤圆

发表于 2015-12-4 09:33:39 | 显示全部楼层
早就已经在用这种方法了,本来以为大家也都知道这种方法了,没想到还是有那么多人不知道啊

原理其实很简单的,st系列的库函数有usb msd的例子,只不过文件系统是建立在sd卡或者spi flash里面而已,自己将有关sd或者spi的函数删除,然后接管一下电脑发来的命令,将读写操作另外指定到自己想要的地方就行了,我现在不但用了这个方法升级,而且还用内部flash装下了usb cdc的inf驱动文件,这样插上电脑识别U盘,打开u盘可以复制出inf文件装串口线驱动,或者改改还能放自己产品的说明文件等,吧bin文件扔进去就能自动升级固件

出0入0汤圆

 楼主| 发表于 2015-12-4 09:35:51 | 显示全部楼层
jiaowoxiaolu 发表于 2015-12-4 09:33
早就已经在用这种方法了,本来以为大家也都知道这种方法了,没想到还是有那么多人不知道啊

原理 ...


是这样的,我把原理也贴出来了

出0入0汤圆

发表于 2015-12-4 09:50:55 | 显示全部楼层
给小白升级用的工具还是很有必要的。公司里面做维护的不懂技术,每次有新版本更新我又没法去跑现场,就特意开发了U盘升级和在线升级的功能。不过功能做的很简陋,一直想找一个开源的,大家能够一起来维护。

出0入0汤圆

发表于 2015-12-4 10:17:21 | 显示全部楼层
小白(客户)升级福音啊,,,

出0入0汤圆

发表于 2015-12-4 10:20:28 | 显示全部楼层
学习下U盘升级程序

出0入8汤圆

发表于 2015-12-4 10:20:51 | 显示全部楼层
非常实用,谢谢楼主的分享!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-20 02:59

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

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