USB调试

可通过命令
root@TinaLinux:/# cat sys/devices/platform/soc/usbc0/otg_role
usb_device
确认当前usb处于什么模式
手动切换成HOST模式:
cat /sys/devices/platform/soc/usbc0/usb_host
手动切换成Device模式:
cat /sys/devices/platform/soc/usbc0/usb_device
注意,手动切换模式后,OTG自动切换角色的功能就会失效。

开启角色切换模式:

echo 1 > /sys/devices/platform/soc/usbc0/hw_scan_debug

常用功能配置有ADB , MTP , Mass Storage, RNDIS,UAC1,HID,printer ,多功能复合设备
功能切换命令:
setusbconfig adb
setusbconfig mtp

下面介绍一下Audio相关UAC1的配置:

  1. 内核的配置要加上Audio Class 1.0 USB Audio/MIDI driver (USB声卡)
  2. configfs相关配置:
    echo 0x1d61 > /sys/kernel/config/usb_gadget/g1/idVendor
    echo 0x0101 > /sys/kernel/config/usb_gadget/g1/idProduct
  3. 创建uac1功能:
    mkdir /sys/kernel/config/usb_gadget/g1/functions/uac1.sub0
  4. 设置通道数掩码,例如支持两通道:
    echo 0x3 > /sys/kernel/config/usb_gadget/g1/functions/uac1.sub0/c_chmask
    echo 0x3 > /sys/kernel/config/usb_gadget/g1/functions/uac1.sub0/p_chmask
    注意我们默认代码UDC的endpoint中仅有一个ISO端点,所以只支持单项的同步传输,默认会将p_chmask设置为0,也就是关闭playback通路
  5. 设置采样率:
    echo 16000 > /sys/kernel/config/usb_gadget/g1/functions/uac1.sub0/p_srate
    echo 48000 > /sys/kernel/config/usb_gadget/g1/functions/uac1.sub0/c_srate
  6. 建立config软链接:
    ln -s /sys/kernel/config/usb_gadget/g1/functions/uac1.sub0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/uac1.sub0
  7. 设置对应的UDC控制器名称:
    udc_controller=‘ls /sys/class/udc’
    echo $udc_controller > /sys/kernel/config/usb_gadget/g1/UDC

使用方法:
默认配置卞,仅使能了c_chnask,即PC端往小机端送音频数据,小机端播放出来
小机端执行setusbconfig uac1设置功能后,会在PC端枚举生成一个USB声卡,PC端选择使用该声卡进行播放
然后小机端执行下面命令:
arecord -Dhw:UAC1Gadget -f S16_LE -r 48000 -c 2 |aplay
表示从虚拟声卡(拿到PC端送来的数据)录音,然后直接播放出来

修改产品序列号:
通过adb devices可得到当前序列号为20080411,存在的路径为lichee/brandy-2.0/u-boot-2018/drivers/sunxi_usb/usb_fastboot.h中

测试USB速率:
写性能:
time dd if=/dev/zero of=/mnt/UDISK/test.bin bs=1MB count=1024
root@TinaLinux:/# time dd if=/dev/zero of=/mnt/UDISK/test.bin bs=1MB count=1024
1024+0 records in
1024+0 records out
real 0m 8.13s
user 0m 0.00s
sys 0m 8.10s
所以写性能为:1024/8.13=125.95Mb/s

读性能:
time dd if=/mnt/UDISK/test.bin of=/dev/null bs=1MB count=1024
root@TinaLinux:/# time dd if=/mnt/UDISK/test.bin of=/dev/null bs=1MB count=1024
1024+0 records in
1024+0 records out
real 0m 6.17s
user 0m 0.01s
sys 0m 1.89s
所以读性能为:1024/6.17=165.96Mb/s

USB1调试节点:
1.卸载主机驱动
echo 0 > /sys/devices/platform/soc/5200000.ehci1-controller/ehci_enable
echo 0 > /sys/devices/platform/soc/5200000.ohci1-controller/ohci_enable
2.加载主机驱动
echo 1 > /sys/devices/platform/soc/5200000.ehci1-controller/ehci_enable
echo 1 > /sys/devices/platform/soc/5200000.ohci1-controller/ohci_enable

USB眼图测试
1.USB0 OTG Device眼图测试
手动切换Device模式
cat /sys/devices/platform/soc/usbc0/usb_device
每个芯片平台的节点路径会有差异,可通过find命令确认
find /sys -name otg_ed_test
root@TinaLinux:/# find /sys -name otg_ed_test
/sys/devices/platform/soc/5100000.udc-controller/otg_ed_test
眼图测试命令:
echo test_pack > /sys/devices/platform/soc/5100000.udc-controller/otg_ed_test
2.USB0 OTG HOST眼图测试
手动切换Host模式
cat /sys/devices/platform/soc/usbc0/usb_host
每个芯片平台的节点路径会有差异,可通过find命令确认(注意选择带有ehci0的路径)
find /sys -name ed_test
眼图测试命令:
echo test_pack > /sys/devices/platform/soc/5101000.ehci0-controller/ed_test
3.USB1 Host眼图测试
每个芯片平台的节点路径会有差异,可通过find命令确认(注意选择带有ehci1的路径)
find /sys -name ed_test
眼图测试命令:
echo test_pack > /sys/devices/platform/soc/5200000.ehci1-controller/ed_test

开启网络adb
修改package/utils/adb/adbd-configfs.init
取消下面的注释
#ADB_TRANSPORT_PORT=5555 (网络adb默认是关闭的)
保证小机端和PC在同一个局域网,并且可以ping通
可通过adb connect ip命令连接设备
daniel@daniel-VirtualBox:~/MR813/v2.0/target/allwinner/mr813-evb2$ adb connect 192.168.43.17
connected to 192.168.43.17:5555
daniel@daniel-VirtualBox:~/MR813/v2.0/target/allwinner/mr813-evb2$ adb shell

BusyBox v1.27.2 () built-in shell (ash)


|_ ||| ___ _ _ | | || ___ _ _ _ _
| | _ | || | | |__ | || || | ||
'|
| | | || | || _ | |_____||
|||||||,|
|
| |||||||_| Tina is Based on OpenWrt!

Tina Linux (Neptune, 5C1C9C53)

root@TinaLinux:/#

MtpTools
MtpDaemon作为responder处理并回应PC发送过来的MTP消息,因此在PC上可以对小机端的目录、文件进行操作。但是为了让小机端的修改能够
同步到PC上,Tina提供了MtpTools。
MtpTools主要通过fifo发送消息给MtpDaemon,然后MtpDaemon根据该消息去更新Mtp-DataBase,即更新用于描述目录文件信息的对象,此时
PC上只需要刷新下即可同步得到小机端的修改。
新增一个名为test的文件:
MtpTools -f add -t FILE -s /mnt/UDISK/test
实际上有一种比较简单的方法就是直接更新目录信息,例如:
MtpTools -f update -t DIR -s /mnt/UDISK
这样不管该目录下进行了任何修改,全都会更新一遍(他会遍历更新所有目录、文件信息,相对耗时多一些)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值