I/O端口中的寄存器 命令 Control register Status register 状态 CPU Device's 1/0 Interface Input register 输入数据 输出数据 Output register Science and Technon 2023/7/14 Linux OS Analysis 7/105 嵌入式系统实验室 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 7/105 I/O端口中的寄存器 命令 状态 输入数据 输出数据
Linux中访问I/O端口的操作 inb、inw、inl inb p、inwp、inlp outb、outw、outl outb_p、outw_p、outl_p 1958 insb、insw、insl outsb、outsw、outsl of Science and Techa 参见io32.h的最后几个宏和宏扩展 嵌入式系统实验室 2023/7/14 Linux OS Analysis 8/105 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 8/105 Linux中访问I/O端口的操作 ❖inb、inw、inl ❖inb_p、inw_p、inl_p ❖outb、outw、outl ❖outb_p、outw_p、outl_p ❖insb、insw、insl ❖outsb、outsw、outsl 参见io_32.h的最后几个宏和宏扩展
I/O端口的分配 必不同的设备使用各自不同的端口 ?内核使用资源信息来记录端口分配信息 冬在这里,一个资源表示/O端口地址的一个范围 00014: 00015: 米 Resources are tree-like,allowing 00016: 米 nesting etc.. 00017: 00018: struct resource{ 个资源表示/O端口地址的一个范围 00019: resource size t start; 00020: resource size t end; 00021: const char *name; 00022: unsigned long flags; 00023: struct resource *parent,*sibling,*child; 00024: 所有同种资源使用树形结构记录,ioport resource。 一个较大范围可以进一步划分为子范围,使用兄弟链表来表示 2023/7114 弋系统实验室 Linux US AnalysIs 911U5 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 9/105 I/O端口的分配 ❖不同的设备使用各自不同的端口 ❖内核使用资源信息来记录端口分配信息 ❖在这里,一个资源表示I/O端口地址的一个范围 所有同种资源使用树形结构记录,ioport_resource。 一个较大范围可以进一步划分为子范围,使用兄弟链表来表示 一个资源表示I/O端口地址的一个范围
为什么使用树型结构 ?以DE硬盘接口为例来说明 DE硬盘接口的端口地址:0xf000~0xf00f 冬DE链的主盘使用0xf000~0xf007的子范围 冬从盘使用0xf008~0xf00f的子范围 冬这样,一个父结点+2个子节点 >父节点的范围能够覆盖所有子节点的范围 Science and fechno 嵌入式系统实验室 2023/7/14 Linux OS Analysis 10/105 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 10/105 为什么使用树型结构 ❖以IDE硬盘接口为例来说明 ❖IDE硬盘接口的端口地址:0xf000~0xf00f ❖IDE链的主盘使用0xf000~0xf007的子范围 ❖从盘使用0xf008~0xf00f的子范围 ❖这样,一个父结点+2个子节点 ➢父节点的范围能够覆盖所有子节点的范围
?I/O端口资源树ioport resource的根节点跨越了整 个I/0地址空间0~65565 00023: struct resource ioport_resource 00024: name ="PCI IO" 00025: .start =0, 00026: .end IO SPACE LIMIT, 00027: .flags IORESOURCE IO, 00028: } 00040:#define IO SPACE LIMIT 0xffff uty of Science and Technole 嵌入式系统实验室 2023/7/14 Linux OS Analysis 11/105 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 11/105 ❖I/O端口资源树ioport_resource的根节点跨越了整 个I/O地址空间0~65565