打印
[STM32]

通用嵌入式驱动框架,大神们讨论下这方面的思路

[复制链接]
1414|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
s1j2h3|  楼主 | 2014-10-7 19:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做一个项目,用到了多个I2C,RS232,SPI等总线的外设,当然,对每个设备都得编写一个设备硬件驱动,然后是设备应用层程序,再在其上加一个系统层程序。当然,这只是一个层次较低的嵌入式程序框架。

某日,突然在网上看到一篇**,《嵌入式实时操作系统μC/OS-II下通用驱动框架的设计与实现》,其中提到了两个数据结构
typedef struct {
  INT8U deviceName[UDF_MAX_NAME];    //设备名
  INT8U deviceType;      //1—块设备, 2—字符设备;
  INT8U canShared;       //0---不可共享使用, 1—可共享使用
  INT16U openCount;      //对于共享设备,此字段为打开次数计数;
  UDFOperations op;       //设备驱动模块提供的设备操作函数表;
  } UDFFramework;

typedef struct {
  INT32S (*devOpen)(void *pd);
  INT32S (*devRead)(INT8S *buffer, INT32U blen, INT32U lenToRead, INT8U waitType);
  INT32S (*devWrite)(INT8S *buffer, INT32U lenToWrite, INT8U waitType);
  INT32S (*devIoctl)(INT32U too, void *pd);
  INT32S (*devClose)(void *pd);
  } UDFOperations;

用这两个数据结构来屏蔽不同的设备驱动之间的差异,这个思路很好。但具体怎么操作?**中没有细说,所以在此希望有高手能提供此相应的资料,为大家作贡献!!

相关帖子

沙发
s1j2h3|  楼主 | 2014-10-20 17:00 | 只看该作者
没人知道么? 自己顶一下

使用特权

评论回复
板凳
yamato2011| | 2014-10-29 12:42 | 只看该作者
参考Linux的驱动架构吧。

使用特权

评论回复
地板
s1j2h3|  楼主 | 2015-12-24 16:41 | 只看该作者
Linux的驱动架构太复杂了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

112

帖子

4

粉丝