首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相同的代码部分被项目模块/代码文件的很大一部分使用/执行时的设计解决方案--不同的体系结构级别

相同的代码部分被项目模块/代码文件的很大一部分使用/执行时的设计解决方案--不同的体系结构级别
EN

Stack Overflow用户
提问于 2019-04-02 11:20:33
回答 1查看 60关注 0票数 1

我想知道一个好的嵌入式sw架构师将如何选择在不同的C文件模块中使用同一部分代码的最佳选择,当这些模块处于不同的体系结构级别时。

每个模块都是一个具有内部和外部函数的文件,其对应的.h文件具有公共函数声明。

我有1)低级模块,2)中级模块,3)高级模块,4)应用程序级模块。4)调用函数,3)调用函数,等等。

但我已经意识到,一些函数在它们的例程的不同点执行相同的指令。如果某些例程中的一部分代码也存在于大约2)和3)模块的例程中,那么进行良好和高效的代码体系结构设计的最佳选择是什么?

我的第一个想法是将指令集打包到公共function_x中,并在头文件中声明它,以便调用上层模块函数。作为建筑师,我学到了:

  1. 要将头文件file_x.h作为模块API来看待,并将其用于其他和高级文件(模块之间的唯一接口通信)。
  2. 如果将API函数用作实现它们的同一个模块file_x.c中的内部函数,则这不是一个好的设计。
  3. ie: 4)模块不能直接与模块API通信。模块函数只能调用模块API函数,模块函数只能调用模块函数;因此,模块函数只能调用1)模块函数。

事实上,我继承了一个旧的项目,他们通过数字输出编写了一个字节,通过串行总线将字节发送到一个测斜仪。但是他们已经实现并声明了相同的函数,在每个模块/文件中使用与内部函数相同的名称。还有一些时候,我发现他们在其他例程中重写了这段代码,在其他例程中,我只调用例程而不是。我觉得可以改进一下。

因此,我的怀疑是:

  1. 一个很好的设计可以将指令打包到一个模块级别的函数中,然后从其余的级别模块中得到调用吗?
  2. 如果2)级模块也打包了1)级模块函数,给出不同的名称并将其带到API头上,那么是否更好呢?
  3. 如果我也在不同的模块中使用代码,但它们属于相同的模块级别,该怎么办?
  4. 如果相同的函数需要作为内部函数使用,同时也需要被其他文件作为公共函数调用,您将如何面对设计。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-02 12:11:06

一些暗示和经验(不是决定性的答案)。

实用程序函数可以打包在一个或多个源代码级的“库”C文件中。它们是实用的,所以不是特定于硬件的,而且只实现重复的任务。例如,strcmp是一个实用函数。您还可以提供这些作为真正的对象库,您可以分发给开发人员/团队。

数据结构及其操作可以在它们自己的模块(C文件)中实现.例如,Btree或链接列表。

具体的硬件功能是您的“一级”低级功能。它们提供了一个API,没有人可以直接操作硬件,只有通过这个API。您可以“堆栈”API,提供越来越多的抽象,但您也可以看到这也是由多个级别组成的“第1级”设计。

应用程序级编码使用了前面描述的所有内容。

不要在你的水平上太教条主义。在必要时,更高级别的函数可以直接调用低级函数,而不必强迫它通过中间层。一个干净的自上而下的设计往往很难实现.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55473536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档