嵌入式软件可维护性-配置



我正在开发一个嵌入式软件,它意味着在两到三个不同的微控制器家族上运行。现在我们有makefiles来读取配置开关并进行编译。

对于开发人员和非开发人员来说,更新编译开关和构建配置的过程越来越乏味。我知道Linux内核使用ncurs来生成编译配置。我正在寻找一个类似的工具,但跨平台。它应该可以在Windows和Linux上运行。我知道这仍然不能解决问题,但它对非开发人员更有吸引力,我也可以快速分享我的。config文件或与现有的进行比较。配置将按照特定的顺序进行,这里有一个diff工具将会有所帮助。

任何人都可以分享他们在类似项目维护或参考项目(多微的嵌入式和通用代码库)方面的经验吗?只是想知道最佳实践。

PS:使用C语言,8/16位微处理器,没有操作系统,只是基于定时器的批调度程序(裸机)

我有一个微控制器,但几个项目从相同的源代码编译。我想我的情况和你的相似,至少在某种程度上。我的解决方案也是受到了Linux内核的启发。

config.h

所有需要访问某些配置参数的源代码都包含一个名为config.h的头文件。

config.h仅由一行组成:

#include <config/project.h>

project.h

我有几个配置头文件,每个项目一个。project.h由具有truefalse或常量等值的宏定义组成:

#define CONFIG_FOO true
#define CONFIG_BAR false
#define CONFIG_TIME 100

check.c

这个文件检查配置参数的正确性:-所有参数必须定义,即使对该项目没有使用或没有意义-不需要的参数组合发出信号-参数值有约束

#if !defined(CONFIG_FOO)
        #error CONFIG_FOO not defined
#endif
#if !defined(CONFIG_BAR)
        #error CONFIG_BAR not defined
#endif
#if !defined(CONFIG_TIME)
        #error CONFIG_TIME not defined
#endif
#if !(CONFIG_FOO ^ CONFIG_BAR)
       #error either CONFIG_FOO or CONFIG_BAR should be se
#endif
#if CONFIG_TIME > 250
        #error CONFIG_TIME too big
#endif

Makefile

通过指示编译器输出预处理器宏,可以(使用一点sed表达式)为Makefile提供与给定项目相同的参数值。

如果您找不到其他工具,GNU autotools可以使事情变得更容易。

当我在做多平台开发时,我使用了一个类似于我在这里回答的解决方案。为每个平台设置一个特定的"platform_XXX.h",并将条件编译限制为单个主"platform.h"文件,该文件选择正确的子文件。

最新更新