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.

[参考译文] J721EXCPXEVM:我想使用 USB FFS ADB 接口批量传输。 (不用于调试)

Guru**** 657930 points
Other Parts Discussed in Thread: TDA4VM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1211933/j721excpxevm-i-want-to-use-usb-ffs-adb-interface-for-bulk-transfer-not-for-debug

器件型号:J721EXCPXEVM
主题中讨论的其他器件:TDA4VM

我目前正在 J721电路板和 Windows PC 之间开发 USB 连接、但我会遇到一些困难。

这是原理图。

J721的 SW 3.4处于打开状态、以在 USB0中启用双角色模式。

我使用以下预编译映像并使用 SD 卡进行引导: https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-bA0wfI4X2g/08.04.00.06/ti-processor-sdk-rtos-j721e-evm-08_04_00_06-prebuilt.tar.gz

我使用以下脚本打开了 adb 界面。

modprobe g_ffs
 
udc_dev=6000000.usb
 
mkdir -p /config/usb_gadget/g1
cd /config/usb_gadget/g1
 
echo 0x1d6b > idVender
echo 0x0105 > idProduct
 
echo 0x0000 > bcdDevice
echo 0xEF > bDeviceClass
echo 0x02 > bDeviceSubClass
echo 0x01 > bDeviceProtocol
 
mkdir -p strings/0x409
serialnumber=0
 
echo "${serialnumber}" > strings/0x409/serialnumber
echo "Texas Instruments" > strings/0x409/manufacturer
echo "J721 Board" > strings/0x409/product
 
cfg=configs/c.1
mkdir -p "${cfg}"
 
func=functions/ffs.adb
mkdir -p {$func}
ln -sf "${func}" "${cfg}"
 
echo 500 > ${cfg}/MaxPower
 
mkdir -p /dev/usb-ffs/adb
mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb
echo "${udc_dev}" > UDC

如果我们在 J721中调用 adb_open ()和 adb_read ()、我可以在 Windows 主机 PC 的设备管理器中找到此器件

在 USB 设备查看器中、我可以看到这个结果

          ===>Device Descriptor<===
bLength:                           0x12
bDescriptorType:                   0x01
bcdUSB:                          0x0210
bDeviceClass:                      0x00  -> This is an Interface Class Defined Device
bDeviceSubClass:                   0x00
bDeviceProtocol:                   0x00
bMaxPacketSize0:                   0x40 = (64) Bytes
idVendor:                        0x1D6B = The Linux Foundation
idProduct:                       0x0105
bcdDevice:                       0x0510
iManufacturer:                     0x01
     English (United States)  "Linux 5.10.120-g95b90aa828 with usb-ss-gadget"                        (Sometimes)  *!*ERROR:  No String Descriptor for index 1!
iProduct:                          0x02
     English (United States)  "USB Function Filesystem"                                              (Sometimes)  *!*ERROR:  No String Descriptor for index 2!
iSerialNumber:                     0x00
bNumConfigurations:                0x01

有时、iManufacturer 字符串和 iProduct 字符串会显示错误。

我们开发了 Windows 端 GUI 程序、支持传感器配置更改。

此程序使用 libusb 库通过 USB 与电路板进行通信: https://github.com/libusb/libusb

预编译的内核模块 g_fss.ko 包括 IAD、CDC、RNDIS 配置。 libusb 库不支持这种情况。 因此、我编译了新的 g_fs.ko 模块、其中排除了这些配置

  • 我使用了 ti-processor-sdk-linux-j7-evm- 08_04_00_11 -Linux-x86-Install.bin 和  Linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828 代码。
  • 在内核源代码的.config 中、 CONFIG_USB_FUNCHTIONFS_ETH   CONFIG_USB_FUNCHTIONFS_RNDIS  未设置

在这种情况下、libusb 可以打开该器件。 但当 libusb 尝试读取或写入时,它显示错误: libusb_error_pipe(-9)

https://vovkos.github.io/doxyrest/samples/libusb/enum_libusb_error.html

但是、其他制造商的电路板能够使用我们的方法通过 USB 进行通信。

我找到 TDA4VM 不支持 ADB 的链接: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/990602/tda4vm-add-adb-function-in-ti-linux-sdk

不过、  ADB 接口可在 Windows PC 中找到 。 因此、我想知道是否应该在 SDK 中另外安装 ADB 功能。 与链接问题不同、 我不会将 ADB 用作调试方法。

您能告诉我在这个过程中有什么错吗?

或者、是否有通信 Windows 主机 PC 的良好解决方案?

感谢您的阅读。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我制作了一个新的 Yocto rootfs 映像、其中包括 android-tools 。  批量传输仍无法正常工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Jungwoo  

    ADB 是否有任何具体要求?

    是否要将设备的 SD/eMMC 安装到主机 PC 上?

    Regarsd
    Diwakar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想使用 ADB 将批量传输用作设备 J21 <-->主机 PC

    我不想安装 SD/eMMC。 我的程序使用 ADB_OPEN()、ADB_READ ()等 ADB 接口功能。

    主机 PC 中的 libusb 显示错误-5 (libusb_error_not_found、not found)、-9 (libusb_error_pipe)

    你有什么想法吗?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、jungwoo  

    您是否使用 uboot 如果是、您可以使用"ums "命令在主机侧安装 SD/eMMC、我们从未测试/验证过 ADB 功能、因为它特定于 Android。

    此致
    Diwakar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的答复