http://note.youdao.com/noteshare?id=1b6f0951062752fb84420cb578717268
stty的使用 和 RTSCTS问题
关于stty命令
man stty 1 进行查看, 如下所示
STTY(1) FSF STTY(1)
NAME
stty - 改变并打印终端行设置总览
stty [-F device][–file=device] [SETTING]…
stty [-F device][–file=device] [-a|–all]
stty [-F device][–file=device] [-g|–save]描述
打印或改变终端属性.-a, --all 以可读的格式打印当前的所有设置 -g, --save 以终端可读的格式打印当前的所有设置 -F, --file 打开指定的设备,并用此设备作为输入来代替标准输入 --help 显示帮助并退出 --version 显示版本信息并退出 选项-在SETTING之前使用这些选项将被视为无效 星号*表明是非POSIX设置. 以下是一些系统定义了的可用设置:
特殊字符
* dsusp CHAR CHAR表示输入满时,发一个停止信号给终端eof CHAR CHAR表示一个文件结束 (结束输入) eol CHAR CHAR表示当前行结束 * eol2 CHAR CHAR是另一个表示结束当前行的字符 erase CHAR CHAR表示擦除最后一个输入字符 intr CHAR CHAR表示发一个中断信号 kill CHAR CHAR表示擦除当前行 ..... .....
stty具体使用
-
设置ttyS1为115200:
# stty -F /dev/ttyS1 115200
-
向ttyS1写入数据进行验证:
# echo “test ttyS1” > /dev/ttyS1
-
查看ttyS1的已配置参数
# stty -F /dev/ttyS1 -a
返回:
speed 9600 baud; rows 24; columns 80;
intr = ^C; quit = ^; erase = ^?; kill = ^U; eof = ^D; eol = ;
eol2 = ; swtch = ; 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
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
echoctl echoke -
使用stty配置具体参数有效或无效
# stty -F /dev/ttyS1 crtscts //使ttyS1 的 crtscts 有效
# stty -F /dev/ttyS1 -crtscts //使ttyS1 的 crtscts 无效
关于RTSCTS问题
概念 [总结: 发送接收的使能管脚的配置]
通信协议中的RTS/CTS协议:即请求发送/允许发送协议,相当于一种握手协议,主要用来解决"隐藏终端"问题。“隐藏终端”(Hidden Stations)是指,基站A向基站B发送信息,基站C未侦测到A也向B发送,故A和C同时将信号发送至B,引起信号冲突,最终导致发送至B的信号都丢失了。"隐藏终端"多发生在大型单元中(一般在室外环境),这将带来效率损失,并且需要错误恢复机制。当需要传送大容量文件时,尤其需要杜绝"隐藏终端"现象的发生。IEEE802.11提供了如下解决方案。在参数配置中,若使用RTS/CTS协议,同时设置传送上限字节数----一旦待传送的数据大于此上限值时,即启动RTS/CTS握手协议:首先,A向B发送RTS信号,表明A要向B发送若干数据,B收到RTS后,向所有基站发出CTS信号,表明已准备就绪,A可以发送,而其余欲向B发送数据的基站则暂停发送;双方在成功交换RTS/CTS信号(即完成握手)后才开始真正的数据传递,保证了多个互不可见的发送站点同时向同一接收站点发送信号时,实际只能是收到接收站点回应CTS的那个站点能够进行发送,避免了冲突发生。即使有冲突发生,也只是在发送RTS时,这种情况下,由于收不到接收站点的CTS消息,大家再回头用DCF协议提供的竞争机制,分配一个随机退守定时值,等待下一次介质空闲DIFS(Distributed Inter-Frame Space)后竞争发送RTS,直到成功为止。
MODEM硬件流控中的RTS与CTS:按照SIMCOM公司的解释,RTS和CTS是独立,
1.RTS是模块的输入端,用于MCU通知模块,MCU是否准备好,模块是否可向MCU发送信息,RTS的有效电平为低。
2.CTS是模块的输出端,用于模块通知MCU,模块是否准备好,MCU是否可向模块发送信息,CTS的有效电平为低 从文字看,RTS和CTS是独立的,不存在每次单向数据传输的发起者问题。
如果主机输出RTS有效,那么模块有数据就会发往主机;如果模块输出CTS有效,那么主机就可以将数据送达模块接收。
遇到的问题 : 在MTK芯片中配置串口, 使能了crtscts.
将程序移植到realtek芯片中, 串口无法使用, 原因就在于使能了crtscts,