红联Linux门户
Linux帮助

关于服务器通过串口进行通信

发布时间:2017-05-09 09:47:58来源:linux网站作者:_Hebrew
环境:Ubuntu系统 14.04 两台
MASTER 192.168.1.154  
BACKUP 192.168.1.142
最近搭建服务器集群,需要用到串口作为心跳,用来检测服务器健康;其中遇到的问题,在这里总结一下。
 
硬件详情:
PC机一般有1个或者2个异步串行通信接口,组装在主板上,称为COM1和COM2
PC机上的COM、COM2连接器符合RS-232接口
当前主板属于定制的主板,所以跟传统的九孔的串行口不一样,这里是在主板上已经转为RJ45接口,两台服务器一样;
这样的话,可以将网线改造一下直接进行两台服务器的串口通信;
 
1.首先,需要在服务器上查询可以使用的串口,Linux上设备文件在/dev目录下,普通串口一般是ttyS* ,如果是USB转串口设备的话是ttyUSB*;
可使用dmesg命令查看,直接接串口的话使用dmesg |grep ttyS*, USB转串口使用dmesg | grep ttyUSB*;
[    0.000000] console [tty0] enabled  
[    0.814605] 00:05: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A  
[    0.836088] 00:06: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A  
[    3.535071] tty tty45: hash matches
可以看到串口1-ttyS0, 串口2-ttyS1。
 
2.查看串口波特率
stty-F /dev/ttyS0-a
speed 9600 baud; rows 0; columns 0; line = 0;  
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;  
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;  
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;  
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts  
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff  
-iuclc -ixany -imaxbel -iutf8  
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0  
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt  
 
3.设置串口参数
stty -F /dev/ttyS0 ispeed 115200
ospeed 115200
cs8
 
4.制作串口线:全反线
一般网线接法为568A 568B,连接方法称为直连法和交叉连法
568A的排线顺序从左到右依次为:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。
568B则为:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。 
尝试过直连和交叉行不通,最后是看见console线序接法,做全反线才能成功连接两台服务器的串口
材料:网线一根长度1M以内(串口是短距离通信),水晶头2个
线序1: 568B线序 1白橙 2橙 3白绿 4蓝 5白蓝 6绿 7白棕 8棕
线序2: 568B反线序 1棕 2白棕 3绿 4白蓝 5蓝 6白绿 7橙 8白橙
 
5.设置好波特率等参数,以及将接好的线连接上一以后就可以进行测试
BACKUP: cat /dev/ttyS0
MASTER: echo '1' > /dev/ttyS0
BACKUP主机打印:
root@MASTER:~# cat /dev/ttyS0  
1
 
到这里,串口通信已经完成,这里多说一点串口线的自制和线序定义。
关于服务器通过串口进行通信
几类Console线的线序 配置电缆 串口电缆线序  
华为Console   
(等效标准Terminal + 全反线)  
COM(9P母头) & RJ45(水晶头)  1 - ?  2 - 3  3 - 6  4 - 7  5 - 5  6 - 2  7 - 8  8 - 1  9 - ?   
标准的Terminal   
COM(9P母头) & RJ45   
1 - 5  2 - 6  3 - 3  4 - 2  5 - 4  6 - 7  7 - 1  8 - 8  9 - ?  
标准的Terminal  
COM(9P母头) & RJ45  1 - 5  2 - 6  3 - 3  4 - 2  5 - 4  6 - 7  7 - 1  8 - 8  9 - ?  
标准的Terminal   
COM(9P母头) & RJ45   
1 - 5  2 - 6  3 - 3  4 - 2  5 - 4  6 - 7  7 - 1  8 - 8  9 - ?  
Modem   
COM(25P公头) & RJ45   
1 - ?  2 - 6  3 - 3  5 - 1  7 - 4 & 5  8 - 2  20 - 7  
Modem   
COM(25P公头) & RJ45   
1 - ?  2 - 6  3 - 3  5 - 1  7 - 4 & 5  8 - 2  20 - 7  
EQ0246 (Cajun P330)   
COM(9P母头) & RJ45   
1 - 3  2 - 7  3 - 8  4 - 6  5 - 5  6 - ?  7 - 1  8 - 2  9 - ?  
全反线 RJ45 & RJ45   
1 - 8  2 - 7  3 - 6  4 - 5  5 - 4  6 - 3  7 - 2  8 - 1  
主机对联接线方式:   
标准Console(Terminal) - 全反线 - 标准Console(Terminal)  
主机连接交换机&路由器(RJ45)   
标准Console(Terminal) - 全反线   
标准Console 自带全反线
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30631.html