stty的使用 和 RTSCTS问题

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具体使用
  1. 设置ttyS1为115200:

    ​ # stty -F /dev/ttyS1 115200

  2. 向ttyS1写入数据进行验证:

    ​ # echo “test ttyS1” > /dev/ttyS1

  3. 查看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

  4. 使用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,

你可能感兴趣的:(driver)