本文基于触觉智能RK3506开发板,为大家介绍配置USB复合设备,本章节将介绍UMS和ACM复合设备数据交互。

UMS
UMS是USB协议体系中定义大容量存储设备通信规范的标准化协议,通过批量传输协议实现主机与存储设备间的数据交换,给Host设备提供⼤容量外挂存储。兼具兼容性强、即插即用、传输稳定的特点,UMS与MTP有以下区别:
● UMS以Block为单位⼯作; MTP则以⽂件为单位⼯作。
● UMS⼯作时, ⽬标Block为独占⼯作,多⽤⼾操作同⼀Block将会出现错误; MTP⽀持多⽤⼾操作。
在/kernel/arch/arm/configs/rk3506_defconfig文件中,增加如下配置:
# ush_otg_rndis CONFIG_USB_MASS_STORAGE=m
成功添加后重新编译kernel,命令如下:
cd ./build.sh kernel
编译成功后,会生成usb_f_mass_storage.ko、g_mass_storage.ko,将其拷贝至开发板的任意目录下,并进行安装,命令如下:
insmod usb_f_mass_storage.ko insmod g_mass_storage.ko
执行以下命令,开启UMS功能:
echo usb_ums_en > /etc/init.d/.usb_config echo "ums_block=/dev/block/by-name/userdata" >> /etc/init.d/.usb_config /usr/bin/usbdevice restart
开启后,可以在PC上看到一个新的U盘盘符,表示挂载⼤容量外挂存储成功:

ACM
ACM全称Abstract Control Model 抽象控制模型, 是 USB-IF 定义的通信设备类(CDC)子协议,核心功能是让USB设备模拟成串口设备,在主机(Host)和设备(Device)两端生成 TTY(Teletypewriter)字符设备节点,实现全双工的数据交互。
在/kernel/arch/arm/configs/rk3506_defconfig文件中,增加如下配置:
# ACM CONFIG_USB_ACM=m CONFIG_USB_F_ACM=m
成功添加后重新编译kernel,命令如下:
cd ./build.sh kernel
编译成功后,会生成u_serial.ko、usb_f_acm.ko,将其拷贝至开发板的任意目录下,并进行安装,命令如下:
insmod u_serial.ko insmod usb_f_acm.ko
执行以下命令,开启ACM功能:
echo usb_acm_en > /etc/init.d/.usb_config /usr/bin/usbdevice restart
完成后,可以在开发板识别如下节点:
root@rk3506-buildroot:/root# ls /dev/ttyGS0 /dev/ttyGS0 root@rk3506-buildroot:/root#
打开PC端的调试工具,可以识别出一个USB串行设备,如下:

开发板可以通过以下命令,查看usb串口波特率。另外,串口波特率可通过microcom等工具设置:
stty -F /dev/ttyGS0
开发板与PC端收发测试:

基于RK3506核心板、开发板的USB复合设备教程就此完结,关注触觉智能,为您带来更多硬核技术干货与工业嵌入式解决方案。
全部0条评论
快来发表一下你的评论吧 !