读书笔记《Linux内核完全剖析:基于0.12内核》——第二章 微型计算机组成结构

第二章 微型计算机组成结构

任何一个系统都是由4个基本部分组成:输入-处理中心-输出,整个系统由能源提供。
计算机系统可分为软件和硬件部分。
在这里插入图片描述

2.2 I/O端口寻址和访问控制方式

2.2.1 I/O端口和寻址

表 2-1 I/O端口地址分配

端口地址范围 分配说明 端口地址范围 分配说明
0x000~0x01F 8237A DMA 控制器1 0x1F0~0x1F7 IDE硬盘控制器0
0x020~0x03F 8259A 可编程中断控制器 1 0x278~0x27F 并行打印端口 2
0x040~0x05F 8253/8254A 定时计数器 0x2F8~0x2FF 串行控制器2
0x060~0x06F 8402键盘控制器 0378~037F 并行打印机端口1
0x070~0x07F 访问CMOS RAM/实时时钟RTC(Real Time Clock)端口 0x3B0~0x3BF 单色MDA显示控制器
0x080~0x09F DMA页面寄存器访问端口 0x3C0~0x3CF 彩色CGA显示控制器
0x0A0~0x0BF 8259A可编程控制器2 0x3D0~0x3DF 彩色EGA/VGA显示控制器
0x0C0~0x0DF 8237A DMA控制器2 0x3F0~0x3F7 软盘控制器
0x0F0~0x0FF 协处理器访问端口 0x3F0~0x3F7 串行控制器1
0x170~0x177 IDE硬盘控制器1
[root@my root]# cat /proc/ioports
0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0077 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
03c0-03df : vga+
0400-041f : iTCO_wdt
0400-041f : iTCO_wdt
0680-069f : pnp 00:00
0930-0930 : PNP0C09:00
0930-0930 : EC data
0934-0934 : PNP0C09:00
0934-0934 : EC cmd
0cf8-0cff : PCI conf1
0d00-ffff : PCI Bus 0000:00
164e-164f : pnp 00:00
1800-18fe : pnp 00:00
1800-1803 : ACPI PM1a_EVT_BLK
1804-1805 : ACPI PM1a_CNT_BLK
1808-180b : ACPI PM_TMR
1830-1833 : iTCO_wdt
1830-1833 : iTCO_wdt
1850-1850 : ACPI PM2_CNT_BLK
1854-1857 : pnp 00:02
1880-189f : ACPI GPE0_BLK
e000-efff : PCI Bus 0000:02
e000-e0ff : 0000:02:00.0
f000-f03f : 0000:00:02.0
f040-f05f : 0000:00:1f.4
f040-f05f : i801_smbus
f060-f07f : 0000:00:17.0
f060-f07f : ahci
f080-f083 : 0000:00:17.0
f080-f083 : ahci
f090-f097 : 0000:00:17.0
f090-f097 : ahci
ff00-fffe : pnp 00:07
ffff-ffff : pnp 00:00

2.2.2 接口访问控制

PCD的I/O接口数据传输控制方式一般可以采用程序循环查询方式、中断处理方式和DMA传输方式。
程序循环查询方式CPU通过在程序中循环查询指定设备控制器中的状态判断是否可以与设备进行数据交换。
中断处理方式需要中断控制器的支持。
**直接存储器访问(Direct Memory Access, DMA)**方式用于I/O设备与系统内存之间进行批量数据传送,整个操作过程需要使用专门的DMA控制器来进行而无需CPU插手。

2.3 主存储器、BIOSCMOS存储器

2.3.1 主存储器

在这里插入图片描述

2.3.2 基本输入/输出程序BIOS

存放在ROM中的系统BIOS程序主要用于计算机开机时执行系统各部分的 自检,建立起操作系统需要使用的各种配置表,如中断向量表、硬盘参数表。Linux运行时不使用BIOS中的功能。
当计算机系统上电开机或者按了机箱上的复位按钮时,CPU会自动把代码段寄存器CS设置为0xf000,其短地址则被设置为0xffff0000,段长度设置为64KBIP被设置为0xfff0,此时CPU代码指针指向0xfffffff0处,即4GB空间的最后64KB的最后16B处。
在这里插入图片描述

2.3.3 CMOS存储器

PC/AT中,除需要使用内存和ROM BIOS以外,还使用只有很少存储容量的(只有64B128B)CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)存储器来存放计算机的实时时钟信息和系统硬件配置信息。

2.4 控制器和控制卡

中断控制器

如图2-6,在计算机开始初始化期间, ROM BIOS会分别对两片8259A芯片进行初始化,并分别吧15级中断优先级分配给时钟定时器、键盘、串行口、打印口、软盘控制、协处理器和硬盘等设备或控制器使用。同时在内存开始出0x000~0xfff区域捏建立一个中断向量表。
在这里插入图片描述
表2-2 开机时ROMBIOS设置的硬件请求处理中断号

中断请求号 BIOS设置的终端号 用途 中断请求号 BIOS设置的终端号 用途
IRQ0 0x08 (8) 8253发出的100Hz时钟中断 IRQ8 0x70 (112) 实时钟中断
IRQ1 0x09 (9) 键盘中断 IRQ9 0x71 (113) 改向至INT 0x0A
IRQ2 0x0A (10) 接连从芯片 IRQ10 0x72 (114) 保留
IRQ3 0x0B (11) 串行口2 IRQ11 0x73 (115) 保留(网络接口)
IRQ4 0x0C (12) 串行口1 IRQ12 0x74 (116) PS/2鼠标口中断
IRQ5 0x0D (13) 并行口2 IRQ13 0x75 (117) 数学协处理器中断
IRQ6 0x0E (14) 软盘驱动器 IRQ14 0x76 (118) 硬盘中断
IRQ7 0x0F (15) 并行口1 IRQ15 0x77 (119) 保留

2.4.2 DMA控制器

DMA控制器的主要功能是通过外部设备直接与内存传输数据来增强系统性能。

2.4.3 定时/计数器

intel 8253/8254是一个可编程定时/计数器(Programmable Interval Timer, PIT)芯片,用于处理计算机中的精确时间延迟。该芯片有3个独立的16位计数器通道。

2.4.4 键盘控制器

我们使用的键盘是IBM公司与1984年研制的PC/AT的兼容键盘,通常称为AT-PS/2兼容键盘并只有101~104个按键。
目前有3套扫描码集(Scan Code Set):
#1 第一套:原始XT键盘扫描码集。
#2 第二套:现代键盘默认使用的扫描码集,通常称为AT键盘扫描码集。
#3 第三套:PS/2键盘扫描码集。
键盘控制器通常采用Intel 8042单片微处理器芯片或其兼容电路。
表2-3 键盘控制器变成端口接收到的第一套扫描码集接通和断开扫描码示例

按键 接通扫描码 断开扫描码 说明
A 0x1E 0x9E 非扩展的普通键
9 0x0A 0x8A 非扩展的普通键
功能键F9 0x43 0xC3 非扩展的普通键
方向键向右键 0xe0 , 0x4D 0xe0 , 0xCD 扩展键
Ctrl 0xe0 , 0x1D 0xe0 , 0x9D 扩展键
shift+``G 0x2A, 0x22 0xAA , 0xA2 先按并且后释放shift
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章