从linux内核使用uart驱动程序

时间:2015-07-22 14:34:08

标签: linux-kernel driver uart tty

有一个外部设备(传感器键盘)连接到处理器thrue uart端口(tx rx)和gpio中断线。需要为这个键盘编写驱动程序(不是标准的自有协议,linux内核4.1)。

我在线路规则上编写了模块,并在open()函数上请求了irq(从用户空间/ dev / ttymxc3打开时)。它的工作正常,但是线路规则结构没有为暂停和恢复功能发布回调。

系统休眠时需要释放睡眠键盘。

我尝试编写使用uart驱动程序的tty驱动程序,但不知道如何操作。 如何从内核模块与外部设备进行通信,使用uart端口?

感谢。

1 个答案:

答案 0 :(得分: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