[U-Boot] [PATCH 3/3] config: enable DFU over USB on Raspberry Pi4 boards

Marek Szyprowski m.szyprowski at samsung.com
Mon Sep 16 12:53:30 UTC 2019


Hi Matthias,

On 16.09.2019 14:45, Matthias Brugger wrote:
> On 16/09/2019 14:24, Marek Szyprowski wrote:
>> Enable support for DFU over USB. This requires to enable USB gadget,
>> DWC2 UDC OTG driver and DFU command. DFU entities are defined for the
>> following firmware objects: u-boot.bin, uboot.env and zImage.
>>
>> Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
>> ---
>>   configs/rpi_4_32b_defconfig | 11 +++++++++++
>>   include/configs/rpi.h       | 10 ++++++++++
>>   2 files changed, 21 insertions(+)
>>
>> diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
>> index a31a617a5fb..0a375b97369 100644
>> --- a/configs/rpi_4_32b_defconfig
>> +++ b/configs/rpi_4_32b_defconfig
>> @@ -12,6 +12,7 @@ CONFIG_MISC_INIT_R=y
>>   # CONFIG_DISPLAY_CPUINFO is not set
>>   # CONFIG_DISPLAY_BOARDINFO is not set
>>   CONFIG_SYS_PROMPT="U-Boot> "
>> +CONFIG_CMD_DFU=y
>>   # CONFIG_CMD_FLASH is not set
>>   CONFIG_CMD_GPIO=y
>>   CONFIG_CMD_MMC=y
>> @@ -19,6 +20,7 @@ CONFIG_CMD_FS_UUID=y
>>   CONFIG_ENV_FAT_INTERFACE="mmc"
>>   CONFIG_ENV_FAT_DEVICE_AND_PART="0:1"
>>   CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
>> +CONFIG_DFU_MMC=y
>>   CONFIG_DM_KEYBOARD=y
>>   CONFIG_DM_MMC=y
>>   CONFIG_MMC_SDHCI=y
>> @@ -26,6 +28,15 @@ CONFIG_MMC_SDHCI_BCM2835=y
>>   CONFIG_PINCTRL=y
>>   # CONFIG_PINCTRL_GENERIC is not set
>>   # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
>> +CONFIG_USB=y
>> +CONFIG_DM_USB=y
>> +CONFIG_DM_USB_GADGET=y
>> +CONFIG_USB_GADGET=y
>> +CONFIG_USB_GADGET_MANUFACTURER="FSL"
>> +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
>> +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
>> +CONFIG_USB_GADGET_DWC2_OTG=y
>> +CONFIG_USB_GADGET_DOWNLOAD=y
> Does this only work on RPi4? It seems to me that this should also be working on
> the other RPi's. Do you have such HW to test?

It should work on any RPi with USB device controller available on the 
micro-usb/c-usb connector. AFAIK, besides RPi4, only some RPi0 has USB 
device mode available. Other RPi's have USB hub connected to DWC2 
controller, so switching DWC2 to device mode is not enough to make it 
working.

However I have access only to RPi3 and RPi4.

>>   CONFIG_DM_VIDEO=y
>>   CONFIG_SYS_WHITE_ON_BLACK=y
>>   CONFIG_CONSOLE_SCROLL_LINES=10
>> diff --git a/include/configs/rpi.h b/include/configs/rpi.h
>> index 77d2d5458a1..f502915ad53 100644
>> --- a/include/configs/rpi.h
>> +++ b/include/configs/rpi.h
>> @@ -70,9 +70,18 @@
>>   #define CONFIG_TFTP_TSIZE
>>   #endif
>>   
>> +/* DFU over USB/UDC */
>> +#ifdef CONFIG_CMD_DFU
>> +#define CONFIG_SYS_DFU_DATA_BUF_SIZE	SZ_1M
>> +#define CONFIG_SYS_DFU_MAX_FILE_SIZE	SZ_2M
>> +#define ENV_DFU_SETTINGS \
>> +	"dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1;zImage fat 0 1"
>> +#endif
>> +
>>   /* Console configuration */
>>   #define CONFIG_SYS_CBSIZE		1024
>>   
>> +
> New line sneaked in.
>
> Regards,
> Matthias
>
>>   /* Environment */
>>   #define CONFIG_ENV_SIZE			SZ_16K
>>   #define CONFIG_SYS_LOAD_ADDR		0x1000000
>> @@ -185,6 +194,7 @@
>>   #define CONFIG_EXTRA_ENV_SETTINGS \
>>   	"dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \
>>   	ENV_DEVICE_SETTINGS \
>> +	ENV_DFU_SETTINGS \
>>   	ENV_MEM_LAYOUT_SETTINGS \
>>   	BOOTENV
>>   
>>
>
Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland



More information about the U-Boot mailing list