繁体   English   中英

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

[英]embedded software maintainability - configuration

我正在开发一种嵌入式软件,可以在两到三个不同的微控制器系列上运行。 现在我们有makefile,它读取配置开关并进行编译。

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

任何人都可以与类似的项目维护或参考项目(多个微型嵌入式和通用代码库)分享他们的经验。 只想了解最佳实践。

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

如果你没有找到任何其他东西, GNU autotools可以让事情变得更容易。

我有一个微控制器,但有几个项目是从相同的源代码编译而来的。 我认为我的情景与你的相似,至少在某种程度上如此。 我的解决方案也受到Linux内核的启发。

config.h

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

config.h只包含一行:

#include <config/project.h>

project.h

我有几个配置头文件,每个项目一个。 project.h由宏定义组成,其值包括truefalse或constants:

#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提供给定项目提供的相同参数值。

当我进行多平台开发时,我使用的解决方案就像我在这里的答案一样。 为每个平台都有一个特定的“platform_XXX.h”,并将条件编译限制为一个主“platform.h”文件,该文件选择正确的子文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM