📄 serial-howto.txt
字号:
RxD Receive Data 2 <-- 2 TxD Transmit Data TxD Transmit Data 3 --> 3 RxD Receive Data 6 DSR Data Set Ready | DTR Data Terminal Ready 4 --> 8 DCD Carrier Detect GND Signal Ground 5 --- 7 GND Signal Ground DCD Carrier Detect 1 | DSR Data Set Ready 6 <-- 20 DTR Data Terminal Ready RTS Request To Send 7 --> 5 CTS Clear To Send CTS Clear To Send 8 <-- 4 RTS Request To Send (RI Ring Indicator 9 not needed) (没错! 第二支及第三支脚在 DB9 连接头上确实和 DB25 接头意义相反!) 如果使用的并不是完整的 null modem 连接线的话,你可能得要做下面这个欺骗 的技巧: 在你电脑这边的接头上,把 RTS 跟 CTS 接在一起,而且也把 DSR, DCD 以及 DTR 接在一起. 用这个方法,当电脑要求一个正确的硬体连线协商信 号时,它就可以得到(从它自己发出的). 现在你已经有正确的连接线,把你的终端机连接到你的电脑上. 如果你可以的话 ,告诉你的终端机忽略数据机控制信号. 试试看用 9600 bps, 8 data bits, 1 stop bit, no parity bits 来设定终端机. 7.2 设定 getty 在 /etc/gettydefs 里面增加一个给 getty 用来连接你终端机项目,如果还没有 这项的话: # 38400 bps Dumb Terminal entryDT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400# 19200 bps Dumb Terminal entryDT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200# 9600 bps Dumb Terminal entryDT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600 如果你要的话,你可以让 getty 在签入的标题上印出一些有趣的东西. 在我的 例子里,我印出系统名称以及串列线路.你可以加入其它的东西: @B 目前的每秒位元传输率(bps, 在看到 @B 时估计的).@D 现在日期, 格式 MM/DD/YY.@L getty 所连接的串列线路.@S 系统名称.@T 现在时间,格式 HH:MM:SS (24 小时制).@U 目前签入的使用者.这是在 /etc/utmp 档中非空 ut_name 栏位项目的计数值.@V 版本值,在预设档中给定的.如果要显示 '@' 符号的话,用 '\@' 或 '@@'. 当你正在编辑 /etc/gettydefs 时,你可以这样来检查它的语法是否正确: linux# getty -c /etc/gettydefs 确定没有 getty 或 uugetty 的设定档(/etc/default/{uu}getty.ttySN 或 /etc/conf.{uu}getty.ttySN)在你的终端机连接的串列埠上, 因为这也许会干扰 到在终端机上执行的 getty.如果有的话请移除它. 编辑你的 /etc/inittab 让 getty 在你的串列埠上执行(用你环境的正确资讯来 取代 - 配置档的位置,串列埠名,速度,及预设终端机形式): S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 重新起始 init: linux# init q 现在你应该会在你的终端机上看到签入提示.也许你得按返回键(return)几次让 终端机注意到. 7.3 将 PC 设定成终端机的注意事项 许多人将其它 PC 设定成终端机连接到 Linux 机器上.例如,旧的 8088 或是 286 PC 非常适合这个用途. 你需要的只是一张包含适合让你的终端机-个人电脑 (Terminal-PC) 使用的 DOS 磁片,以及让你的终端机-个人电脑执行的通讯程式 . kermit 在这个用途上表现得非常好. 你可以在这台机器 [61]http://www.columbia.edu/kermit/ 上找到几乎可以让任何现存的作业系统 使用的已编译的 kermit 版本. 其它流行的 DOS 通讯程式像是 telix 以及 procomm 也将会有一样好的表现. 要确定输入正确的串列埠资讯到你终端机-个 人电脑的通讯设定里去. 8. 我能使用超过两个的串列装置吗? 你不需要阅读这一节,除非你想要使用三个或更多的串列设备...(假定你没有多 埠卡的话). 假如你有另一个多馀的串列埠,是的,你可以. 你可以使用的串列埠数目受限於 我们必须使用的硬体中断要求以及埠输出入位址的数目. 这并不是 Linux 的限 制,而是 PC 汇流排的限制.必须指定中断跟位址给每一个串列设备. 串列设备 可以是串列埠,内接式数据机或是多埠卡. 多埠卡是为了拥有许多个串列埠来分享卡上所有串列埠所使用的相同 IRQ 而特别 设计的. Linux 对卡上的每一个埠使用不同的输出入位址以便从它们获取资料. 8.1 选择串列设备的中断位址 你的 PC 一般会将 ttyS0 以及 ttyS2 设在 IRQ 4 而将 ttyS1 以及 ttyS3 设在 IRQ 3. 经由检视 /proc/interrupts 你可以知道那些 IRQs 正被使用. 要使用 两个以上的串列设备的话,你必须重新指定一个中断. 一个好选择是从你的并列 埠那边重新指定一个中断.你的 PC 一般会设定 IRQ5 或是 IRQ7 当你的并列埠 ,但是很少人会使用两个并列埠. 你可以重新指定其中一个中断给串列设备,并 而仍然能顺利地使用一个并列埠. 你将会需要用到 setserial 程式来做这件事 .此外,你必须调整你板子上的跳接设定(Jumpers),查看你主机板的说明文件. 跳接你想要给每个埠使用的 IRQ. 你将得要做些设定让每个串列设备都有一个,并且是唯一的一个中断. 这里是我 在 /etc/rc.d/rc.local 里所用的设定 - 你应该在启动系统时的某个地方做这件 事. /sbin/setserial /dev/ttyS0 irq 3 # my serial mouse /sbin/setserial /dev/ttyS1 irq 4 # my Wyse dumb terminal /sbin/setserial /dev/ttyS2 irq 5 # my Zoom modem /sbin/setserial /dev/ttyS3 irq 9 # my USR modem 标准的 IRQ 指定: IRQ 0 Timer channel 0 IRQ 1 Keyboard IRQ 2 Cascade for controller 2 IRQ 3 Serial port 2 IRQ 4 Serial port 1 IRQ 5 Parallel port 2 IRQ 6 Floppy diskette IRQ 7 Parallel port 1 IRQ 8 Real-time clock IRQ 9 Redirected to IRQ2 IRQ 10 not assigned IRQ 11 not assigned IRQ 12 not assigned IRQ 13 Math coprocessor IRQ 14 Hard disk controller 1 IRQ 15 Hard disk controller 2 在选择中断时真的没有什麽正确的.只要确定它不是已经被主机板,或是其它界 面卡所使用. 2, 3, 4, 5 或是 7 是好选择.``not assigned''的意思是目前并 没有什麽东西在标准情况下会固定使用这些硬体中断要求. 也要注意到 IRQ 2 跟 IRQ 9 是一样的.你可以称它为 2 或 9,串列驱动程式非常了解这一点. 如 果你有一块 16-bit 汇流排连接头的串列卡,你也可以使用 IRQ 10, 11, 12 或 15. 只要确定你使用的并非是 IRQ 0, 1, 6, 8, 13 或是 14! 它们是由你的主机板所 使用的. 如果你拿走她的 IRQs 的话,会使得她很不高兴. 完成之後,再次检 查 /proc/interrupts 以确定没有冲突发生. 8.2 设定串列设备的位址 接下来,你必须设埠位址.查看你主机板手册的跳接设定.就像中断,每个位址 只能有一个串列设备. 你的埠通常会配置成像下面这样: ttyS0 address 0x3f8 ttyS1 address 0x2f8 ttyS2 address 0x3e8 ttyS3 address 0x2e8 选择你想要给每一个串列设备使用的位址并且依此来设定跳接. 我将我的数据机 设在 ttyS3 ,我的滑鼠在 ttyS0,而我的终端机在 ttyS2. 当你重新启动时, Linux 应该会在你所设定的位址看到你的串列埠. Linux 所 看到的 IRQ 可能不会跟你跳接设定的相符. 不必担心这一点. Linux 在它启动 的时候并没有做任何的 IRQ 侦测, 因为 IRQ 侦测是危险并且有可能被欺骗的. 使用 setserial 来告诉 Linux 那个埠使用那个 IRQ. 你也可以检查 /proc/ioports 来看看在 Linux 启动後那些输出输入埠位址被使用. 9. 我怎样将我的串列埠设到较高的速度? 我的数据机又应该使用什麽样的速度? 这一节应该可以帮你找出当你透过通讯程式,或是 getty 程式使用你的数据机时 应该使用什麽速度. * 如果你所有的是比 9600 bps (V.32) 数据机还要慢的东西,将你的速度设到 你的数据机所能支援的最高速度. 例如 300 (V.21/Bell 103), 1200 (V.22/Bell 212A), 或 2400 bps (V.22bis). * 如果你有 9600 bps (V.32) 的数据机,并且支援 V.42bis 资料压缩,使用 38400 来当作你的速度. V.42bis 压缩具有 4:1 的理论值,也就是``4 * 9600 = 38400''. * 如果你有 14400 bps (V.32bis) 的数据机,并且支援 V.42bis 资料压缩功 能的话,使用 setserial 程式,加上 spd_hi 旗标将你的串列埠配置成使用 57600 bps (4 * 14400 = 57600) 的速度. 如果你有 28800 或 33600 bps (V.FC 或是 V.34) 的数据机则使用 spd_vhi 旗标 (4 * 28800 = 115200). 然後,在你的通讯程式,或是 /etc/inittab 里使用 38400 当作速度设定. 这是现在你能设的最高速度.要确定你有 16550A 通用非同步接收转换 器(UART). 如果你的 libc 版本至少是 5.x,那麽会有叫做 57600 及 115200 的速度. libc 放在 /lib,所以在那里看一下你用的版本是什麽. 如果你的应用程式 已经编译以取用此优点,你可以直接使用它们(不必用 setserial), 许多的 套件都已经有了,因此如果你有最近版本的 Linux 套件,最好的方法就是尝 试使用这些更高的速度. 先在命令列下用 setserial 指令测试,然後在你确定它们可以运作後,将你所作 的修改放进 /etc/rc.d/rc.serial 或 /etc/rc.d/rc.local 以便在系统启动执行 它们. 在我的 /etc/rc.d/rc.local 里,我是这样设定我的 ttyS3 到 115200 bps 的: /sbin/setserial /dev/ttyS3 spd_vhi 确定你以合法的路径使用 setserial,以及合法的装置名称. 你可以下法检查一 个串列埠的设定: setserial -a /dev/ttyS310. 通讯程式及工具 这里有一个通讯程式的列表,如果你所使用的发行套件里头并没有的话,这些都 可以在一般的 FTP 站找到. * ecu - 一套通讯程式 * [62]C-Kermit - 可携的,可程序化的串列及 TCP/IP 通讯程式,包含传档及 字完转换功能 * minicom - 类似 telix 的通讯程式 * procomm - 包含 zmodem,类似 procomm 的通讯程式 * seyon - 以 X 为基础环境的通讯程式 * xc - xcomm 通讯套件 * 其它有用的程式是 term 及 SLiRP.它们提供使用 shell 帐号的 TCP/IP 功 能. * screen 是另一个多区段作业(multi-session)的程式.这个程式就像的动作 就像虚拟控制台. * callback 这支程式会使你的数据机回拨给你. * mgetty+fax 处理传真事务,并且提供一个不同的 getty. * ZyXEL 是 ZyXEL U-1496 数据机的控制程式.它处理接受拨接,拨号,回拨 保密,传真,以及语音信箱功能. * SLIP 及 PPP 的软体可在 [63]ftp://sunsite.unc.edu/pub/Linux/system/network/serial 找到. * 其它东西可以在 [64]ftp://sunsite.unc.edu/pub/Linux/system/serial 以 及 [65]ftp://sunsite.unc.edu/pub/Linux/apps/serialcomm 或许多的映射 节点之一找到.这些是保留所有串列程式的目录. 11. 串列使用秘诀 这里有一些你可能发现很有用的串列□诀... 11.1 kermit 以及 zmodem 要在 kermit 下使用 zmodem 的话,将下列内容加到你的 .kermrc 里去: define rz !rz < /dev/ttyS3 > /dev/ttyS3define sz !sz \%0 > /dev/ttyS3 < /dev/ttyS3 要确定正确地放入你数据所在的串列埠.然後,要使用的话,只要在 kermit 的 提示符号下键入 rz 或 sz <档名> 即可. 11.2 自动设定终端机型式 要在当你签入的时候自动设定你的终端机形式的话,把终端机的形式加到 /etc/inittab 的项目里去. 如果我有一台 vt100 终端机在 ttyS1 上 ,我要对 getty 指令加上 ``vt100'': S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 你也可以使用 tset,可以在你签入的时候建立终端机的特性,而且不需要依赖任 何的预设值. 11.3 在串列连线下的彩色 ls 如果 ls 因为彩色特性而扰乱了你的终端机模拟,把它关掉. ls --color 以及 ls --colour 都使用彩色特性.有些安装方式使得 ls 预设为使用彩色. 检查 /etc/profile 以及 /etc/csh.cshrc 里的 ls 别名. 如果你不想修改系统预设 值的话,你也可以设给 ls 别名 ls --no-color. 11.4 从终端机所连接的印表机进行列印 有一个叫做 vtprint 的程式可以做得到,在 [66]ftp://ftp.sdsu.edu/pub/vtprint 及 [67]http://www.sdsu.edu/~garrett
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -