当我们着手做任何一件事情之前,先从几个维度考虑问题:
1.为什么要对嵌入式软件代码进行分层设计?
在大型的互联网软件中都会对软件代码进行分层设计,甚至引入了许多的设计模式的概念。但是在嵌入式软件开发中对这方面的就显得欠缺了许多,大部分的软件工程师人就停留在软件功能的实现上。可能对于熟悉代码的他来说,有没有软件分层,甚至有没有注释语句都不重要。但是对于今后接手这套代码的新人来说简直是噩梦了。
2.软件分层的好处?
3.现在有比较好的工具支持吗?
嵌入式软件开发的工具相对来说是比较落后的,暂时没找到工具支持
4.怎样做的更好?
在实际编写代码之前,先做好代码的概要设计,模块设计。
下面介绍我写的例子,代码已经上传到GitHub上,欢迎各位大佬Frok,可以一起参与到我的项目中
| 目录 | 功能 |
| app | 应用层目录 |
| bin | 编译生成的可执行文件存放目录 |
| build | 自动换编译脚本目录 |
| core | 核心管理层目录 |
| doc | 文档目录 |
| drivers | 设备相关的目录 |
app文件夹 :
| app | 功能 |
| main.c | 主程序 |
| gsm/gsm_test.c | gsm设备应用层代码文件 |
| gsm/gsm_test.h | gsm设备应用层代码头文件 |
core 文件夹:
| core | 功能 |
| dev_operations.c | 核心层源文件 |
| dev_operations.h | 核心层头文件 |
drivers文件夹:
| drivers | 功能 |
| gsm/gsm_drivers.c | gsm设备相关源文件 |
| gsm/gsm_drivers.h | gsm设备相关头文件 |
我的大致思路是将软件分成三层:
设备相关层调用核心管理层的接口注册设备操作接口。应用层调用核心管理层的接口操作设备,核心层接收应用层的请求调用具体的驱动注册上来的操作设备接口。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...