【问题标题】:Config Handling in structural configuration using C language使用 C 语言进行结构配置中的配置处理
【发布时间】:2017-12-27 09:38:52
【问题描述】:

在结构中存储配置的小型嵌入式系统上工作。

现在假设当前配置结构有 5 个成员,未来会增加或减少,过去可能只有 3 个成员。

因此,在升级和降级固件时,读取配置变得越来越困难,因为我们不知道结构中有多少成员。

请提出处理方法

【问题讨论】:

  • 您可以将版本添加为结构的成员并相应地假设字段数
  • 你真的会降级固件吗?
  • 不,我不会降级硬件。仅限软件
  • 当你重新编译它时一切正常,如果你在编译域中使用结构,那么这就是你的问题。不要那样做。
  • 如果您确保在最后扩展结构并小心不要删除字段,您可以使用memset 初始化结构和memcpy 从配置空间复制到内存中。不过,这仅涵盖升级。

标签: c embedded embedded-linux


【解决方案1】:

这可以通过多种方式完成。

一种方法是将配置值存储为键:值对。 例如:

"biasVoltage1":0.45
"biasVoltage2":0.52
"nextKey":value

首先你用默认值初始化你的结构成员。 然后你一一阅读键:值对。 如果通过运行 SW 版本知道键,则解析值并将其写入结构。 如果运行 SW 版本时不知道某个键,则忽略该值。

通过这种方式,每个 SW 版本都将准确获取它所知道的配置值(如果缺少键,则为默认值)。

键不必是如上所述的字符串。另一种方法是枚举键。

【讨论】:

    【解决方案2】:

    绝对不要将您的配置存储为二进制文件,例如结构的内存转储;这将使您在中期进入维护地狱。推荐阅读:

    http://www.catb.org/esr/writings/taoup/html/textualitychapter.html

    一种常见的模式是将配置数据存储在INI style files 中,几乎每种使用的编程语言都存在许多加一实现,因此无需自行开发。 /etc 中的大多数配置文件都是这种做法的一个很好的例子。

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2020-02-16
      • 2022-01-22
      • 2011-01-16
      • 1970-01-01
      相关资源
      最近更新 更多