【问题标题】:Is using the vendors libary with bitfields for mapping register a good idea?使用带有位字段的供应商库来映射寄存器是个好主意吗?
【发布时间】:2021-02-12 17:19:57
【问题描述】:

对于 TLE985x,英飞凌使用位域来映射其库中的寄存器。 由于我是嵌入式编程的新手,因此我阅读了有关位域的信息。许多文章都提到了位域的不良影响。现在的问题是,当位域有些糟糕时,英飞凌为什么要在他们的库中使用它?

感谢您的帮助

【问题讨论】:

  • 这会邀请基于意见的答案,这被认为不适合 SO。这个问题的真正答案可能只有英飞凌的程序员知道。如果我推测,我会说位域的大多数问题来自不同编译器和平台之间的不兼容。如果代码是为特定平台和单一编译器编写的,则没有太多理由避免使用位域。

标签: c embedded infineon


【解决方案1】:

是使用供应商提供的默认寄存器映射还是推出您自己的映射几乎取决于项目。如果您对可移植性和通用源代码质量要求较高,则必须制作自己的寄存器映射。

可以在此处找到有关该主题的一些讨论:How to access a hardware register from firmware? 正如该帖子中所讨论的,供应商推出他们自己的自定义、糟糕的寄存器映射有几个原因:

  • 使调试寄存器映射更容易,尤其是在使用不支持特定部件的蹩脚调试器时(例如各种 Eclipse 风格的调试器)。像 Lauterbach、iSystem、Crossworks 等高质量的调试器确实有部分支持,无论这些寄存器在 C 源代码中是如何声明的,您都可以在其中很好地观察寄存器。
  • 硅供应商绝对没有理由让您更轻松地从他们的硅移植到其他硅。恰恰相反。注册地图当然是非常不便携的。但同样,工具供应商不希望您将同一芯片移植到另一个编译器。
  • 硅供应商在编写固件方面是出了名的无能。只要每个人都记得,情况就一直如此。我不会在这里指出任何特定的供应商,他们在这方面都非常糟糕。

但是,对于英飞凌,您可以做的就是问:“嘿,伙计们,您似乎非常喜欢汽车电子产品。汽车行业自 1998 年以来一直在使用 MISRA-C。为什么您仍然不使用?” 2020 年不提供符合 MISRA-C 标准的库?您不希望汽车客户使用您的产品吗?有很多有趣的喃喃自语的回应。

【讨论】:

    猜你喜欢
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2019-02-17
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多