IO端口和IO内存的区别及分别使用的函数接口
时间:11-23
来源:互联网
点击:
- ddr));
- }
- #defineVERIFY_PIO(port)BUG_ON((port&~PIO_MASK)!=PIO_OFFSET)
- #defineIO_COND(addr,is_pio,is_mmio)do{
- unsignedlongport=(unsignedlong__force)addr;
- if(port
- VERIFY_PIO(port);
- port&=PIO_MASK;
- is_pio;
- }else{
- is_mmio;
- }
- }while(0)
- 展开:
- unsignedintfastcallioread8(void__iomem*addr)
- {
- unsignedlongport=(unsignedlong__force)addr;
- if(port<0x40000UL){
- BUG_ON((port&~PIO_MASK)!=PIO_OFFSET);
- port&=PIO_MASK;
- returninb(port);
- }else{
- returnreadb(addr);
- }
- }
七、总结
外设IO寄存器地址独立编址的CPU,这时应该称外设IO寄存器为IO端口,访问IO寄存器可通过ioport_map将其映射到虚拟地址空间,但实际上这是给开发人员制造的一个“假象”,并没有映射到内核虚拟地址,仅仅是为了可以使用和IO内存一样的接口访问IO寄存器;也可以直接使用in/out指令访问IO寄存器。
例如:Intel x86平台普通使用了名为内存映射(MMIO)的技术,该技术是PCI规范的一部分,IO设备端口被映射到内存空间,映射后,CPU访问IO端口就如同访 问内存一样。
外设IO寄存器地址统一编址的CPU,这时应该称外设IO寄存器为IO内存,访问IO寄存器可通过ioremap将其映射到虚拟地址空间,然后再使用read/write接口访问。
IO端口IO内存函数接 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)