在IA32 Manuals-Basic Architecture中, 对于IO有二种寻址方式:1, IO Port(IO Address Space); 2,
Memory-Mapped IO.
1) IO Port方式.
使用体系结构相关的in/out指令来访问IO端口,并且能够保证每一条指令都在下一条之前完成,也就是in/out
指令是自然有序的。 一共有2^16(64K)个单独的8-bit端口,编号从0到FFFFH(其中从0F8H到0FFH被保留),任意两个连续
的8bit端口可以被看做是一个16bit端口,同样,任意4个连续的8bit端口可以被看做是一个32bit端口。
2) IO Address Space方式.
可以使用任意的mov、and、or等指令来访问,就象访问主存一样。
对于Linux内核来说,若想访问io ports,需要request_region来分配io ports, 返回之后的struct resource
就包含了start和end,在此之间的区域可以用in/out指令来访问。 /proc/ioports记录了目前已分配的所有IO端口。
对memory-mapped io来说,需要request_mem_region来分配IO内存(也就是外设的寄存器或者存储体),它也是
返回一个struct resource结构,其中有start和end字段,可以用来作为ioremap函数的参数。 对request_mem_region分配
的IO内存进行了ioremap之后,就可以在程序中象访问普通内存区那样来访问它们了。
IO Ports和IO Momory之间的转换,可以用ioport_map/ioport_unmap来实现。
Quote : http://linux.chinaunix.net/bbs/viewthread.php?tid=890288&page=1#pid6311319
分享到:
相关推荐
在 X86 架构中,IO 地址空间分为两个部分:输入/输出端口(I/O Port)和内存映射寄存器(Memory-Mapped Register)。输入/输出端口是 CPU 与外围设备之间的通信接口,每个设备都有其唯一的 IO 端口地址。内存映射...
IO完成端口(IO Completion Ports)是一种高级的异步IO机制,它允许应用程序将多个IO操作关联到一个端口上,从而实现对多个IO操作的统一管理和高效处理。与APC相比,IO完成端口提供了更高的灵活性,因为它不受限于...
这些寄存器被分配到不同的端口(Ports),例如PortA、PortB、PortC和PortD。每个端口都有8个位(bit),分别对应微控制器的8个物理引脚。这些位可以独立设置为输入或输出,并可进行读写操作。 1. PortA (0x20-0x27)...
RapidIO ports at 10 Gbits/second each and 12 SpaceWire links at 320 Mbits/second each are provided to the SpaceVPX backplane. An optional daughter card with PCI, RapidIO, and/ or SpaceWire interfaces ...
基于事件驱动循环的网络IO编程框架,小编英语学的不好,直接把英原文复制出来,如下: Some of the specialties of libev not commonly found elsewhere are: - extensive and detailed, readable documentation ...
Function: ** 1. Memory–Maped Registers (MMR) are mapped to data–page memory ** (Address: 0x0000 to 0x005F). Note that the assembly tool ... Addresses for C5402 DSK on–board IO ports are defined.
- 解释: `/proc/ioports` 文件包含系统中所有设备的I/O端口信息。 - 示例输出: ``` 00000000-00000fff : IO 00001000-00001fff : IO 00002000-000020ff : IO ... 2. **查看设备的所有分区** - 命令: `cat /...
3. 查看设备 IO 端口:`cat /proc/ioports` 这个命令可以查看系统的设备 IO 端口信息,包括 端口号、设备名称等信息。 4. 查看内存信息:`cat /proc/meminfo` 这个命令可以查看系统的内存信息,包括内存使用情况...
- `io_ports.vhd`: I/O端口的描述。 - `bus_ctrl.vhd`: 总线控制逻辑的源码。 - `clock_reset.vhd`: 时钟和复位模块的定义。 - `test_benches.vhd`: 用于功能仿真的测试平台。 - `package.vhd`: 定义常量、类型和子...
6. `IO`端口分配:通常在`/proc/ioports`文件中可以查看系统中I/O端口的分配情况,这对于调试硬件设备或软件驱动程序很有用。 7. `xorg.conf` 文件:这是X Window System的配置文件,包含了显卡、显示器、鼠标等...
- `cat /proc/ioports`: 显示 I/O 端口信息。 - `cat /proc/loadavg`: 显示平均负载。 - `cat /proc/meminfo`: 显示内存信息。 - `free`: 显示系统的内存使用情况。 - `dmidecode`: 查看硬件信息。 - `...
在VB.NET中,我们可以使用System.IO.Ports命名空间中的SerialPort类来实现串口通信。首先,需要创建一个SerialPort对象,设置相关的通信参数,如波特率、数据位、停止位、校验位等。例如: ```csharp Dim ...
- 使用`System.IO.Ports`命名空间下的`SerialPort`类来处理串口操作。 - `SerialPort`类提供了打开、关闭串口,设置波特率,读写数据等一系列方法。 3. **Omron PLC通信协议**: - Omron PLC通常使用其专有的...
- `cat /proc/ioports`:查看设备 IO 端口。 - `cat /proc/loadavg`:查看系统负载。 - `cat /proc/meminfo`:查看内存信息。 - `cat /proc/mounts`:显示当前系统所安装的文件系统信息。 - `free`:查看系统...
3. **GMCH(Graphics Memory Controller Hub)**:图形内存控制器中枢,连接CPU和内存,处理图形数据流。 4. **ICH5(I/O Controller Hub)**:I/O控制器中枢,负责管理输入输出设备,如硬盘、USB、串口等。 5. **...
- **示例**: `cat /proc/ioports` 显示系统中设备的 I/O 端口范围。 - **`cat /proc/loadavg`**: 查看系统负载。 - **示例**: `cat /proc/loadavg` 显示平均负载值。 - **`cat /proc/meminfo`**: 查看内存信息。...
4. 实验五:MEMORY CONTROLLER,探索内存控制器的配置和内存访问。 5. 实验六:NAND FLASH CONTROLLER,涉及非易失性存储器NAND Flash的读写和管理。 6. 实验七:UART,通过通用异步收发传输器进行串行通信。 7. ...
- **Flash Memory**: 8KB - **RAM**: 256 bytes - **I/O Ports**: 32个双向I/O口 - **定时器/计数器**: 3个16位定时器/计数器 - **串行通信接口**: 全双工UART ### 2. DS1307实时时钟模块 **DS1307**是一款低功耗...
登记后,该段I/O端口将不再能被其他程序占用,并且在`/proc/ioports`文件中可以查看到已登记的I/O端口。登记后的I/O端口可以安全地使用`inb()`, `outb()`等函数进行读写操作。 除了I/O端口管理,驱动程序还需要提供...