如何在 Intel-Edison [C++] 上打开 ttyMFD 设备?
How do I open a ttyMFD device on the Intel-Edison [C++]?
我有一个 /dev/ttyUSB
设备和一个 /dev/ttyMFD
设备,我需要将它们流式传输到日志文件。对于 USB 设备,我可以使用 termios
并通过它进行配置。这非常简单,也有一些文档。
不过我似乎找不到 MFD 的任何内容。有些地方称它为 MultiFuctionDevice,有些地方称它为 Medfield High Speed UART 设备。
首先哪个是正确的?
其次,我可以像打开普通 ttyUSB 设备一样打开它吗?
这是我用来打开 USB 设备的代码片段。
int fd = open(USBDEVICE0, O_RDWR);
struct termios io;
memset(&io, 0, sizeof(io));
io.c_iflag = 0;
io.c_oflag = 0;
io.c_cflag = CS8|CREAD|CLOCAL; // 8n1, see termios.h for more information
io.c_lflag = 0;
// TODO -- Since we are operating in non-blocking mode; confirm VMIN and VTIME settings have no effect on duration of the read() call.
io.c_cc[VMIN] = 1;
io.c_cc[VTIME] = 5;
speed_t speedSymbol = B921600;
cfsetospeed(&io, speedSymbol);
cfsetispeed(&io, speedSymbol);
int retVal;
retVal = tcsetattr(fd, TCSANOW, &io);
tcflush(fd, TCIOFLUSH);
usleep(100);
编辑
对于遇到此问题的任何人,有一个警告。您必须以原始模式打开设备并将所有内容转储到日志文件中。必须进行解析 post。一切都会以原始数据的形式出现,但如果您尝试进行任何类型的配置,设备缓冲区将无法捕获所有数据、保存它并在更多数据出现之前及时处理它。
MFD in Linux kernel 是 Multi-Functional Device 的常见缩写,Edison 的 Legacy serial driver 滥用它和正如您提到的那样使用它自己的解释:Medfield。在上游内核中,缩写 MID 用于 Mobile Internet Device。特别是串行驱动程序称为 drivers/tty/serial/8250_mid.c。参见 https://en.wikipedia.org/wiki/Mobile_Internet_device。
是的,您可以执行与 /dev/ttyUSBx.
相同的操作
我有一个 /dev/ttyUSB
设备和一个 /dev/ttyMFD
设备,我需要将它们流式传输到日志文件。对于 USB 设备,我可以使用 termios
并通过它进行配置。这非常简单,也有一些文档。
不过我似乎找不到 MFD 的任何内容。有些地方称它为 MultiFuctionDevice,有些地方称它为 Medfield High Speed UART 设备。 首先哪个是正确的?
其次,我可以像打开普通 ttyUSB 设备一样打开它吗?
这是我用来打开 USB 设备的代码片段。
int fd = open(USBDEVICE0, O_RDWR);
struct termios io;
memset(&io, 0, sizeof(io));
io.c_iflag = 0;
io.c_oflag = 0;
io.c_cflag = CS8|CREAD|CLOCAL; // 8n1, see termios.h for more information
io.c_lflag = 0;
// TODO -- Since we are operating in non-blocking mode; confirm VMIN and VTIME settings have no effect on duration of the read() call.
io.c_cc[VMIN] = 1;
io.c_cc[VTIME] = 5;
speed_t speedSymbol = B921600;
cfsetospeed(&io, speedSymbol);
cfsetispeed(&io, speedSymbol);
int retVal;
retVal = tcsetattr(fd, TCSANOW, &io);
tcflush(fd, TCIOFLUSH);
usleep(100);
编辑
对于遇到此问题的任何人,有一个警告。您必须以原始模式打开设备并将所有内容转储到日志文件中。必须进行解析 post。一切都会以原始数据的形式出现,但如果您尝试进行任何类型的配置,设备缓冲区将无法捕获所有数据、保存它并在更多数据出现之前及时处理它。
MFD in Linux kernel 是 Multi-Functional Device 的常见缩写,Edison 的 Legacy serial driver 滥用它和正如您提到的那样使用它自己的解释:Medfield。在上游内核中,缩写 MID 用于 Mobile Internet Device。特别是串行驱动程序称为 drivers/tty/serial/8250_mid.c。参见 https://en.wikipedia.org/wiki/Mobile_Internet_device。
是的,您可以执行与 /dev/ttyUSBx.
相同的操作