为大型项目编写固件时应注意的事项

considerations that should be observed for writing firmware for big projects

我的问题可能看起来很笼统,但我真的需要你的帮助。我是一名新手嵌入式软件工程师,我用 C 和 C++ 编程语言用 TI DSC 和 STM 微控制器完成了一些小项目。但现在我要开始为一个大项目编写固件,我正在寻找一种在实施之前为我的固件建模的方法 it.actually 我有两个问题:

1.I想知道专业的嵌入式软件工程师在开始编写固件之前都做了什么?(对于固件建模,是使用适合固件的rational rose还是企业架构,我认为这两个,适用于 IT 和软件应用程序而非固件)

2.what写固件时必须遵守的重要规则? 例如我考虑过:

a.Never曾经将大量代码放入中断服务例程

b。永远不要用狡猾的循环忙着等待 我还应该考虑什么?

这类问题在 SO 上是题外话,但我还是会回答,因为在任何地方都没有真正的论坛来讨论这些非常重要的考虑因素。通常它是这样的:

写下规范和要求。花一些时间关注产品,而不是技术细节。 UML "use-cases" 可能很方便,但常识也同样有效。确保规范是一个动态文档,可以在必要时进行修改。

然后使用 OO 模型进行程序设计(称其为 classes/code modules/translation 单元或任何您想要的)。写下程序需要哪些代码模块,确保这些符合规范——理想情况下,每个需求都会导致特定的代码(稍后会导致对该代码的特定测试)。然后关注不同模块之间的依赖关系:这应该是一个 "top-to-bottom" 依赖树,其中驱动程序不依赖于 HAL,不依赖于调用者等等。用笔和纸画出这棵树。花哨的 UML 可以,但不是必需的。

您需要尽早考虑可移植性。代码应该在项目之间移植吗? (很常见)编译器之间? (相当普遍)平台之间?根据所需的可移植性级别,您可以在设计上作弊并跳过一些 HAL。然而,将驱动程序与应用程序分开几乎总是一个好主意。

关于"important rules"这些与程序设计阶段无关。相反,这些应该在您的编码标准文档中。最好是用于每个项目的公司标准。它应该着重于禁止各种不良做法,此外还应包含风格指南。对于嵌入式系统,我强烈建议将本文档基于 MISRA-C,然后根据需要添加自定义规则(例如 "keep ISR code minimal"),然后在此基础上添加样式指南。请注意,编写此编码标准本身就是一个项目。