Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141177
  • 博文数量: 17
  • 博客积分: 1420
  • 博客等级: 上尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-18 14:29
文章分类
文章存档

2011年(1)

2009年(12)

2008年(4)

我的朋友

分类:

2009-05-25 20:24:34

最初的并口设计是单向传输数据的,也就是说数据在某一时刻只能实现输入或者输出。后来IBM又开发出了一种被称为SPP(Standard Parallel Port)的双向并口技术,它可以实现数据的同时输入和输出,这样就将原来的半互动并口变成了真正的双方互动并口; Intel、 Xircom 及Zenith于1991年共同推出了EPP(Enhanced Parallel Port,增强型并口),允许更大容量数据的传输(500~1000byte/s),其主要是针对要求较高数据传输速度的非打印机设备,例如存储设备等;紧接着EPP的推出,1992年微软和惠普联合推出了被称为ECP(Extended Capabilities Port,扩展并行口)的新并口标准,和EPP不同,ECP是专门针对打印机而制订的标准;发布于1994年的IEEE 1284涵盖了EPP和ECP两个标准,但需要操作系统和硬件都支持该标准,这对现在的硬件而言已不是什么问题了。目前我们所使用的并口都支持EPP和ECP这两个标准,而且我们可以在BIOS当中自己设置并口的工作模式。

标准的PC并口有25针和37针两种,分别称为D-subh和Centronics,具体管脚定义见表4.1-4.3。

标准的PC并口使用3个8位的端口寄存器,这些端口寄存器与并行口管脚存在对应关系,我们可以通过这三个端口寄存器去监控并口管脚。这三个端口寄存器依次是数据寄存器、状态寄存器和控制寄存器。

数据端口或称数据寄存器保存了写入数据输出端口的一字节信息。数据端口可以写入数据,也可以读出数据(即可擦写);写进去的当然是我们希望从数据端口引脚输出的数据,不过读进来的也只是我们上次写进去的数据,或是原来保留在里面的数据,并不是从端口引脚输入PC的数据。

表4.1 SPP模式下的信号定义 1

数据寄存器(基地址)

位

引脚:D-sub

信号名

信号源

是否在连接器处倒相

引脚:Centronics

D0

2

数据位0

PC

否

2

D1

3

数据位1

PC

否

3

D2

4

数据位2

PC

否

4

D3

5

数据位3

PC

否

5

D4

6

数据位4

PC

否

6

D5

7

数据位5

PC

否

7

D6

8

数据位6

PC

否

8

D7

9

数据位7

PC

否

9

 

状态端口或称状态寄存器保存的是5个输入(S3-S7)的逻辑状态。S0-S2位不出现在并口连接器中。除了S0以外,状态寄存器是只读的,读出数据信息是状态端口引脚上的逻辑状态。S0是支持EPP传输并口的超时标志信息,可以用软件方法清零。在许多并口中,状态输入接有上拉电阻。其定义如下:

表4.2 SPP模式下的信号定义 2

状态寄存器(基地址+1)

位

引脚:D-sub

信号名

信号源

是否在连接器处倒相

引脚:Centronics

S0

 

Time-Out

 

 

 

S1

 

未使用

 

 

 

S2

 

未使用

 

 

 

S3

15

nError

外设

否

32

S4

13

Select

外设

否

13

S5

12

Paper Out

外设

否

12

S6

10

nAck

外设

否

10

S7

11

Busy

外设

是

11

注:有些PC上,0、1、2位均未定义

 

控制端口或称控制寄存器保存了C0-C3的4位控制信息。一般来说,这些位被用来输出,然而大多数SPP中,控制位为集电极开路/漏极开路模式,也就是说,它们同样可以用作输入。要从控制位上读取外部逻辑信号,首先先向相应位输出写入“1”,然后读取控制寄存器的值即可。但是,为了提高交换速度,大多数支持EPP和ECP的接口中,控制位工作在不能用作输入的推拉模式下。在一些多模式接口中,控制位采用的是改进型的推拉模式,可以用作输入。其定义如下:

表4.3 SPP模式下的信号定义 3

控制寄存器(基地址+2)

位

引脚:D-sub

信号名

信号源

是否在连接器处倒相

引脚:Centronics

0

1

nStrobe

PC

是

1

1

14

nAutoLF

PC

是

14

2

16

nInit

PC

否

31

3

17

nSelectIn

PC

是

36

注: 连接器中没有提供的附加位有:

4:中断启用:为1时,IRQ从nAck送往系统的中断控制器;为0时,IRQ不送往中断控制器。

    5:双向控制端口的方向控制位:为0时,输出启动;为1时,不能输出;控制端口可以读取外部逻辑电平。

6、7:未定义。

 

1. 对于PC自带的并口(我们称之为原生并口),必须在BIOS中设置为ECP或EPP模式;

2. 上面几个表中的基地址一般如下:并口1为0x378,并口2为0x278,他们都是计算机自带的标准并口。当我们的PC机没有自带并口时,需要采用一些转换器,此时基地址将由转换器的驱动具体指定。如我的PC上装的PCI转并口设备模拟的并口的基地址为0xC400;

3. 数据寄存器对应的引脚属于输入/输出口,状态寄存器对应的引脚属于输入口,控制寄存器对应的引脚属于输出口;

4. 根据模式的不同,并口的信号定义也不同,从第三章开始讨论的并口管脚的顺序都是针对SPP模式下的信号定义;

模式的信号定义

本节简单列下EPP模式下的信号定义,读者可以略过。

表4.4 EPP模式下的信号及寄存器定义

虚拟机软件采用VMware,主机端OS为Linux XP,从机为Redhat 9。

当PC上已经有并口设备时,问题比较简单,只需按照以下步骤:

1.         在虚拟机内客户操作系统关机的情况下,点击VM -> Setting…,在Hardware标签底下选择Add按钮添加Parallel Port,添加后的界面如下:

图4.1 VMware下添加并口后的界面

2.         启动虚拟机,则可以在Linux底下正常使用并口,并口地址为0x0378->0x037A。

转并口

当PC端没有并口设备时,我们一般会使用转并口设备,如PCMCIA转并口、USB转并口等,我这边使用PCI转并口。安装步骤如下:

1.         在硬件上接好PCI转并口卡,并安装好PCI转并口卡的厂商自带的驱动,此时通过PC端的设备管理器,可以看到一个PCI_COM和一个PCI_LPT(如下图),但并口号为LPT3,并口地址为0xC400->0xC407。

图4.2 windows 设备管理器的截图

2.         在LPT3右键点击 属性,在其 端口设备 标签里更改 LPT端口号 为LPT1;

3.         依照上一节 原生并口 的方法在虚拟机底下安装并口。安装后虚拟机底下并口地址为0x378-0x37A。

1.         从我的安装经验来看,似乎虚拟机底下只支持LPT1设备。因此,不管是原生并口还是转并口设备在主机环境下都必须更改并口号为LPT1。以PCI转并口为例,在上一节中若未将并口号由LPT3改为LPT1,则虚拟机启动时会提示如下图:

图4.3 VMware底下的错误提示框

2.         不管主机端的并口地址为多少,在虚拟机内部均被虚拟为首地址0x0378。仍以PCI转并口为例,在主机端其实际地址为0xC400->0xC407,但在虚拟机内部仍被模拟为LPT1,0x378-0x37A。

3.         当不确定并口是否可用时,推荐在主机(windows)下使用H-JTAG工具进行测试。

4.         其它转并口设备或其它主从机环境我没有试过,有兴趣的可以参考本文档进行安装。若有任何其它心得,欢迎与我联系。

阅读(4776) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~