usb gadget 串口(serial)的配置和使用

usb gadget 串口(serial)的配置和使用

本篇文章主要是配置内核并使用 usb 的 gadget 的串口,即将带有usb口的linux平台,虚拟成一个串口设备。包括内核配置,加载和使用方法。最终在linux平台上会在创建出一个 /dev/ttyGS*节点。

首先保证平台设备树中的相应的usb口的配置是slave模式,可以是 peripheral 模式,或者 otg。例子如下:

usb相关的节点中属性 dr_mode = "otg"; ,或者 dr_mode = "peripheral";

然后配置menuconfig中的相关项,我配置成的是模块加载的形势

make menuconfig

> Device Drivers > USB support > USB Gadget Support

1ae113abedfa4825b20a5b16bcf50162.png

make 时,生成的文件所在位置 drivers/usb/gadget/libcomposite.ko 和 drivers/usb/gadget/legacy/下的 u_serial.ko 和 drivers/usb/gadget/function/ 下的u_serial.ko usb_f_serial.ko usb_f_acm.ko。

在系统起来后分别按顺序加载

> insmod libcomposite.ko

> insmod u_serial.ko

> insmod usb_f_serial.ko

> insmod usb_f_acm.ko

> insmod u_serial.ko

注:如果没有acm,需要配置上

menuconfig中的 > Device Drivers > USB support >

    USB Modem (CDC ACM) support

即使勾选上编译进内核了,仍然需要 usb_f_acm.ko 模块的加载。

让window识别可能还需要这个文件 linux-cdc-acm.inf ,这个文件是在内核源码的 Documentation\usb目录下,电脑识别后的现象是自动识别出了com口

bf787696766a74e5cdd2ef73a0ac8b5b.png

波特率等的配置不影响通信,

当我们用串口助手打开并发送数据时,是自发自收,当我们在板子中向节点发送数据时,串口助手能收到

自发自收

dbfc0464123af94fea072bbc2f887da0.png

板子向电脑发送

2070e9baee7a3938c2f07e17f48c9c6c.png

481a12ee96aca7d191908d0e2af1e310.png

/dev 下自动创建了设备节点,如果需要手动创建,需要查看下设备节点主设备号

> cat /sys/class/tty/ttyGS0/dev

usb gadget 串口(serial)的配置和使用相关教程

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐