0

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

感谢您的帮助

4

1 回答 1

2

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

可以在此处找到有关该主题的一些讨论:如何从固件访问硬件寄存器?正如在那篇文章中所讨论的,供应商推出他们自己的定制、糟糕的注册地图有几个原因:

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

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

于 2020-10-30T09:08:54.083 回答