1.背景

公司在研发嵌入式产品过程中,产品的功能会不断的添加和更新,产品的型号也会越来越多。这时产品的软件研发团队就需要考虑是在原有的软件版本上修改还是全新开发。从研发成本上考虑会考虑基于原有软件上修改。原有软件上功能会越来越多,但一款产品可能只需要其中部分功能,这就要求嵌入式软件系统具有良好可裁剪性。嵌入式系统提供良好的裁剪性,有利于产品开发团队做出更多差异化的产品和低成本的产品(裁剪后的软件系统通常也降低了对硬件的要求)。

2.系统可裁减的前提

嵌入式系统的可裁减性,必须在嵌入式系统设计中引入子系统和块的概念,只有在顶层设计时明确了子系统和模块。可裁减性才能够落地。分层设计做到位,子系统及模块间的依赖关系越明确,耦合越少则裁减实施起来越简单。下图为华为设计的LiteOS的架构图,LiteOS做为物联网设备的OS,其在设计之初就必须考虑可裁减性,从官方公布的框图就可以看出。

美高梅注册 1

嵌入式系统层次图示例

3.常用手段静态编译

静态编译,静态编译时主要是通过条件编译宏来控制。为每个特性定义一个编译宏,当一款产品的特性确定后,在编译时只打开特定特性的编译开关,这样无关的特性代码就不会参与编译,有效的减少静态编译出来的软件包体积。此方法的缺陷是必须重新编译代码,同时降低了代码可维护性。

美高梅注册 2

静态编译动态库

美高梅注册,将各个功能模型分别编译成动态库,由主进程根据产品的功能需要加载需要的动态库。这种方法需要主进程从产品的规格文件获取需要加载的动态库,并按动态库要求的顺序依次打开。此方法的优点是不用重新编译,缺陷是实现起来复杂。控制函数流程,实现功能控制

类似静态编译,只不过是将静态编译时的编译宏改成全局变量判断。这些全局变量应该在主进程启动时从规格文件获取特性并加载在全局变量中,通过这些特性全局变量控制函数流程,达到功能裁减的目的。此方法是前面两种方法的折中,实现简单也不需要重新编译代码。但软件包体积没有减小。

相关文章