嵌入式框架

一 表驱动法:从lcd液晶菜单提炼出的驱动结构,自定义结构体(回调函数,处理及流转)菜单结构,然后静态的结构体数组表示不同页面。但静态数组不能动态增减,于是就有了变体链表结构,但链表的遍历很慢(没有数组下标快),所以进一步的就有了链接式。

二 RIL(Radio Interface Layer)款专门为嵌入式平台开发的无线通信模组(GSM/GPRS/CatM1/NB-Iot)管理软件,目前已支持EC21、BG96、 HL8518等模组,内置常用组件,如带断点续传功能的HTTP文件下载、TFTP传输、MQTT等

三 BabyOS,一个开源驱动设备管理框架

四 嵌入式设计的设计模式:

23种设计模式偏向于可复用的面向对象的软件,而结构化嵌入式C语言,可强制封装结构体实现类似效果,选择合适的设计模式或代码框架,将复杂软件解耦或者分层,提高代码复用度和可扩展性便于维护,当然,代价是对资源和实时性的损耗。关于线程安全(增加加临界区或者队列保护)。

硬件访问类的设计模式:主要是考虑硬件器件的更换与兼容,对业务层的封装和隔离.

  • 代理模式:类似Linux的驱动框架(通过ops操作接口(初始化,打开,关闭。读,写,配置,控制(cmd-para)),应用层采用统一的posix接口,底层直接进行ops对接,不为因为硬件型号变化函数名等需要改变内容需要重写。
 1 typedef struct
 2 {
 3    *init;
 4    *open;
 5    *close;
 6 }gsensor_ops_t;
 7 
 8 gsensor_ops_t  bma425;
 9 gsensor_ops_t  sc7a20;
10 gsensor_ops_t* p_gsensor_ops;
View Code
  • 硬件适配器模式一般用在硬件器件更换,或者软件跨平台移植:用宏进行配置(应用的配置量用宏表示,而其具体值是代替不同分类的另外宏。
  • 中介者模式(Mediator Pattern)提供一个中介类,协调处理不同类之间的通信,各子类之间不直接通信(优点可降低多个元素之间的通信复杂性松耦合,使代码易于维护;缺点随着合作者数量的增加会变得复杂难以维护,中介者代码庞大):中介包含各个合作者及决策;合作者指定属于那个中介,并有收发信息2个操作
  • 观察者模式:比较类似发布--订阅模式,服务器只需要周期更新数据,众多关注该数据的观察者,每当数据更新就进行指定的动作。适合于将传感器采样或者某些周期更新的数据,转发给关注它的元素。具体实现就是:定义结构体成员为一个函数指针,众多的观察者就是结构体数组,订阅就是将具体的操作函数赋给结构体数组的某个成员,取消订阅就是将数组成员赋值为null.服务器发布更新就是执行具体的各个成员回调函数。
  • 消抖过滤模式:类似按键处理,去除干扰,识别抖动和具体的按键动作区分。
  • 中断模式:进行异步响应
  • 轮询模式:速度匹配,主要用于周期性的变化,或者变化很缓慢的状态,定时器轮询是特殊的中断-查询模式(譬如状态机)。

并发下的模式(OS提供):

  • 临界区模式:消除竞争,保护的不是任务而是资源。但注意不能长时间垄断。
  • 守卫模式:共享资源的申领使用方式,令牌锁
  • 队列缓冲模式:消除生产消费方式按共享资源操作造成的冲突,具有动作的延迟缓交,按顺序执行,但也有类似紧急处理的插入队列头的操作
  • 汇合模式:事件组/集,进行按事件的逻辑运算决定是否执行。
  • 信号:异步类似中断
  • 完成量:有先后顺序
posted on 2022-06-01 17:31  杰瑞鼠  阅读(241)  评论(0编辑  收藏  举报