|
最近在做一个项目,用到了多个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;
用这两个数据结构来屏蔽不同的设备驱动之间的差异,这个思路很好。但具体怎么操作?文章中没有细说,所以在此希望有高手能提供此相应的资料,为大家作贡献!!
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|