1. 单备份升级说明
AD14 只支持设备升级(即SD卡升级 和 U盘升级)该升级方式为单备份升级。
- 正常的升级流程:
SDK -> 调用升级接口 -> 校验文件 -> 校验成功 -> 复位 -> 进入loader进行升级 -> 升级完毕,复位 -> 进入升级后的SDK
在进入loader进行升级前,任何错误都会导致升级退出,将错误的返回值返回到主流程。而单备份升级,在进入loader升级后,旧SDK程序已经被破坏,无法再回到旧SDK。此时若遇到断电等错误操作,可重新上电插卡(U盘)继续升级,直到升级成功会自行复位进入升级后的SDK。下面分几部分进行介绍:
“单备份升级流程”;
“单备份升级相关功能开关”;
“单备份升级相关函数接口”;
1.1. 单备份升级流程
- 使用对应的SD卡或者U盘升级需要先打开对应设备的宏。
sd卡 由在app_modules.h里的 TFG_SD_EN 控制U盘 由在app_config.h里的 TCFG_UDISK_ENABLE 控制设备升级需要使用到fat文件系统,默认AD14使用的是simple_fat文件系统即可。
- 调用对应的升级入口
try_to_upgrade(对应的设备,升级文件的路径);在该升级入口里会打开对应的设备,查看对应路径下的升级文件.(用户可参考common_msg.c里的sd卡上线消息处理升级流程)![]()
校验文件,成功即进入升级,升级成功会自动复位。
![]()
1.2. 单备份升级相关功能开关
单备份升级相关功能是在app_config.c里由const变量来控制。 分别是:
const u8 dev_update_use_eeprom
升级使用的区域:
0:VM区域; 1:eeprom区域;const u8 dev_update_keep_io_status;
升级时是否保持住IO状态:
0:不保持; 1:保持;const u8 dev_update_power_io;
升级时使用到的电源IO:
-1:没有; 任意IO(如IO_PORTA_01)const u8 ufw_vid_need_to_be_different;
升级文件的vid要求:
0:升级文件的vid要和原SDK相同 1:升级文件的vid与原SDK不一样; 2:升级文件的vid > 当前SDK的vid 3:升级文件的vid < 当前SDK的vid
1.3. 单备份升级相关函数接口
下面介绍升级相关函数接口。
1.3.1. u32 try_to_upgrade(char *dev_name, char *up_file_path)
升级入口。会打开对应的设备,检查对应路径下的升级文件,校验成功后会进行复位进入loader进行升级。参数:
1. dev_name:升级设备 __UDISK0:U盘; __SD0_NANE:SD卡; 2. up_file_path:升级文件路径 默认为"/update.ufw" 3. 返回值: 0:成功 有值:错误。
1.3.2. u32 check_ufw_file(char *dev_name, char *up_file_path);
检查升级文件,并不进行升级。
参数:
1. dev_name:升级设备 __UDISK0:U盘; __SD0_NANE:SD卡; 2. up_file_path:升级文件路径 默认为"/update.ufw" 3. 返回值: 0:成功 有值:错误。
1.3.3. u8 *user_get_ufw_vid(u8 *len);
获取升级文件的vid指针。需要搭配check_ufw_file使用。参数:
len:获取到的vid的长度(4个byte) 返回值:升级文件的vid。
1.3.4. u8 *user_get_flash_vid(u8 *len);
获取自身的vid。
参数:
len:获取到的vid的长度(4个byte) 返回值:自身的vid。