嵌入式linux综合实践项目.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式linux综合实践项目

嵌入式Linux综合实践项目:汽车电子CAN总线嵌入式Linux驱动及综合应用实践指导书实践一、CAN总线驱动1、实践目的巩固对嵌入式Linux驱动程序的框架及虚拟文件系统的理解。2、实践内容1, 为这一程序写一个测试程序,从传感器接收数据。2,分析例子程序,画出程序的结构,说明程序的活动。3、实践原理3.1文件与设备的关系在Linux中文件是一个很重要的结构,表1-1就是文件的结构定义。从Linux操作系统的角度,设备是被抽象成为设备文件的,也就是说在程序中对于设备的操作就是对设备文件进行操作。struct file {structlist_headf_list;/*a list of all opened files*/structdentry *f_dentry;/*pointer to dentry*/structfile_operations *i_fop;/*pointer to file operation*/unsigned intf_uid, f_gid;/*UID&GID*/unsigned long f_version;/*version*/structaddress_spacei_mapping;/*buffer queue is in this data structure*/…… }; 表1-1 struct file的定义列出/dev/目录下的设备文件如表1-2所示。[root@localhost dev]# ls–lcrw 1 root root 14, 12 10-28 19:16 adspcrw 1 root root 14, 4 10-28 19:16 audiocrw 1 root root 14, 20 10-28 19:16 audio1表1-2 设备文件示例以C标识属性的为字符型设备,以B为标识属性的为块设备。以Hda1为例,12为主设备号,3为次设备号。所谓主设备号标识设备的应用类型,如硬盘这类设备的主设备号都为12,次设备号表示在这一类设备中该设备的序号。通过主设备与次设备号就可以惟一地标识一个设备。3.2虚拟文件系统虚拟文件系统(VFS:Virtual File System)是Linux文件系统的接口。Ext2、FAT32等文件系统实现自已的数据组织逻辑,通过这些接口挂载到虚拟文件系统中,虚拟文件系统是其它文件系统加载的框架。因此虚拟文件系统需要有管理这个框架的数据结构,以及支持“上架”“下架”的函数。VFS的数据结构主要有:超级块(superblock),Inode,File,dentry,描述每个打开文件或设备的file结构,描述文件系统类型的file_system_tyoe结构、记录已安装文件系统信息的vfsmount结构,记录设备驱动程序的chrdevs、blkdevs等。对VFS的操作主要有:文件系统的注册与安装,在使用文件、目录与设备之前对inode的获取,文件系统缓存的管理。其中文件系统缓存的管理包括目录项缓存、inode缓存与Buffer cache.在Linux中设备是抽象成设备文件的,因而对于设备的操作实际上是对于文件的操作。嵌入式系统中往往都要写内核模块或设备驱动将设备映射成设备文件,然后在应用程序中按照该驱动程序实现的文件操作函数对该设备进行控制,其中要实现的文件操作函数是虚拟文件系统中structfile_operation中定义的函数,如表1-3所示。structfile_operations {struct module *owner;loff_t (*llseek) (struct file *, loff_t, int);ssize_t (*read) (struct file *, char *, size_t, loff_t *);ssize_t (*write) (struct file *, const char *, size_t, loff_t *); unsigned int (*poll) (struct file *, structpoll_table_struct *);int (*ioctl) (structinode *, struct file *, unsigned int, unsigned long);int (*mmap) (struct file *, structvm_area_struct *);int (*open) (structinode *, struct file *);int (*flush) (struct file *);int (*release) (structinode *, struct file *);int (

文档评论(0)

jvdodnnv002 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档