a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 187|回复: 2

[LPI认证] linux学习:LPI硬件和体系结构(三)

[复制链接]
发表于 2012-8-4 12:13:19 | 显示全部楼层 |阅读模式
 IO 端口   当 CPU 需要与某个外围设备通信时,它要通过一个 IO 端口(有时只是简单的 端口)。当 CPU 需要向外围设备发送数据或者控制信息时,它向某个端口写入数据。当设备为 CPU 准备好了数据或者状态,CPU 从某个端口去读取数据或状态。大部分设备都拥有不止一个与之相关联的端口,通常是 2 的若干次幂(指数较小),比如 8、16 或者 32。数据传输通常是每次一个或两个字节。设备不能共享端口,所以,如果有 ISA 卡,那么必须确保每个设备都有其分配到了自己的端口。以前,这需要通过设备卡上的开关或者跳线来实现。一些晚期的 ISA 卡使用了一个名为 Plug and Play (PnP)的系统,本节稍后将讨论到。 PCI 卡全都有 PnP 配置。! ]" d: }2 f! u1 O- C
  在 /proc 文件系统中,/proc/ioports 文件告诉我们关于系统中可用 IO 端口的信息。运行 cat /proc/ioports 命令可以看到类似清单 2 所示的输出。) X% q4 ?6 {% l5 ?; m  }
  清单 2. /proc/ioports
; w; P5 c# F* m0 R  0000-001f : dma11 J9 [7 V$ r  [9 {& @% m
  0020-003f : pic19 ^1 N2 L$ T" S8 }4 }$ O
  0040-005f : timer
* W$ c! \. W, M' ]% _  0060-006f : keyboard, ~/ b& V) g9 t5 q: B! z! b: b- n
  0070-007f : rtc+ s( h! }$ w, C5 w1 X0 ]( }
  0080-008f : dma page reg4 d( j) d- T  o1 N7 M0 M
  00a0-00bf : pic2
* }8 y5 m% z$ p9 z) n  00c0-00df : dma2! r. c. q* x9 F& b. ^
  00f0-00ff : fpu6 J- K8 Z* T% Y% ]& K: w5 x
  0170-0177 : ide1
- t: C& L( T7 B& Z" }+ O  01f0-01f7 : ide0
9 c. i2 u( U" k  n2 c- G( E  02f8-02ff : serial(auto)
5 \" Z% e2 ]2 G  0376-0376 : ide1; b) J9 P4 y( d' h& E7 s7 J
  0378-037a : parport0. y! c. M* z8 k1 y  g2 d
  03c0-03df : vga+
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:13:20 | 显示全部楼层

linux学习:LPI硬件和体系结构(三)

03f6-03f6 : ide0   03f8-03ff : serial(auto)
6 ~& B2 F/ j- c# D! f2 E  0cf8-0cff : PCI conf1# c8 Z9 g. S4 X( |* ?
  1800-181f : Intel Corp. 82801DB USB (Hub #1), [( g' b4 {5 y! a6 t/ Y: y/ y
  1800-181f : usb-uhci  S  _" P8 ^8 K3 s
  1820-183f : Intel Corp. 82801DB USB (Hub #2)
7 H3 ~( b* I8 F$ y5 C" {$ O1 J  1820-183f : usb-uhci
  [1 |. N6 S( }$ i4 X  1840-185f : Intel Corp. 82801DB USB (Hub #3)5 P* i1 ]0 F% r/ e8 w7 M
  1840-185f : usb-uhci
4 Z! ~, _& ]5 b1 z3 ^. @* E% f* R  1860-186f : Intel Corp. 82801DB Ultra ATA Storage Controller( c" W/ S2 a$ e1 i/ b
  1860-1867 : ide0
+ v1 q' R/ y) S9 t4 ^8 s  1868-186f : ide1- o' Q7 `6 H4 L# |' X
  1880-189f : Intel Corp. 82801DB/DBM SMBus Controller8 j/ _' E1 [: t2 W% l
  18c0-18ff : Intel Corp. 82801DB AC'97 Audio Controller5 u: R, m" d; @& J: t( U
  18c0-18ff : Intel ICH4
( K; t( _/ U' n+ W+ h0 v' `- Y/ Z  1c00-1cff : Intel Corp. 82801DB AC'97 Audio Controller# R2 Y# t2 H2 O+ |8 Z& N
  1c00-1cff : Intel ICH4& A3 ]: @" y! E  F% M4 r$ k$ T
  2000-203f : Intel Corp. 82801BD PRO/100 VE (LOM) Ethernet Controller
- Q# `- r* j8 b6 n" l  2000-203f : e100  y8 B: @2 I* c+ d  ^
  端口编号是十六进制的(基数为 16)。肯定会发现有一些看起来很熟悉,比如键盘、计时器、并行端口(打印机)、串行端口(调制解调器)和显示器(vga+)。将这些与清单 3 中给出了在 PC 中某些标准 IO 端口分配进行比较。例如,要注意的是,在 /proc/ioports 中为第一个并行端口(parport0)分配的地址范围是从 0378 到 037A,而标准中允许它(LPT!)使用的是从 378 到 37F。
& o$ ]) Y8 D6 Z+ b- X, Z4 W  清单 3. 标准 I/O 端口设置
3 W& E( W3 l- M: \8 }  1FO-1F8 - Hard Drive Controller, 16-bit ISA; ~. x5 Z* G2 S! q
  200-20F - Game Control
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 12:13:21 | 显示全部楼层

linux学习:LPI硬件和体系结构(三)

 210 - Game I/O   220 - Soundcard" i1 ?6 S1 M9 G2 F5 ~
  278-27F - LPT2
) T- K. V5 y- b8 e! B  2F8-2FF - COM2: `& h$ r! o+ J9 \: R
  320-32F - Hard Drive Controller, 8-bit ISA
" o# M, p2 `8 n  @- I  378-37F - LPT1( s2 l2 `) s( R! r
  3B0-3BF - Monochrome Graphics Adapter (MGA)( K& Z# R0 C* c- t, O
  3D0-3DF - Colour Graphics Adapter (CGA)
* r! b" j" P6 z  3F0-3F7 - Floppy Controller
8 w& K& H* S: g: T% \  3F8-3FF - COM1+ h0 s: q/ l9 \7 n" h3 U
  中断
6 k+ ?; q, w! ^" F  那么,CPU 如何知道最后一次输出何时完成?或者何时有数据在等待读取?通常,在一个状态寄存器中可以获得此信息,通过读取与某设备想关联的一个(或多个)IO 端口可以访问它。在这种情况下会出现两个问题。首先,CPU 不得不花费时间来检查状态。其次,如果设备持有来自某处的数据,比如连接的调制解调器,那些数据必须要及时被读取,否则就可能被下一个可用的数据字节所覆盖。
4 U/ Q& d% j1 [1 P  不浪费多余 CPU 周期,并确保数据能被及时读写,这两个问题是由 中断(interrupt) 的概念所解决的。中断也称为 中断请求(Interrupt Requests) 或 IRQs。当设备中发生 CPU 需要知道的某事件时,设备就会发出一个中断,CPU 则临时停止正在做的其他工作,来处理那件事情。
6 J4 S$ {- {& e) l  根据上一节的经验,毫无疑问关于中断的信息也保存在 /proc 文件系统中,在 /proc/interrupts 中。运行 cat /proc/interrupts 命令,可以看到类似于清单 4 的输出。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-15 19:44 , Processed in 0.321848 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表