我在部门负责软件的集成,最近一次集成了较多的新增模块,编译提示Flash空间不足。虽然知道是由于软件代码量太多了,但无论是新增软件模块还是原有软件模块的负责人都不愿意优化自己的模块,协调起来非常困难,如何避免软件集成时出现Flash或RAM空间不足的问题呢?
控制器越复杂,参与软件开发的人员或组织越多,软件集成的难度越高。ECU资源不足就是软件集成时常见的一种典型状况。这类问题原因很明确,但解决起来却非常不易。由于软件集成操作属于整个开发过程的后期,通常会面临时间紧、难协调、成本高等困难。
为了提高软件集成的“可控性”,引入ECU资源管理活动是非常有必要的。以RAM和Flash两种常见的存储资源为例,软件中占用这些存储资源的的元素主要有五种:
在每个软件模块的开发伊始就应当围绕这些元素进行资源预算,向架构师提出申请,得到批准后再进行开发,再完成编码后,应进行资源使用情况的实际测试,提供存储资源的实际消耗数据。软件集成工程师在集成过程中,对全部软件的资源消耗情况进行统计和监控,从而形成资源管理的闭环。
PS:资源统计和分析通常可基于编译后生成的Map或Elf文件,开发专用的内部工具自动完成。下图展示了一个由工具自动生成的资源报告实例: