У меня уже есть функциональный код для последовательного драйвера в пользовательском пространстве Linux, который находится поверх FPGA, со следующими API:
/*
* Send the buffer using the Uart.
*/
uart_configure(int channelNum, int baudrate, int stopbit, int startbit, int
parity, int flowcntr);
/*
* Receive buffer
* Returns: number of bytes read.
*/
int uart_recv (int channelNum, char* ReceiveBuffer, int size);
/*
* Send the buffer using Uart.
* Returns: number of bytes sent.
*/
int uart_send(int channelNum, char* SendBuffer, int size);
Но что, если нам нужно, чтобы он отображался как обычныйпоследовательное устройство (/ dev / ttySx)?
Для этого я подумал о следующих параметрах:
Реализация обычного последовательного драйвера в ядре.
Используйте pty (псевдотерминал), здесь происходит нечто подобное: https://github.com/carloop/can-utils-osx/blob/master/slcanpty.c
Оберните эти API cuse - символьное устройство пользовательского пространства https://libfuse.github.io/doxygen/cuse_8c.html
Я думаю, что оба варианта (2) и (3) должны работать нормально, но вариант (3) кажется лучшим.
Что вы думаете?Можно ли создать обычный сериал, обернув API cuse?