首页 > 编程知识 正文

04 H5使用usb_otg接口作虚拟设备

时间:2023-05-06 11:10:29 阅读:227649 作者:1794

此功能是使用linux内核usb子系统里gadget实现的.
配置内核,使用gadget里所需的功能模块:

//在内核源码目录下打开终端:make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-Device Drivers ---> [*] USB support ---> <*> USB Gadget Support ---> <M> USB Gadget Drivers <M> Audio Gadget //让板通过usb线连接pc时, 板作声卡的角色 <M> Ethernet Gadget (with CDC Ethernet support) //作网卡的角色 <M> Mass Storage Gadget //作u盘的角色 <M> Serial Gadget (with CDC ACM and CDC OBEX support) //作uart的角色 <M> Printer Gadget //作打印机的角色 <M> HID Gadget //作如鼠标,键盘的人机交互设备角色//内核里原已选上,可不作修改. //编译内核里的驱动模块(选'M'项)make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules//如果配置内核时修改了选项,则还需要编译内核镜像并更新sd卡里的内核镜像编译完成后,还需要把编译出来的.ko驱动模块安装到sd卡文件系统里.如sd接上pc后, ext4分区挂载到/run/media/jk/ROOTFS目录里, 则:make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/run/media/jk/ROOTFS//为了备份,也可以在安装一份到前面的_install目录里, 只需通过INSTALL_MOD_PATH指定路径即可.把卡接回板上启动并进入系统后,所需驱动模块在:ls /lib/modules/4.11.2/kernel/drivers/usb/gadget/legacy/g_acm_ms.ko g_ffs.ko g_multi.ko g_zero.kog_audio.ko g_hid.ko g_ncm.ko gadgetfs.kog_cdc.ko g_mass_storage.ko g_printer.kog_ether.ko g_midi.ko g_serial.ko

使用相应功能的驱动模块:

//注意:通过otg作的虚拟设备角色一时刻只能作一种角色,只有把原角色的驱动模块卸载后才可以加载另一种功能的驱动模块把板上的sd卡的mmcblk0p2分区作u盘:modprobe g_mass_storage file=/dev/mmcblk0p2 removable=1 //命令执行后, 在pc上会像u盘一样弹出界面,然后就可以在pc上访问板上的sd卡分区里.//当需要再作另一种功能时,需要"rmmod g_mass_storage"卸载此功能的驱动模块把板作一个uart设备接入pc:modprobe g_serial //命令执行后,板上的系统会多"/dev/ttyGS0"设备文件, pc系统上会多一个"/dev/ttyACM0"设备文件//两个设备一个读和另一个作写操作就可以接收到数据把板作一个网卡接入pc:modprobe g_ether命令执行后, 板上的网络设备会多"usb0"设备, pc系统上会多一个网络设备"enp0s29f7u5"(名字不是固定的)然后把两个设备设置同一个网段后,测试ping通后,在板上就可以挂载pc上的nfs共享目录了.// 注意设置的ip地址不能与同一系统里的其它网卡的ip地址同一网段// 在板上挂载pc的nfs目录时,记得加上参数"-o nolock,tcp"

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。