简单嵌入式系统软件架构

本文探讨了简单嵌入式系统的硬件层软件架构,旨在通过层次划分提高维护性和统一管理。作者分析了硬件层设计的目的,强调了模块间的独立性和抽象的重要性。通过案例说明了如何设计IO口、定时器驱动以及按键逻辑,提出了两种不同的层次架构,并分析了各自的优缺点。最后,作者分享了反思后改进的架构设计,引入了“bsp_button”模块,以提供更简洁的上层应用接口。
摘要由CSDN通过智能技术生成

本文为原创,以下链接有比较及时的更新:
https://www.yuque.com/docs/share/334f4a3d-2974-49db-8f68-4db6601a0d21?# 《简单嵌入式系统》

引言

本文描述的内容,适用范围是简单嵌入式系统。举一些可能不恰当的例子,如手环、蓝牙温湿度传感器、小家电这一类产品的软件复杂程度,在我看来,就是一个简单嵌入式系统可把控的。

基于此,提到简单嵌入式系统的软件架构,我脑海中立马浮现这样的画面:

在这里插入图片描述

看到这张图,不同的人,可能会有不同的感受:有的高手能一眼看破,能马上进行万千补充、引申;有的会心领神会,从而期待后面的内容;而有的,可能会一头雾水,或懵懵懂懂。

就本人而言,我当前的技术水平是能用代码将这张图构建的相对稳定、完整;期望有一天,我(或我们)能站在万米高空俯视这张图,一眼看破框图背后的种种玄机,轻松写意地构建出一个个优雅的嵌入式系统软件。

回归正题,为什么要进行以上框图所示的层次划分?我是这么考虑的:

关于硬件层:

一般会说,设计该层次的目的在于封装掉硬件的细节,使在其上层的软件具备跨平台的移植性。不过在我看来,想要做到这点其实非常困难。就本人所在领域(BLE芯片)的开发而言,固件工程师一般都会在芯片厂商提供的 SDK 的基础上进行开发。换芯片、换 SDK,几乎不可能只靠修改硬件层就能完成适配。

因此,在我看来,设计该层次的主要目的是为了方便维护,统一管理。通过对硬件相关的软件模块进行一定的抽象,我们能找到他们之间的一些共性:

比如,对硬件的操作,一般都会有一个初始化、工作、解初始化流程 。因此,接口设计上,会有:

void xxx_init(param);

void xxx_start(param);

void xxx_pause(param);

void xxx_deinit(param);

或者:

void xxx_init(param);

void xxx_send(param);

void xxx_recv_cb_register(param);

void xxx_deinit(param);

又比如,将片内外设的 IO 接口、外设配

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值