Part Number: AM6442
Other Parts Discussed in Thread: TMDS64EVM,
Hi,
My customer is reported an issue with USB.
SW: Linux SDK 8.6
HW: AM64x SR2 EVM
Test procedure.
Step#1: After Linux boot-up, connect EVM with Host PC.
Step#2: executes below commands in Linux console on EVM.
# chmod 755 Set_Composite_USBD_new_mod.sh
# ./Set_Composite_USBD_new_mod.sh
(Set_Compose_USBD_new_mod.sh is below)
#!/bin/sh # # Script: USBD composite device setting for A-BRID(BX400/600) # Author: Shinji Koizumi # #### 1 : Load composite driver echo "*** 1 : Load composite driver">/dev/console0 modprobe libcomposite sleep 1 #### 2 : Create composite device echo "*** 2 : Create composite device">/dev/console0 mkdir -p /sys/kernel/config/usb_gadget/g1 #### 2-1 : Set value to device descriptor # [Notes] Refer to the self-diagnosis code for "idVendor" and "idProduct" echo "*** 2-1 : Set value to device descriptor">/dev/console0 echo 0x0001 > /sys/kernel/config/usb_gadget/g1/idVendor echo 0x0002 > /sys/kernel/config/usb_gadget/g1/idProduct echo 0x0010 > /sys/kernel/config/usb_gadget/g1/bcdDevice echo 0x0020 > /sys/kernel/config/usb_gadget/g1/bcdUSB echo 0x40 > /sys/kernel/config/usb_gadget/g1/bMaxPacketSize0 echo 0xEF > /sys/kernel/config/usb_gadget/g1/bDeviceClass echo 0x02 > /sys/kernel/config/usb_gadget/g1/bDeviceSubClass echo 0x01 > /sys/kernel/config/usb_gadget/g1/bDeviceProtocol #### 2-2 : Set string to string descriptor # [Notes] Refer to DOM for below strings echo "*** 2-2 : Set string to string descriptor">/dev/console0 mkdir -p /sys/kernel/config/usb_gadget/g1/strings/0x409 echo '123456' > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber echo 'Test Corp' > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer echo 'abcdef'> /sys/kernel/config/usb_gadget/g1/strings/0x409/product #### 3 : Create config descriptor echo "*** 3 : Create config descriptor">/dev/console0 mkdir -p /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409 echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes echo "CDC RNDIS + PRINTER" > /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409/configuration #### 4 : Load function drivers echo "*** 4 : Load function drivers">/dev/console0 mkdir -p /sys/kernel/config/usb_gadget/g1/functions/rndis.usb0 mkdir -p /sys/kernel/config/usb_gadget/g1/functions/printer.usb0 sleep 1 #### 5 : Set each functions # [Notes] Refer to DOM for below strings echo "*** 5 : Set each functions">/dev/console0 # PRINTER echo 'MFG:TOSHIBA;CMD:TPCL;MDL:BX400/600;CLS:PRINTER;DES:TOSHIBA BX400/600;' > /sys/kernel/config/usb_gadget/g1/functions/printer.usb0/pnp_string echo 10 > /sys/kernel/config/usb_gadget/g1/functions/printer.usb0/q_len #### 6 : Associate function and config echo "*** 6 : Associate function and config">/dev/console0 ln -s /sys/kernel/config/usb_gadget/g1/functions/rndis.usb0 /sys/kernel/config/usb_gadget/g1/configs/c.1/rndis.usb0 ln -s /sys/kernel/config/usb_gadget/g1/functions/printer.usb0 /sys/kernel/config/usb_gadget/g1/configs/c.1/printer.usb0 #### 7 : Activate UDC # [Notes] If you deactivate the UDC, execute 'echo "" > /sys/kernel/config/usb_gadget/g1/UDC' echo "Wait for UDC">/dev/console0 while [ -z "$(ls /sys/class/udc)" ]; do sleep 1; done echo "*** 7 : Activate UDC">/dev/console0 ls /sys/class/udc > /sys/kernel/config/usb_gadget/g1/UDC #### 8 : Link-up usb0 port echo "*** 8 : Link-up usb0 port">/dev/console0 ifconfig usb0 10.10.10.10 up sleep 1 ifconfig usb0 10.10.10.10 up sleep 1 ifconfig
Now the EVM is recognized as printer.
Step#3: executes below command in Linux console on EVM.
# > while true; do cat /boot/Image.gz > /dev/g_printer0 ; sleep 1; done
Step#4: Disconnect USB cable. Then console is locked.
Console log is attached.
am64xevmsdk0806usbcableoutcalltrace.txt
Could you try to reproduce it on your side and provide solution?
Thanks and regards,
Koichiro Tashiro