新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Linux系统的多种串行总线统一接口的实现

基于Linux系统的多种串行总线统一接口的实现

作者:时间:2012-08-10来源:网络收藏

2.1 注册一个新设备号
首先可为定义一个新的设备号240,而且以后注册的子设备都以此为主设备号。假如现在注册了一个1-Wire和一个I2C,那么,它们两者的主设备号都为240,而次设备号不同。如果1-Wire的次设备号为0,而I2C的次设备号为1,那么就可将两条总线区分开来了。此时的程序如程序片段一所示。
程序片段一:
e.JPG
2.2 设备
为了的接口,有必要定义一个的字符设备接口buses_ops,应用程序访问总线都通过这个接口,这样,所讨论的统一接口问题也就了。该接口的主要函数成员如程序片段二所示。
程序片段二:
f.JPG
g.JPG
应用程序打开设备的时候,利用子设备号可以找到总线对应的底层适配器,也就是说,子设备号兼具了适配器索引的功能,其具体如程序片段三所示。
程序片段三:
h.JPG
事实上,buses_dev是设备层和适配器层的桥梁,在open操作里被赋值给文件指针的私有数据域。那么,在读与写函数中,就可以反其道而行,通过文件指针的私有数据域就可获得buses_dev数据结构体。
2.3 适配器接口层
适配器负责对底层数据的操作,由于不同的总线之间存在共性,所以,一般来说,它们都包含了单字节读、单字节写、多字节读、多字节写以及一些特殊控制。综上所述,该数据结构如程序片段四所示。
程序片段四:
i.JPG
linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭