debuggingembedded式系统时如何发送“break”?

所有,

在debuggingembedded式系统时,如您所知,我们通常通过uart控制台与目标设备进行通信。 现在我想在linux内核中testing“Magic sysrq”函数,它需要发送一个“break”给控制台驱动程序。 我已经find了什么“突破”的意思,似乎我需要保持一段时间TX线电气低水平。
我的问题是如何发送这个rest“字符”,从APUE(高级程序在UNIX中),我不得不调用函数“tcsendbreak”,这意味着我必须编写一个程序。 我徘徊,如果我可以使用一些特定的键发送,如^ C等。
不要甲方“回声”x“> / proc / sysrq-trigger”“,我知道,只是有其他方式的讨论:)

这是我的terminal设置,我用ckermit与目标交谈。

stty -a < /dev/ttyUSB0 speed 115200 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 echoctl echoke 

从文档看来, Control-\ B将在C-Kermit中发送一个中断。

其他方法…

发送休息的一种方式是:

  1. 切换到更低的速度
  2. 发送Nul(0)或@(40 16 ) – 具有多个连续0位的字符将产生称为BREAK的成帧错误。
  3. 切换回原来的速度

正如你所说,另一种方法是使用<termios.h>行控制功能。

 #include <termios.h> int tcsendbreak(int fildes, int duration); // "duration" is ignored