Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137234
  • 博文数量: 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 Zenith1991年共同推出了EPP(Enhanced Parallel Port增强型并口),允许更大容量数据的传输(5001000byte/s)其主要是针对要求较高数据传输速度的非打印机设备,例如存储设备等;紧接着EPP的推出,1992年微软和惠普联合推出了被称为ECP(Extended Capabilities Port,扩展并行口)的新并口标准,和EPP不同,ECP是专门针对打印机而制订的标准;发布于1994年的IEEE 1284涵盖了EPPECP两个标准,但需要操作系统和硬件都支持该标准,这对现在的硬件而言已不是什么问题了。目前我们所使用的并口都支持EPPECP这两个标准,而且我们可以在BIOS当中自己设置并口的工作模式。

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

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

数据端口或称数据寄存器保存了写入数据输出端口的一字节信息。数据端口可以写入数据,也可以读出数据(即可擦写);写进去的当然是我们希望从数据端口引脚输出的数据,不过读进来的也只是我们上次写进去的数据,或是原来保留在里面的数据,并不是从端口引脚输入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上,012位均未定义

 

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

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时,IRQnAck送往系统的中断控制器;为0时,IRQ不送往中断控制器。

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

67:未定义。

 

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

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

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

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

模式的信号定义

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

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

虚拟机软件采用VMware,主机端OSLinux 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,但在虚拟机内部仍被模拟为LPT10x378-0x37A

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

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

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