usb转uart 芯片 pl2303 驱动

本文介绍USB转UART芯片PL2303的驱动问题,特别是当TX被拉低时可能导致ttyUSB0无法正常工作的状况。驱动初始化和退出过程中,涉及设备和驱动的注册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

usb转uart芯片pl2303.台湾出品,不是很好用,TX被拉低后,容易造成ttyUSB0不能正常工作,经常不识别。

关键驱动如下:
1. init/exit: 内容就是注册 pl2303_device 和 pl2303_driver,很简单。

static int __init pl2303_init(void)
{
    int retval;

    retval = usb_serial_register(&pl2303_device);   //注册usb-serial 设备
    if (retval)
        goto failed_usb_serial_register;
    retval = usb_register(&pl2303_driver);  //注册pl2303 usb驱动
    if (retval)
        goto failed_usb_register;
    printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n");
    return 0;
failed_usb_register:
    usb_serial_deregister(&pl2303_device);
failed_usb_serial_register:
    return retval;
}

static void __exit pl2303_exit(void)
{
    usb_deregister(&pl2303_driver);   //退出时,反序注销
    usb_serial_deregister(&pl2303_device);
}

module_init(pl2303_init);
module_exit(pl2303_exit);

MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");

module_param(debug, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(debug, "Debug enabled or not");
2. struct usb_serial_driver pl2303_device: 这是一个最总的结构体,pl2303_device,包含了usb-serial 芯片的几乎所有功能。

    /* All of the device info needed for the PL2303 SIO serial converter */
    static struct usb_serial_driver pl2303_device = {
        .driver = {
            .owner = THIS_MODULE,
            .name = "pl2303",
        },
        .id_table = id_table,
        .usb_driver = &pl2303_driver,
        .num_ports = 1,
        .open = pl2303_open,
        .close = pl2303_close,
        .dtr_rts = pl2303_dtr_rts,
        .carrier_raised = pl2303_carrier_raised,
        .write = pl2303_write,
        .ioctl = pl2303_ioctl,
        .break_ctl = pl2303_break_ctl,
        .set_termios = pl2303_set_termios,
        .tiocmget = pl2303_tiocmget,
        .tiocmset = pl2303_tiocmset,
        .read_bulk_callback = pl2303_read_bulk_callback,
        .read_int_callback = pl2303_read_int_callback,
        .write_bulk_callback = pl2303_write_bulk_callback,
        .write_room = pl2303_write_room,
        .chars_in_buffer = pl2303_chars_in_buffer,
        .attach = pl2303_startup,
        .release = pl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值