良许Linux教程网 干货合集 嵌入式工程的文件怎么安排比较合理?

嵌入式工程的文件怎么安排比较合理?

嵌入式系统通常选择C语言作为实现语言。然而,随着代码规模的增大,会导致各种问题的出现。例如,如何有效地管理众多的源文件、如何组织头文件.h和源文件.c、如何存放说明文档和源文件,以及如何考虑项目的移植性。

以LwIP作为案例分析,我们可以学习一个经典的文件组织架构。LwIP是一个轻量级的TCP/IP协议栈,常用于嵌入式系统中。

image-20230925224517750
image-20230925224517750

从图1可以看到,设计者一开始就考虑了主代码与移植代码分离:lwip是主代码,LwIP_Port是移植代码,当需要移植LwIP时可以让用户只关心LwIP_Port目录下的文件,减少工作量。

LwIP_Port下有两大目录,arch目录保存LwIP移植到不同OS下时该修改的文件,ethernetif保存LwIP移植到不同的网络适配器时该修改的文件。

image-20230925224530441
image-20230925224530441

主代码目录下,首先是doc目录,它保存LwIP的说明文档,其次是src目录,它保存LwIP的主文件。主文件按不同的功能又分成4部分:api是用户调用接口,core是核心文件,include是整个系统的头文件存放区,netif处理底层网络接口。

image-20230925224535029
image-20230925224535029

接下来再来看看.h头文件是如何组织的,从图4可以看出,所以的头文件都存放在LwIP\lwip\src\include下,头文件与.C源文件还具有良好的对应关系,这种统一存放方便查找和维护。

image-20230925224539164
image-20230925224539164

把头文件集中存放的另一个好处是便于代码编译,当代码放置于编译环境(常见为IED环境)中可以设置预编译路径,告诉编译器头文件在什么地方。设当前编译环境为IAR,以图4为例可以设置预编译宏指令,在工程的Option下,选择C/C++ Compiler下的Preprocessor,添加

$PROJ_DIR$ \Lwip\lwip\src\include

这样一来,.C源文件的如下语句就能让编译器找到对应的头文件。

#include "lwip/def.h"

因为编译器会将上述语句的包括路径解释成:(是工程当前目录)

#include $PROJ_DIR$ \Lwip\lwip\src\include\lwip\def.h

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部