我想知道一个好的嵌入式sw架构师将如何选择在不同的C文件模块中使用同一部分代码的最佳选择,当这些模块处于不同的体系结构级别时。
每个模块都是一个具有内部和外部函数的文件,其对应的.h文件具有公共函数声明。
我有1)低级模块,2)中级模块,3)高级模块,4)应用程序级模块。4)调用函数,3)调用函数,等等。
但我已经意识到,一些函数在它们的例程的不同点执行相同的指令。如果某些例程中的一部分代码也存在于大约2)和3)模块的例程中,那么进行良好和高效的代码体系结构设计的最佳选择是什么?
我的第一个想法是将指令集打包到公共function_x中,并在头文件中声明它,以便调用上层模块函数。作为建筑师,我学到了:
事实上,我继承了一个旧的项目,他们通过数字输出编写了一个字节,通过串行总线将字节发送到一个测斜仪。但是他们已经实现并声明了相同的函数,在每个模块/文件中使用与内部函数相同的名称。还有一些时候,我发现他们在其他例程中重写了这段代码,在其他例程中,我只调用例程而不是。我觉得可以改进一下。
因此,我的怀疑是:
发布于 2019-04-02 12:11:06
一些暗示和经验(不是决定性的答案)。
实用程序函数可以打包在一个或多个源代码级的“库”C文件中。它们是实用的,所以不是特定于硬件的,而且只实现重复的任务。例如,strcmp是一个实用函数。您还可以提供这些作为真正的对象库,您可以分发给开发人员/团队。
数据结构及其操作可以在它们自己的模块(C文件)中实现.例如,Btree或链接列表。
具体的硬件功能是您的“一级”低级功能。它们提供了一个API,没有人可以直接操作硬件,只有通过这个API。您可以“堆栈”API,提供越来越多的抽象,但您也可以看到这也是由多个级别组成的“第1级”设计。
应用程序级编码使用了前面描述的所有内容。
不要在你的水平上太教条主义。在必要时,更高级别的函数可以直接调用低级函数,而不必强迫它通过中间层。一个干净的自上而下的设计往往很难实现.
https://stackoverflow.com/questions/55473536
复制相似问题