嵌入式Linux下USB驱动程序的研究与开发.pptVIP

嵌入式Linux下USB驱动程序的研究与开发.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式Linux下USB驱动程序的研究与开发 指导老师 郭卫锋 03级软件2班 何瓛 一 本课题设计(研究)的目的: 源代码开发的Linux以其自身的优势,吸引了众多开发商的目光,成为嵌入式操作系统的新宠。 由于其源代码的开放,驱动的添加一般不用开发者从头做起,主要是修改并编译相关驱动文件,以适合自己需要。 二 目前设计(研究)中公认的重点与难点: 设备驱动属于Linux内核的部分,编写Linux设备驱动需要有一定的Linux操作系统内核基础; 编写Linux设备驱动需要对硬件的原理有相当的了解,大多数情况下是针对一个特定的嵌入式硬件平台编写驱动的; Linux设备驱动中广泛涉及到多进程并发的同步、互斥等控制,容易出现bug; 由于属于内核的一部分,Linux设备驱动的调试也相当复杂。 设计(研究)中我所遇到的的重点与难点: 1.尚且不太熟悉嵌入式系统进行应用程序的开发的工具与环境. 2. 开发者需要对嵌入式即插即用硬件设备有基本的了解. 3:若 USB 设备可以在任何时间点从系统中取走(如U盘、USB读卡器、MP3或数码相机),即使程序目前正在访问它。USB驱动程序必须要能够很好地处理解决此问题,它需要能够切断任何当前的读写,同时通知用户空间程序:USB设备已经被取走。 三 Linux上搭建C/C++IDE开发环境 1.进行开发之前,首先要有合适的开发环境.而首先必须充分地熟悉了Redhat linux 操作系统. 2.开发者可以使用 GLADE 做界面,用 emacs 或 vi编辑器 等等编辑程序,再用终端模拟器编辑开发项目。 GLADE 仍然不能算是一个“集成开发环境”(相比VS STUDIO来说) 。 而Anjuta,一种最近新兴的Linux开发环境,可以将所有这些繁杂零散的任务都在一个统一的、集成的、自然而然的环境下完成,是Linux下第一个正式的IDE,而非传统的记事本编辑器. 四 LINUX下最基本的编译命令 运行 gcc Linux 中最重要的软件开发工具是 GCC。GCC 是 GNU 的 C 和 C++ 编译器。实际上,GCC能够编译三种语言:C、C++和ObjectC(C语言的一种面向对象扩展)。利用 gcc 命令可同时编译并连接 C 和 C++ 源程序。 gcc 的主要选项    -ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,例如 asm 或 typeof 关键词。  -c 只编译并生成目标文件。  -DMACRO 以字符串“1”定义 MACRO 宏。  -DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。  -E 只运行 C 预编译器。  -g 生成调试信息。GNU 调试器可利用该信息。 五 流行的即插即用设备与硬件 PDIUSBD12是一款性价比很高的USB器件,虽然只支持USB1.1规范,但具备本地DMA直接传输能力,可以将uClinux的驱动编译进系统内核. 整个硬件框架如下: 六 Linux设备驱动之字符设备驱动程序 Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得Windows的设备操作犹如文件一般。在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,如open ()、close ()、read ()、write () 等。 Linux主要将设备分为二类:字符设备和块设备。字符设备是指设备发送和接收数据以字符的形式进行;而块设备则以整个数据缓冲区的形式进行。字符设备的驱动相对比较简单。 六 Linux设备驱动之字符设备驱动程序 驱动程序是内核的一部分,因此我们需要给其添加模块初始化函数,该函数用来完成对所控设备的初始化工作,并调用register_chrdev() 函数注册字符设备: static int __init gobalvar_init(void) {  if (register_chrdev(MAJOR_NUM, gobalvar , gobalvar_fops))  {   //…注册失败  }  else  {   //…注册成功  } } 六 Linux设备驱动之字符设备驱动程序 与模块初始化函数对应的就是模块卸载函数,需要调用register_chrdev()的反函数 unregister_chrdev(): static void __exit gobalvar_exit(void) {  if (unregister_chrdev(MAJOR_NUM, gobalvar ))  {   //…卸载失败  }

您可能关注的文档

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档