Linux内核外设IO寄存器与IO mem读写函数总结

本文总结了Linux内核中对外设IO寄存器的访问方式,包括独立编址和统一编址的CPU架构。对于独立编址,介绍了直接使用汇编指令或内核辅助函数访问,以及通过ioport_map()的访问方法。而对于统一编址,讲解了通过ioremap()映射后使用read/write接口访问IO内存。同时提到了IOmem的内存映射访问方式。
摘要由CSDN通过智能技术生成

                                                                                                                         学习时间:2014/5/21

 

       外设IO寄存器地址独立编址的CPU,这时外设IO寄存器应该称为IO端口,访问IO寄存器可以ioport_map()将其映射到虚拟地址空间,但是实际上这只是给开发人员造成一个“假象”,并没有映射到内核虚拟地址,仅仅是为了使用和IO内存一样的接口访问IO寄存器;当然,也可以直接使用in/out指令访问IO寄存器。如:X86架构处理器。这一类的访问有两种方式;

(1)针对没有使用ioport_map()处理的IO端口的访问:

       直接使用汇编指令in、out、ins、outs 访问或者内核封装的辅助函数inb、inw、inl、outb、outw、outl(以及它们对应的变种函数指令inb_p、insb等)(b、w、l分别代表一个字节(8位),一个字(16位),一个长整型(32位))来访问。

(2)针对使用ioport_map()处理的IO端口的访问:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值