Использовать драйвер UART из ядра Linux
Существует внешнее устройство (сенсорная клавиатура), подключенное к порту UART процессора (tx rx) и линии прерывания gpio. Нужно написать драйвер для этой клавиатуры (не стандартный собственный протокол, ядро linux 4.1).
Я написал модуль со строчной дисциплиной и запросил функцию irq для open() (когда он открыт из пространства пользователя /dev/ttymxc3). Это работа, но структура линейной дисциплины не имеет освобожденных обратных вызовов для функций приостановки и возобновления.
Необходимо отключить спящую клавиатуру, когда система спит.
Я пытаюсь написать драйвер tty, который использует драйвер uart, но не знаю как. Как связаться с модулем ядра с внешними устройствами через порт UART?
Благодарю.
1 ответ
Вы можете использовать устройство UART в пространстве ядра
// call userspace
{
mm_segment_t fs;
fs=get_fs();
set_fs(get_ds());//KERNEL DS
handle = sys_open(UTS_UART_DEV_NAME, O_RDWR | O_NOCTTY | O_NONBLOCK, 0);
if( handle < 0 )
{
printk(KERN_INFO "UTS Port Open Fail [%s] \n ", UTS_UART_DEV_NAME);
return -1;
}
set_fs(fs);
}
// call userspace