ARTICLE · 1070838
嵌入式系统应用软件升级方案
嵌入式系统应用软件升级方案本文介绍的升级方案有4个程序:1级boot、2级boot、APP应用程序、flash driver程序。 一、1级boot 1级boot的作用是程序启动后决定运行2级boot还是APP应用程序。若升级功能启动,则会跳转到2级boot,若正常启动,则会直接跳到APP程序执行产品业务。该程序设计极为简单,因为该程序在出货后,就无法再修改,因此设计越简单,越稳定。 二、2级boot 2级boot用于升级APP应用程序,在升级完成后,直接跳转到APP程序中。升级业务则根据相关产品的需求决定。 三、APP应用程序 APP应用程序除了实现产品业务外,还需要实现2级boot的升级功能,因为2级boot是根据业务需求实现的,若不同项目的业务需求不同,则2级boot会做相应修改,因此短时间内无法让2级boot特别稳定,若2级boot出现问题可及时修改后升级, 四、flash driver程序 该程序运行在RAM中的一小段程序,用于擦除APP内存,在升级完成后,该程序将不复存在,使用该程序的作用就是防止程序在运行过程中意外跑飞,擦除关键性数据导致程序无法正常运行。在刷写APP之前,需要先刷写flash driver程序,刷写完成并擦除APP内存后,再刷写APP程序即可。 下图是该方案的设计图: 3. flash内存分配 
说明:APP参数区1和参数区2用于轮询存储,避免刷写时断电导致参数无效的问题。APP下的可变参数保存在外挂内存中,APP参数区1和参数区2区数据仅只读。flash driver程序则在刷写时保存在RAM的某一块区域。 4. 该方案的优缺点:
更新APP 
更新2级boot 

优点 ①合理利用内存资源,不至于过多浪费RAM和flash。②避免了擦除接口意外调度导致擦除关键性数据的问题。③可以升级boot。④满足市场大部分升级需求 缺点 ①不适用余静默升级,若文件较大时,升级时间较长,因此无法满足静默升级需求。②不适用于在APP下写falsh,APP若需要修改参数,可把可变参数置于外挂内存中,如APP的升级标志存放在RAM或外挂EEPROM等。