This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
我们的一个客户尝试在 xhci0实例上针对 AM62A USB 启用 USB 测试模式。
他们当前正在使用这些命令
am62ax xhci0测试数据包
==============
devmem2 0x31000420 w 0xA0 # PORTSC、PP='0'
devmem2 0x31000020 w 0x4 # USBCMD、清除位0 (运行/停止)
devmem2 0x31000424 w 0x40000000 # POERPMSC、设置测试模式
am62ax xhci1测试数据包
==============
devmem2 0x31100420 w 0xA0
devmem2 0x31100020 w 0x4
devmem2 0x31100424 w 0x40000000
但是、无法以某种方式访问寄存器0x31000424之一。
echo host > /sys/kernel/debug/usb/31000000.usb/mode
[ 1002.887632] dwc3 31000000.usb:请求00000000249a968f 没有排队到 ep0out
[ 1002.897985] Android_work:已发送 uevent usb_state=已断开连接
[ 1002.998541] xhci-hcd xhci-hcd.2.auto: xHCI 主机控制器
[ 1002.998569] xhci-hcd xhci-hcd.2.auto:已注册新的 USB 总线、已分配总线编号1
[ 1002.998708] xhci-hcd xhci-hcd.2.auto: usb3 root hub 没有端口
[ 1002.998715] xhci-hcd xhci-hcd.2.auto: HCC 参数0x0258fe6d HCI 版本0x110 quirks 0x0000008000010010
[ 1002.998756] xhci-hcd xhci-hcd.2.auto: irq 264、io mem 0x31000000
[ 1002.999596] HUB 1-0:1.0:找到 USB HUB
[ 1002.999638]集线器1-0:1.0:检测到1个端口
第一个寄存器
devmem2 0x31000420 w 0xA0
devmem2 0x31000424 w 0x/dev/mem 已打开。
存储器映射到地址0xff83e14000。
地址0x31000420 (0xffffff83e14420)处的值:0xA0002A0
写入0xA0;读回0xA0
第二个寄存器
devmem2 0x31000020 w 0x4
/dev/mem 打开。
存储器映射在地址0xff962be000。
地址0x31000020 (0xffffff962be020)上的值:0x5
写入0x4;读回0x4
第三个寄存器
devmem2 0x31000424 w 0x40000000
/dev/mem 打开。
[1010.633870] audit:type=1701 audit (1016.340:4):auid=4294967295 uid=0 gid=0 ses=4294967295 pid=483 comm="devmem2" exe="/usr/bin/devmem2 sig =7 res=1
已在地址0xff9a9aa000处映射存储器。
总线错误(已转储内核)
问题不仅是写入该地址,甚至读取,它崩溃:
devmem2 0x31000424
/dev/mem 打开。
[1421.145698] audit : type=1701 audit (1426.852:5): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=493 comm="devmem2" exe=/usr/bin/devmem2 sig =7 res=1
在地址0xff9f620000处映射存储器。
总线错误(已转储内核)
请告知我们问题可能出在哪里。
谢谢!
——Gunter
尊敬的 Gunter:
Chen Si 说:echo host > /sys/kernel/debug/usb/31000000.usb/mode
我从不使用这种推荐方法将 USB 端口配置为主机模式、也不知道它到底在做什么。
您能否修改内核设备树以在&usb0节点中设置 dr_mode ="host"、然后运行3个 devmem2命令? 内核 devicetre 中的此 dr_mode 设置将 USB0端口配置为主机模式。
刘斌、您好!
尊敬的 Armando:
我刚刚在具有 Processor SDK v9.1 Linux 映像的 SK-AM62A EVM 上尝试了3条 devmem2命令、但我没有看到此总线错误问题。
Chen Si 说:echo host > /sys/kernel/debug/usb/31000000.usb/mode
[ 1002.887632] dwc3 31000000.usb:请求00000000249a968f 没有排队到 ep0out
[ 1002.897985] android_work:已发送 uevent usb_state=disconnected
我在内核源代码中找不到 android_work。 您使用什么内核?
您好、Bin Liu
我们使用的 TI Linux 内核基于:
版本= 6
PATCHLEVEL = 1
SUBLEVEL = 80
EXTRAVERSION =
NAME =咖喱拉面
您看到的日志来自 Android 的 adb (drivers/usbgadget/configfs.c)
TI 的内核不支持 ADB;因此我添加了一些更改来支持 ADB。
在第二次测试中、我执行了强制 USB 模式作为主机;因此 ADB 小工具不应产生干扰。 您认为我应该删除 USB 小工具内核 defconfigs 吗?
Armando
尊敬的 Armando:
我想不出为什么在前2次写入通过时第三次寄存器写入会失败、因此值得尝试仅使用 SDK 中的内核 defconfig、而不进行任何更改、这与我所做的操作接近。
我还注意到 devmem2命令的输出格式与我的不同、因此您似乎没有使用 SDK 中提供的 Linux rootfs。 因此、可能还需要切换 SDK rootfs 以查看 devmem2程序是否起作用。
您好、Bin Liu
我从 SDK 10.00.00.08获得了 devmem2工具(以及需要的运行时库)、然后3个寄存器开始读取并运行
devmem2 0x31000420 w 0xA0
/dev/mem 打开。
存储器映射在地址0xffa24ac000。
在地址0x31000420 (0xffa24ac420)上读取:0x0A0002A0
在地址0x31000420 (0xffa24ac420)处写入:0x000000A0、回读0x000000A0
devmem2 0x31000020 w 0x4
/dev/mem 打开。
已映射地址0xffa17bc000处的存储器。
在地址0x31000020 (0xffffff17bc020)上进行读取:0x00000005
在地址0x31000020 (0xffffff17bc020)上进行写入:0x00000004、回读0x00000004
devmem2 0x31000424 w 0x40000000
/dev/mem 打开。
内存映射在地址0xFFffbcbcd000。
在地址0x31000424 (0xFFffbcbcd424)上读取:0x00000000
在地址0x31000424 (0xFFffbcbcd424)上写入:0x40000000、回读0x40000000
您是否知道 TI 的 SDK 从何处获得 devtool2源代码? 我需要在我们的环境中构建它
内核更改不会影响这一点。 这只是你们得到的特定 devmem2风格。
谢谢
尊敬的 Armando:
很高兴看到问题的根源已确定。 以下链接显示了 GitHub 上 devmem2的源。