面向单Bank闪存的页事务差分固件更新方法及计算机设备与流程
本发明涉及嵌入式设备的固件更新,具体涉及一种用于单bank闪存设备的页事务差分固件更新方法及计算机设备。
背景技术:
1、许多单片机把应用程序存放在片内闪存中,闪存不能像普通内存那样覆盖任意字节,通常要先擦除一个完整物理单元,再按照较小的编程粒度写入新数据;器件手册可能把该物理擦除单元称为页、扇区或块。
2、资源较充足的设备可以设置两个应用映像区:一个映像继续运行,另一个映像接收更新,验证完成后再切换;单bank设备只有一个应用映像区,也常常没有足够的随机存取存储器保存完整目标映像,甚至无法一次容纳一个擦除单元,因此难以直接采用双映像更新。
3、差分更新只传送新旧固件之间的差异,其中,复制指令复用旧固件中的数据,字面量指令提供新增数据;若在执行复制指令前擦除了目标页,原本需要复用的旧数据也随之丢失;若只按该区域未变化的标记跳过写入,被整页擦除的该区域仍不能恢复。
4、掉电还会使问题进一步复杂化,擦除或编程被中断后,目标页可能处于已擦除、部分写入或内容未知的状态,进度记录本身也可能写入不完整;仅凭一个阶段值,无法证明旧页已完整保留,也无法证明目标页已经重构完成。
技术实现思路
1、为解决上述技术问题,本发明提供一种面向单bank闪存的页事务差分固件更新方法及计算机设备。
2、本发明解决上述问题采用的技术方案为:一种面向单bank闪存的页事务差分固件更新方法,由复位后先于应用程序获得执行权的引导程序执行,所述引导程序存储于受保护引导区;所述单bank闪存设有应用区、交换区和事务记录区,所述交换区的容量不小于应用区中最大目标擦除单元的容量;所述页事务差分固件更新方法包括:
3、s1、针对待更新的当前目标擦除单元取得页更新信息和更新数据,所述页更新信息包括更新标识、目标地址、旧内容摘要、目标内容摘要以及按目标地址顺序排列的指令流,所述指令流包括从当前目标擦除单元的旧内容取数的复制指令和从所述更新数据取数的字面量指令,并且所述指令流的输出覆盖当前目标擦除单元的全部目标字节;
4、s2、读取当前目标擦除单元,计算实际摘要并与所述旧内容摘要进行核对;核对通过后,将当前目标擦除单元的完整旧内容复制到交换区,读取所述交换区中的完整旧内容并计算快照摘要,在所述快照摘要与旧内容摘要一致后,在事务记录区形成绑定所述更新标识、目标地址、旧内容摘要和目标内容摘要的备份有效记录;在所述备份有效记录通过校验且所述快照摘要与旧内容摘要一致的条件下,擦除当前目标擦除单元;
5、s3、擦除完成后,按目标地址顺序执行所述指令流,其中,复制指令仅从交换区内通过摘要核对的完整旧内容读取数据,字面量指令从步骤s1取得的更新数据读取数据;将两类指令的输出送入输出缓冲,所述输出缓冲的容量小于当前目标擦除单元且不小于闪存最小编程粒度,再按所述闪存最小编程粒度写入当前目标擦除单元,直至重构全部目标字节;
6、s4、读回重构后的当前目标擦除单元并计算目标页摘要;在所述目标页摘要与目标内容摘要一致后,在事务记录区形成绑定所述更新标识、目标地址和目标内容摘要的页面提交记录;仅在所述页面提交记录通过校验且再次读得的目标页摘要仍与目标内容摘要一致时,释放交换区中的当前页快照并开始处理下一目标擦除单元。
7、进一步具体的,所述页更新信息由页描述符承载,所述页描述符还包括指令流摘要、指令流长度和目标擦除单元容量;对于新旧内容完全一致的目标擦除单元,仅在读得的该擦除单元的实际摘要与目标内容摘要一致时跳过重构,并将该擦除单元纳入目标映像摘要的验证范围。
8、进一步具体的,形成所述备份有效记录和页面提交记录时,先在事务记录区的新槽位写入记录载荷并核对载荷校验值,再在与所述记录载荷相独立的闪存最小编程粒度中写入提交标识;仅将载荷校验值、提交标识、记录序号以及前一有效记录摘要均通过校验的记录认定为有效记录。
9、进一步具体的,响应于更新过程中的复位,所述引导程序扫描事务记录区并读取交换区和当前目标擦除单元:当未形成有效的备份有效记录且读得的当前目标擦除单元的实际摘要与旧内容摘要一致时,重新擦除交换区,将当前目标擦除单元的完整旧内容复制到交换区,计算快照摘要,并在所述快照摘要与旧内容摘要一致后,在事务记录区重新形成有效的备份有效记录;当备份有效记录有效、页面提交记录无效且快照摘要与旧内容摘要一致时,重新擦除当前目标擦除单元,并从步骤s1所述指令流的起点重新执行整页重构;当当前目标擦除单元的实际摘要已与目标内容摘要一致时,在新槽位补写或确认页面提交记录;当快照摘要和当前目标擦除单元的实际摘要均不能通过相应校验时,保持应用程序的启动阻断并请求能够重构当前目标擦除单元全部目标字节的恢复数据。
10、进一步具体的,所述单bank闪存还设有启动控制区,在处理第一个目标擦除单元前,在事务记录区形成绑定所述更新标识的更新活动记录;从更新清单取得目标映像标识、目标映像摘要和目标版本值,在全部目标擦除单元的页面提交记录均有效后,读取应用区计算当前映像摘要,并在当前映像摘要与目标映像摘要一致时,在启动控制区形成绑定所述更新标识、目标映像标识、目标映像摘要、目标版本值和授权序号的启动授权记录;每次启动应用程序前,从载荷校验、提交标识和记录链均通过校验的启动授权记录中,选择目标版本值最高且在该目标版本内授权序号最大的记录,并仅在所选记录与更新活动记录具有相同更新标识、且所选记录中的目标映像摘要与当前映像摘要一致时允许启动应用程序。
11、进一步具体的,步骤s1所述更新数据持久存储在设备侧,或者由更新服务端根据更新标识、目标地址和指令偏移进行认证重传;采用认证重传时,引导程序在页面提交记录有效之前不向更新服务端确认当前页事务完成。
12、进一步具体的,在所述单bank闪存执行擦除或者编程操作的期间,闪存访问例程、其调用关系代码、常量、栈以及异常处理代码预先部署在随机存取存储器中并从随机存取存储器执行,或者调用芯片只读存储器内部的在应用编程例程;采用随机存取存储器执行时,输出缓冲、指令解析状态、摘要计算状态、通信状态、闪存访问例程及其运行栈占用的总容量不超过单片机的可用随机存取存储器容量。
13、进一步具体的,步骤s1所述页更新信息属于带有数字签名的更新清单,所述更新清单还包括基准映像标识、目标映像标识、目标版本值和允许的目标地址范围;所述引导程序在形成备份有效记录前验证所述数字签名、基准映像标识、目标版本值和目标地址范围,并将运行期可变数据所在擦除单元排除在差分更新范围之外或采用独立的数据迁移事务处理。
14、一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述面向单bank闪存的页事务差分固件更新方法。
15、本发明的有益效果是:在不保存第二份完整应用映像,且随机存取存储器无法容纳一个完整目标页的条件下,仍能够在擦除目标擦除单元之前保留完整、可校验的旧页数据源,并在目标页校验通过之前维持该数据源不被回收。由于擦除许可、交换区快照释放许可均同时依赖可重新读取的闪存物理内容以及与更新标识绑定的持久事务记录,复位之后能够重新确定当前页的恢复处理起点,无需在残缺页上猜测续写位置。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com