——来自迪文开发者论坛
开发自己的项目中遇到文件升级不方便的问题,因此设计了一个在线升级方案,可以有效解决如下问题:
1. 当产品已发出需要修复Bug时,无法在线修复。
2. 无法判断新老版本,当数据文件没有变化时执行了重复升级。
3. 批量升级时,每个设备需要单独去插卡或者用电脑上位机升级。
演示视频
一、设计思路
引导装载升级程序,在系统中始终存在一段用于程序装载的代码,该代码在启动时被运行。根据Nor Flash版本号差异来判断是运行现有版本的程序还是从主机下载新程序。
当迪文屏上电复位时,首先执行片内的装载程序,在Nor Flash地址存放每个数据文件的当前版本号,作为下一次判断是否需要更新该数据文件的依据。(注意一定要升级该数据文件成功后才保存该数据文件的当前版本号)。
主控板根据版本号的差异判断迪文屏是否需要下载新程序。如果本地版本号与上一次更新的版本号不同时,主控板向迪文屏发送更新程序的请求,内核文件通过继电器切换SD卡信号线的方式给到迪文屏。
迪文屏接收新的应用程序内容,并在最终确认后写入外部Flash内。当更新程序执行完毕后,将DGUS系统复位,并执行片内RAM中的程序。如果再次复位,那么将重复上述装载执行过程。这里版本号有多少个不同,就会更新多少个文件,避免版本一致的重复更新。
二、设计框图
三、资料下载
方案完整资料包下载可前往迪文开发者论坛获取:
http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=6361&extra=&page=1