IO端口、IO内存、IO空间、内存空间的含义和联系

本文介绍了IO空间和内存空间的区别,指出IO端口是通过特定函数如inb()进行数据读写,而IO内存则使用ioread8等函数进行操作。外部设备通过寄存器或内存与CPU通信,这些寄存器可以映射到IO空间或内存空间。使用IO内存操作函数能确保平台安全并优化性能。
摘要由CSDN通过智能技术生成

    1,IO空间:X86一个特有的空间,与内存空间独立的空间,同样利用IO空间可以操作数据,只不过是利用对应的IO端口操作函数,例如inb(), inbw(), inl(); outb(), outw(), outl()等。

    2,内存空间:内存地址的寻址范围,例如32位操作系统内存空间为2的32次幂,即4G。

    3,IO端口:当外部寄存器或内存映射到IO空间时,即只能用IO端口操作函数进行数据读写,称为IO端口。

    4,IO内存:当外部寄存器或内存映射到内存空间时,即使用访问内存的方式对外部寄存器或者内存进行读写操作。

    从上面定义可以看出,外部设备只能通过设备上的寄存器或者内存(SRAM?DRAM?)与CPU进行通讯,外部设备的寄存器可以是IO端口(映射到IO空间),也可以是IO内存(映射到地址空间)。当映射到IO空间时,必须使用对应的IO操作函数;映射到内存空间时就要注意要使用特定的IO内存操作函数,最好不要直接使用指针操作,IO内存操作函数有如下:

    IO内存读函数:

    unsigned int ioread8(void *addr);

    unsigned int ioread16(void *addr);

    unsigned int ioread32(void *addr);

    IO内存写函数:

    unsigned int iowrite8(u8 value, void *addr);

    unsigned int iowrite16(u8 value, void *addr);

    unsigned int iowri

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值