ssize_t (*read) (struct file *, char *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
int (*readdir) (struct file *, void *, filldir_t);
unsigned int (*poll) (struct file *, struct poll_table_struct *);
int (*open) (struct inode *, struct file *);
int (*release) (struct inode *, struct file *);
int (*fsync) (struct file *, struct dentry *);}
I/O服务子程序
通过已注册在系统/dev目录下的设备文件,把设备映射为一个特别文件,其它程序使用这个设备的时候,只要对此特别文件进行I/O操作就可以了。当用户调用时,因为进程的运行状态由用户态变为核心态,地址空间也变为核心地址空间。此时,read、write中参数buf指向用户程序的私有地址空间,所以不能直接访问,必须通过memcpy_fromfs、memcpy_tofs系统函数来访问用户程序的私有地址空间。
结语
鉴于USB的诸多优点和灵活的数据传输方式,嵌入式USB设备必将在信息家电、工控等领域得到更广阔的应用。本文从硬件接口设计和驱动程序编写两个方面对嵌入式设备中USB的设计做了简要的介绍,研究成果已经用在基于USB总线的智能家居网络中,测试结果表明该接口运行正常,数据传输等各方面均达到了技术标准要求
上一篇:FPC软性电子线路板的相关术语