USB mass storage gadget on SAMA5D2

Mihai.Sain at microchip.com Mihai.Sain at microchip.com
Fri May 26 15:20:20 CEST 2023


Hi Zixun,

I recommend to use sam-ba in order to flash the eMMC partitions: boot1, boot2, user0.
sam-ba download links:
https://ww1.microchip.com/downloads/aemDocuments/documents/MPU32/ProductDocuments/SoftwareLibraries/Firmware/sam-ba_v3.7-linux_x86_64.tar.gz
https://ww1.microchip.com/downloads/aemDocuments/documents/MPU32/ProductDocuments/SoftwareLibraries/Firmware/sam-ba_v3.7-win32.zip

For writing the bootstrap binary into boot1 partition, run the following command:

sam-ba -p serial -d sama5d2:0:1 -a sdmmc:0:1:1:8:4 -c writeboot:boot.bin -c enablebootpartition:1

For help please run:

sam-ba -p serial -d sama5d2 -a sdmmc:help

Syntax: sdmmc:[<instance>]:[<ioset>]:[<partition>]:[<bus_width>]:[<voltages>]
Parameters:
    instance   SDMMC controller number
    ioset      SDMMC I/O set
    partition  Partition number (0=user partition, x>0=boot partition x)
    bus_width  Data bus width (0=controller max, 1=1-bit, 4=4-bit, 8=8-bit)
    voltages   Supported voltages (bitfield: 1=1.8V, 2=3.0V, 4=3.3V)

Regards,
Mihai

________________________________
From: admin LI <admin at hifiphile.com>
Sent: Friday, May 26, 2023 15:13
To: Cristian Birsan - M91496 <Cristian.Birsan at microchip.com>
Cc: eugen.hristev at collabora.com <eugen.hristev at collabora.com>; lukma at denx.de <lukma at denx.de>; marex at denx.de <marex at denx.de>; u-boot at lists.denx.de <u-boot at lists.denx.de>; Mihai Sain - M19926 <Mihai.Sain at microchip.com>
Subject: Re: USB mass storage gadget on SAMA5D2

You don't often get email from admin at hifiphile.com. Learn why this is important<https://aka.ms/LearnAboutSenderIdentification>
EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
Hi Cristian,

> What are you trying to achieve ? If you want to just program the eMMC you can do it easily with SAM-BA[1].
On our board the MPU boot from the eMMC boot partition, by exposing the whole user partition as a block device we can modify the target system easily, like modifying the partition table.

I've tested the gadget works well in Linux, but it's not possible to expose the whole disk.

For reference I've implemented at91bootstrap eMMC boot partition support, both at91bootstrap and U-Boot are inside the boot partition.
https://github.com/linux4sam/at91bootstrap/pull/163
https://github.com/linux4sam/at91bootstrap/pull/164

Regards,
Zixun

On Thu, May 25, 2023 at 7:16 PM <Cristian.Birsan at microchip.com<mailto:Cristian.Birsan at microchip.com>> wrote:
Hi,

On 5/22/23 12:00, admin LI wrote:
>
>
> I think there may be some racing in the driver. (Purely assumption as a tinyusb maintainer)
> If I enable DBG_ALL in atmel_usba_udc.h, the block device is enermurated although with I/O error.

What are you trying to achieve ? If you want to just program the eMMC you can do it easily with SAM-BA[1].

The mass storage gadget works well in Linux kernel. You can have a look at the driver we have in the kernel
here[2].


[1] https://www.microchip.com/en-us/development-tool/SAM-BA-In-system-Programmer
[2] https://github.com/linux4microchip/linux/blob/linux-6.1-mchp/drivers/usb/gadget/udc/atmel_usba_udc.c

Regards,
Cristian

>
> [1337613.189788] usb 1-1: new high-speed USB device number 7 using xhci_hcd
> [1337613.674551] usb 1-1: New USB device found, idVendor=dead, idProduct=beef, bcdDevice= 2.17
> [1337613.674565] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> [1337613.674568] usb 1-1: Product: USB download gadget
> [1337613.674572] usb 1-1: Manufacturer: U-Boot
> [1337613.866033] usb-storage 1-1:1.0: USB Mass Storage device detected
> [1337613.866645] scsi host0: usb-storage 1-1:1.0
> [1337614.997803] scsi 0:0:0:0: Direct-Access     Linux    UMS disk 0       ffff PQ: 0 ANSI: 2
> [1337615.230004] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337615.706637] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337616.183308] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337616.659937] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337617.140086] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337617.616632] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337618.073323] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337618.549927] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337619.026540] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337619.499944] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337619.976679] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337620.453285] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337620.916597] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337621.393267] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337621.869676] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337622.346597] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337622.823361] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337623.293287] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337623.635357] sd 0:0:0:0: [sda] Read Capacity(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
> [1337623.635369] sd 0:0:0:0: [sda] Sense not available.
> [1337623.635376] sd 0:0:0:0: [sda] 0 512-byte logical blocks: (0 B/0 B)
> [1337623.635379] sd 0:0:0:0: [sda] 0-byte physical blocks
> [1337623.756597] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337624.233274] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337624.709945] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337625.186639] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337625.663266] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337626.136617] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337626.478078] sd 0:0:0:0: [sda] Write Protect is off
> [1337626.478088] sd 0:0:0:0: [sda] Mode Sense: 00 00 00 00
> [1337626.599928] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337627.076606] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337627.553276] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337628.029936] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337628.499858] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337628.973267] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337629.313846] sd 0:0:0:0: [sda] Asking for cache data failed
> [1337629.313861] sd 0:0:0:0: [sda] Assuming drive cache: write through
> [1337629.314517] sd 0:0:0:0: [sda] Attached SCSI removable disk
> [1337629.436603] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337629.906353] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337630.373268] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337630.843284] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337631.306595] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337631.783253] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337632.259935] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337632.736612] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337633.213283] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337633.689933] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337634.146549] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337634.626586] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337635.096677] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337635.569893] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337636.043195] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337636.519877] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337636.993235] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337637.463216] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337637.926268] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337638.403221] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337638.879961] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337639.343221] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337639.813267] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337640.293319] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337640.756596] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337641.233227] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337641.709903] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337642.183232] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337642.649871] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337643.123263] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337643.586595] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337644.063281] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337644.539952] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337645.016640] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337645.493347] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337645.969975] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337646.433307] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337646.906317] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337647.366610] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337647.836558] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337648.309969] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337648.773280] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337649.243256] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337649.723285] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337650.199907] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337650.663212] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337651.139885] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337651.613205] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337652.878455] sd 0:0:0:0: [sda] 7471104 512-byte logical blocks: (3.83 GB/3.56 GiB)
> [1337653.056594] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337653.533299] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337654.009932] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337654.486656] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337654.963248] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337655.439945] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337655.903277] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337656.379957] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337656.853260] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337657.326598] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337657.803280] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337658.279946] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337658.620594] sda: detected capacity change from 0 to 7471104
> [1337658.743259] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337659.213281] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337659.689931] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337660.169887] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337660.639886] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337661.113316] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337661.576555] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337662.046598] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337662.523268] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337662.999945] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337663.479877] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337663.956609] usb 1-1: reset high-speed USB device number 7 using xhci_hcd
> [1337664.294581] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK cmd_age=2s
> [1337664.294593] sd 0:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
> [1337664.294597] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
> [1337664.294611] Buffer I/O error on dev sda, logical block 0, async page read
>
>
> => ums 0 mmc 0
> UMS: LUN 0, dev mmc 0, hwpart 0, sector 0x0, count 0x720000
> udc: ep_alloc_request: 2fb6ee28, 0x0
> udc: irq, status=0x000022
> udc: Suspend detected
> udc: Wake Up CPU detected
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000000
> udc: irq, status=0x000020
> udc: Wake Up CPU detected
> udc: irq, status=0x000011
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000029
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000029
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000029
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000029
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000029
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000029
> udc: Wake Up CPU detected
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [0]: s/80855000 c/00001001
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 18
> udc: req 80.06, length 64, state 1, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/00014000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 18), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 18), done
> udc: ep0 [1]: s/01254800 c/00001401
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/00000040 c/00000001
> udc: irq, status=0x000031
> udc: Wake Up CPU detected
> udc: ep0: req 2fb740f8 complete: status -104, actual 18
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000001
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000029
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000029
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000129
> udc: Wake Up CPU detected
> udc: ep0 [0]: s/80845000 c/00001001
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: setting address 2...
> udc: req 00.05, length 0, state 5, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [5]: s/00004400 c/00001401
> udc: ep0 [0]: s/00004000 c/00001001
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [0]: s/80855000 c/00001001
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 18
> udc: req 80.06, length 18, state 1, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/00014000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 18), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 18), done
> udc: ep0 [1]: s/01254800 c/00001401
> udc: irq, status=0x000129
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/8085d400 c/00001401
> udc: ep0 [4]: s/8085d000 c/00001201
> udc: ep0: req 2fb740f8 complete: status 0, actual 18
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 9
> udc: req 80.06, length 9, state 1, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/0001c000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 9), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 9), done
> udc: ep0 [1]: s/0095c800 c/00001401
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/8085d400 c/00001401
> udc: ep0 [4]: s/8085d000 c/00001201
> udc: ep0: req 2fb740f8 complete: status 0, actual 9
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 32
> udc: req 80.06, length 32, state 1, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/0001c000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 32), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 32), done
> udc: ep0 [1]: s/0205c800 c/00001401
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/8085d400 c/00001401
> udc: ep0 [4]: s/8085d000 c/00001201
> udc: ep0: req 2fb740f8 complete: status 0, actual 32
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 4
> udc: req 80.06, length 255, state 1, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/0001c000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 4), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 4), done
> udc: ep0 [1]: s/0045c800 c/00001401
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/8085d400 c/00001401
> udc: ep0 [4]: s/8085d000 c/00001201
> udc: ep0: req 2fb740f8 complete: status 0, actual 4
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 40
> udc: req 80.06, length 255, state 1, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/0001c000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 40), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 40), done
> udc: ep0 [1]: s/0285c800 c/00001401
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/8085d400 c/00001401
> udc: ep0 [4]: s/8085d000 c/00001201
> udc: ep0: req 2fb740f8 complete: status 0, actual 40
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 14
> udc: req 80.06, length 255, state 1, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/0001c000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 14), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 14), done
> udc: ep0 [1]: s/00e5c800 c/00001401
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/8084d400 c/00001401
> udc: ep0 [4]: s/8084d000 c/00001201
> udc: ep0: req 2fb740f8 complete: status 0, actual 14
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 0
> udc: req 00.09, length 0, state 3, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [3]: s/0000c000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 0), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 0), done
> udc: ep0 [3]: s/0004c800 c/00001401
> udc: ep1: ep_enable: desc=2ffe5ca0
> udc: ep1: EPT_SIZE = 6 (maxpacket = 512)
> udc: EPT_CFG1 after init: 0x8000006e
> udc: INT_ENB after init: 0x000352
> udc: ep2: ep_enable: desc=2ffe5ca9
> udc: ep2: EPT_SIZE = 6 (maxpacket = 512)
> udc: EPT_CFG2 after init: 0x80000066
> udc: INT_ENB after init: 0x000752
> udc: ep_alloc_request: 2fb6ee78, 0x0
> udc: ep_alloc_request: 2fb6eec8, 0x0
> udc: ep_alloc_request: 2fb6ee78, 0x0
> udc: ep_alloc_request: 2fb6eec8, 0x0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [3]: s/8085d400 c/00001401
> udc: ep0: req 2fb740f8 complete: status 0, actual 0
> udc: ep0 [0]: s/8085d000 c/00001001
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 40
> udc: req 80.06, length 255, state 1, ret 0
> udc: ep2: queue req 2fb75ef0, len 512
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/0001c000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 40), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 40), done
> udc: ep0 [1]: s/0285c800 c/00001401
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/8085d400 c/00001401
> udc: ep0 [4]: s/8085d000 c/00001201
> udc: ep0: req 2fb740f8 complete: status 0, actual 40
> udc: Packet length: 8
> udc: Copying ctrl request from 0x00300000:
> udc: ep0: queue req 2fb740f8, len 26
> udc: req 80.06, length 255, state 1, ret 0
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/0001c000 c/00001801
> udc: ep0: submit_request: req 2fb740f8 (length 26), dma: 0
> udc: ep0: submit_transaction, req 2fb740f8 (length 26), done
> udc: ep0 [1]: s/01a5c800 c/00001401
> udc: irq, status=0x000125
> udc: Wake Up CPU detected
> udc: ep0 [1]: s/8005c640 c/00001401
> udc: ep0 [4]: s/8005c240 c/00001201
> udc: ep0: req 2fb740f8 complete: status 0, actual 26
> udc: ep0 [0]: s/0001c040 c/00001001
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
> udc: irq, status=0x000025
> udc: Wake Up CPU detected
>
> On Sun, May 21, 2023 at 9:09 AM Eugen Hristev <eugen.hristev at collabora.com<mailto:eugen.hristev at collabora.com> <mailto:eugen.hristev at collabora.com<mailto:eugen.hristev at collabora.com>>> wrote:
>
>     Hi,
>
>     I believe someone from Microchip have tried this before
>     Some people in CC added
>
>     You can also open a case on support.microchip.com<http://support.microchip.com> <http://support.microchip.com>
>
>     Eugen
>
>     On 5/19/23 23:18, admin LI wrote:
>      > Hi,
>      >
>      > I'm trying to use ums to access EMMC on our SAMA5D2 board without success.
>      >
>      > My board_init(), without adding usba_udc_probe() ums will cause data abort
>      > error:
>      > int board_init(void)
>      > {
>      > /* address of boot parameters */
>      > gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
>      >
>      > #ifdef CONFIG_USB_GADGET_ATMEL_USBA
>      > at91_udp_hw_init();
>      > usba_udc_probe(&pdata);
>      > #endif
>      >
>      > return 0;
>      > }
>      >
>      > USB related config:
>      > CONFIG_USB=y
>      > CONFIG_USB_EHCI_HCD=y
>      > CONFIG_USB_STORAGE=y
>      > CONFIG_USB_GADGET=y
>      > CONFIG_USB_GADGET_VENDOR_NUM=0xdead
>      > CONFIG_USB_GADGET_PRODUCT_NUM=0xbeef
>      > CONFIG_USB_GADGET_ATMEL_USBA=y
>      > CONFIG_USB_GADGET_VBUS_DRAW=500
>      > CONFIG_USB_GADGET_DOWNLOAD=y
>      > CONFIG_USB_ETHER=y
>      >
>      > EMMC can be successfully accessed, Linux boot is ok:
>      > => mmc list
>      > sdio-host at a0000000: 0 (eMMC)
>      >
>      > => mmc info
>      > Device: sdio-host at a0000000
>      > Manufacturer ID: 70
>      > OEM: 100
>      > Name: M6270
>      > Bus Speed: 52000000
>      > Mode: MMC High Speed (52MHz)
>      > Rd Block Len: 512
>      > MMC version 5.1
>      > High Capacity: Yes
>      > Capacity: 3.6 GiB
>      > Bus Width: 4-bit
>      > Erase Group Size: 512 KiB
>      > HC WP Group Size: 4 MiB
>      > User Capacity: 3.6 GiB
>      > Boot Capacity: 2 MiB ENH
>      > RPMB Capacity: 512 KiB ENH
>      > Boot area 0 is not write protected
>      > Boot area 1 is not write protected
>      >
>      > => mmc part
>      >
>      > Partition Map for MMC device 0  --   Partition Type: DOS
>      >
>      > Part    Start Sector    Num Sectors     UUID            Type
>      >    1     2048            1044480         0508e2bf-01     83
>      >
>      > However, when I use "ums 0 mmc 0", the USB device is partially enumerated
>      > without a block device available, in the console the rotation cursor spins
>      > about 20s then USB is disconnected.
>      >
>      > On u-boot:
>      > => ums 0 mmc 0
>      > UMS: LUN 0, dev mmc 0, hwpart 0, sector 0x0, count 0x720000
>      > -=> (self-exit after 20s)
>      >
>      > On Linux:
>      > [  699.920316] usb 3-5: new high-speed USB device number 5 using xhci_hcd
>      > [  700.060766] usb 3-5: New USB device found, idVendor=dead,
>      > idProduct=beef, bcdDevice= 2.17
>      > [  700.060772] usb 3-5: New USB device strings: Mfr=1, Product=2,
>      > SerialNumber=0
>      > [  700.060774] usb 3-5: Product: USB download gadget
>      > [  700.060776] usb 3-5: Manufacturer: U-Boot
>      > [  700.081573] usb-storage 3-5:1.0: USB Mass Storage device detected
>      > [  700.081780] scsi host0: usb-storage 3-5:1.0
>      > [  700.081874] usbcore: registered new interface driver usb-storage
>      > [  700.088339] usbcore: registered new interface driver uas
>      > [  722.407008] usb 3-5: USB disconnect, device number 5
>      >
>      >
>      > Thanks,
>



More information about the U-Boot mailing list