摘要:
现如今嵌入式产品已经深入我们身边的每一个角落,对我们的生产、生活起到了极大的推进作用。这些种类繁多、琳琅满目的嵌入式产品虽然具有不尽相同的功能,但它们也有一定的共同点,即普遍具有升级功能。在技术飞速发展的今天,硬件IC的电晶体数正按照摩尔定律成倍增长,而软件也在迭代中不断向前,所以一款产品推出后,随着时间的流逝,是肯定要进行升级更新的。这种更新或是对之前未发现BUG的修正,或是根据用户需求添加新的功能,或是增加用户体验、稳定性。在升级功能中,本论文主要围绕如何实现大面积铺设的嵌入式产品的远程、安全、稳定升级来展开。 本文主要说明基于Linux内核的升级功能以及基于bootloader的升级功能的设计过程和具体的实现方式。其中内核下的升级使用了备份区的概念,保证了在升级异常后,也可处理正常业务。对于bootloader下的升级,因为所需FLASH空间成倍缩减,则为厂商有效的节约了成本。嵌入式产品往往出货量都是10万量级以上,有的更是百万以上量级,就算每个产品节约1角钱,在庞大基数的支撑下,成本节约也是非常可观的。 主要的设计和实现流程是按照软件工程中的需求分析、概要设计、详细设计与测试进行。论文各章节的安排也主要是按照该流程来撰写。在概要设计和详细设计部分,搭配了必要的系统流程图以便于说明和理解。在详细设计之后,较为详细的介绍了核心代码的实现,附带了部分核心源码,以及实现的截图。在代码撰写方面,考虑了代码的重用性,可维护性,健壮性和整体效率的提高。 通过该远程升级功能的实现,有效的解决了大面积铺设的嵌入式产品的安全升级问题,使其增强了抵御不可抗力(升级时断电等)的能力,大为降低了升级风险,增强了系统升级时的容错性,即即使出现意外的失败,系统依然可以处理部分正常业务,同时自动寻求再次升级。由于升级失败后,系统依然可以正常启动,所以避免了将各个嵌入式设备从各个铺设点取回返厂的动作,大幅降低了升级成本。
展开