谈嵌入式软件分层设计

前言

当我们着手做任何一件事情之前,先从几个维度考虑问题:

  1. 为什么要做这件事?
  2. 做了能带来哪些好处?不做的后果是什么?
  3. 现在有比较好的工具支持吗?
  4. 怎样做的更好?

1.为什么要对嵌入式软件代码进行分层设计?

在大型的互联网软件中都会对软件代码进行分层设计,甚至引入了许多的设计模式的概念。但是在嵌入式软件开发中对这方面的就显得欠缺了许多,大部分的软件工程师人就停留在软件功能的实现上。可能对于熟悉代码的他来说,有没有软件分层,甚至有没有注释语句都不重要。但是对于今后接手这套代码的新人来说简直是噩梦了。

2.软件分层的好处?

  1. 代码层次感提升,简洁
  2. 各软件层专注做好一件事情
  3. 利于代码的维护

3.现在有比较好的工具支持吗?

嵌入式软件开发的工具相对来说是比较落后的,暂时没找到工具支持

4.怎样做的更好?

在实际编写代码之前,先做好代码的概要设计,模块设计。

下面介绍我写的例子,代码已经上传到GitHub上,欢迎各位大佬Frok,可以一起参与到我的项目中

GitHub地址:huangwenxi

项目结构

目录 功能
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设备相关头文件

框架设计

我的大致思路是将软件分成三层:

  1. 应用层
  2. 核心管理层
  3. 设备相关层

设备相关层调用核心管理层的接口注册设备操作接口。应用层调用核心管理层的接口操作设备,核心层接收应用层的请求调用具体的驱动注册上来的操作设备接口。

你可能感兴趣的:(Linux+arm)