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

此功能是使用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.ko
g_audio.ko         g_hid.ko           g_ncm.ko           gadgetfs.ko
g_cdc.ko           g_mass_storage.ko  g_printer.ko
g_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"


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值