[U-Boot] [RFC PATCH v3 0/5] SPL: DFU Support in SPL

Ravi Babu ravibabu at ti.com
Thu Jul 28 14:09:13 CEST 2016


Traditionally the DFU support is available only
as part 2nd stage boot loader(u-boot) and DFU
is not supported in SPL.

The SPL-DFU feature is useful for boards which
does not have MMC/SD, ethernet boot mechanism
to boot the board and only has USB inteface.

This patch add DFU support in SPL with RAM
memory device support to load and execute u-boot
from PC over USB interface. And then leverage
full functional feature of DFU in u-boot to
flash boot inital binary images to factory or
bare-metal boards to memory devices like SPI,
eMMC, MMC/SD card using USB interface.

As a reference, refer to application note [3]
on SPL-DFU support based on 2014.07 u-boot.

Steps to build SPL-DFU/RAM:
This SPL-DFU support can be enabled through
Menuconfig->Boot Images->Enable SPL-DFU support
1) Soc ROMcode loads the u-boot-spl.bin(+DFU) to IRAM 
from PC host via usb interface and execute DFU.
2) Then load u-boot.img to RAM using dfu-util from PC-host
with -R switch to boot u-boot.
#sudo dfu-util -c 1 -i 0 -a 0 -D u-boot.img -R

Note:
On latest mainline u-boot usb fails,
need patch [4],[5] to test dfu.

Tested on dra7xx SoCs family.
[1] is EVM console output with SPL-DFU/RAM enabled.
[2] is ubuntu host console output.

references:
[1] http://pastebin.ubuntu.com/21264490/
[2] http://pastebin.ubuntu.com/21264638/
[3] http://www.ti.com/lit/an/sprac33/sprac33.pdf
[4] https://patchwork.ozlabs.org/patch/651146/
[5] http://pastebin.ubuntu.com/21264233/

v3 changes:
	- minor v2 review comments fixed.
	- Kconfig SPL/DFU selection made generic.
	- unselect CONFIG_CMD_BOOTD for SPL

v1/v2 changes : 
	- support for DFU RAM device only .
	- removed support for other SPI flash devices
	- SPL+DFU loads and execute u-boot and leaverage
	  u-boot dfu functionality to flash binaries to
	  SPI, eMMC etc.
	- saperated the common dfu code used by SPL and
	  u-boot to common/dfu.c

Ravi Babu (5):
  spl: dfu: add dfu support in SPL
  common: dfu: saperate the dfu common functionality
  spl: dfu: adding dfu support functions for SPL-DFU
  dra7x: boot: add dfu bootmode support
  dra7x: configs: enable SPL-DFU support

 Kconfig                                      |   27 ++++++++
 arch/arm/cpu/armv7/omap-common/boot-common.c |    5 ++
 arch/arm/include/asm/arch-omap5/spl.h        |    2 +-
 cmd/dfu.c                                    |   61 +-----------------
 common/Makefile                              |    3 +
 common/dfu.c                                 |   87 ++++++++++++++++++++++++++
 common/spl/Makefile                          |    1 +
 common/spl/spl.c                             |   10 ++-
 common/spl/spl_dfu.c                         |   57 +++++++++++++++++
 include/configs/dra7xx_evm.h                 |   20 +++++-
 include/configs/ti_omap5_common.h            |    2 -
 include/g_dnl.h                              |    1 +
 include/spl.h                                |    8 +++
 scripts/Makefile.spl                         |    4 ++
 14 files changed, 224 insertions(+), 64 deletions(-)
 create mode 100644 common/dfu.c
 create mode 100644 common/spl/spl_dfu.c

-- 
1.7.9.5



More information about the U-Boot mailing list