Linux内核访问外设I O资源的方式.pdfVIP

  1. 1、本文档共10页,可阅读全部内容。
  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内核访问外设I O资源的方式

努力成为 linux kernel hacker 的人李万鹏原创作品,为梦而战。转载请标明 出处 /woshixingaaa/archive/2011/05/15/6421954.asp x 首先介绍一下 I/O 端口和 I/O 内存。 1. I/O 端口:当一个寄存器或内存位于 I/O 空间时,称其为 I/O 端口。 2. I/O 内存:当一个寄存器或内存位于内存空间时,称其为 I/O 内存。 再来看一下 I/O 寄存器和常规内存的区别:I/O 寄存器具有边际效应(side effect ),而内存操作则没有,内存写操作的唯一结果就是在指定位置存贮一个 数值;内存读操作则仅仅是返回指定位置最后一次写入的数值。何为边际效应 呢?就是读取某个地址时可能导致该地址内容发生变化。比如很多设备的中断 状态寄存器只要一读取,便自动清零。 现在来看一看如何在 Linux 驱动程序中使用 I/O 端口和 I/O 内存。 使用 I/O 端口的步骤: 1. 申请 2. 访问 3. 释放 申请 I/O 端口: 在尚未对这些端口进行申请之前我们是不应该对这些端口进行操作的。内核为 我们提供了一个注册用的接口: Object 46 1. #include linux/ioport.h 2. struct resource *request_region(unsigned long first, unsigned long n, const char *name); Object 47 这个函数告诉内核,我们要使用起始于 first 的 n 个端口,参数 name 应该是设 备的名称。如果分配成功,则返回非 NULL。如果 request_region 返回 NULL , 那么我们就不能使用这些期望的端口。 访问 I/O 端口: 访问 I/O 端口时,多数硬件都会把 8 位,16 位和 32 位的端口区分开。因此, Object 67 语言程序中必须调用不同的函数来访问大小不同的端口。 1. unsigned inb(unsigned port); Object 48 2. void outb(unsigned char byte, unsigned port); 字节(8 位宽度)读写端口。 1. unsigned inw(unsigned port); 2. void outw(unsigned short word, unsigned port); 读写 16 位端口。 Object 49Object 53 Object 68 Object 10Object 11Object 12Object 13Object 14Object 15Object 16Object 17Object 18Object 21Object 22Object 23Object 24Object 25Object 27Object 28Object 29Object 30Object 31Object 32Object 33Object 34Object 35Object 1Object 2Object 3Object 4Object 5Object 6

文档评论(0)

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

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

1亿VIP精品文档

相关文档