我正在开发一种嵌入式软件,旨在在两到三个不同的微 Controller 系列上运行。现在我们有读取配置开关并进行编译的 makefile。
对于开发人员和非开发人员来说,保持更新编译开关和构建配置的过程变得越来越乏味。我知道 Linux 内核使用 ncurses 生成编译配置。我正在寻找类似的工具,但跨平台。它应该在 Windows 和 Linux 上运行。我知道这仍然不能解决问题,但它对非开发人员更有吸引力,我也可以快速共享我的 .config 文件或将其与现有文件进行比较。配置将按特定顺序排列,此处的差异工具会有所帮助。
任何人都可以分享他们在类似项目维护或引用项目(多个微处理器的嵌入式和通用代码库)方面的经验。只想了解最佳实践。
PS:语言使用 C,8/16 位微处理器,没有操作系统,只有基于定时器的批处理调度程序(裸机)
最佳答案
我有一个微 Controller ,但有几个项目是从相同的源代码编译而来的。我认为我的情况与您的类似,至少在某种程度上是这样。我的解决方案也受到了 Linux 内核的启发。
config.h
所有需要访问某些配置参数的源代码只包含一个名为 config.h
的头文件。
config.h
仅包含一行:
#include <config/project.h>
项目.h
我有几个配置头文件,每个项目一个。 project.h
由具有诸如 true
、false
或常量之类的值的宏定义组成:
#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
生成文件
通过指示编译器输出预处理器宏,可以(使用一些 sed
表达式)为 Makefile
提供相同的参数值 gprovided for a给定的项目。
关于c - 嵌入式软件可维护性-配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8723630/