-------------
SDP in U-Boot
-------------

SDP stands for serial download protocol. It is the protocol used in NXP's
i.MX SoCs ROM Serial Downloader and provides means to download a program
image to the chip over USB and UART serial connection.

The implementation in U-Boot uses the USB Downloader Gadget (g_dnl) to
provide a SDP implementation over USB. This allows to download program
images to the target in SPL/U-Boot using the same protocol/tooling the
SoC's recovery mechanism is using.

The SDP protocol over USB is a USB HID class protocol. USB HID class
protocols allow to access a USB device without OS specific drivers. The
U-Boot implementation has primarly been tested using the open source
imx_loader utility (https://github.com/boundarydevices/imx_usb_loader).

imx_usb_loader is a very nice tool by Boundary Devices that allow to
install U-Boot without a JTAG debugger, using the USB boot mode as
described in the manual. It is a replacement for Freescale's
MFGTOOLS.

The host side utilities are typically capable to interpret the i.MX
specific image header (see doc/README.imximage). There are extensions
for imx_loader's imx_usb utility which allow to interpret the U-Boot
specific legacy image format (see mkimage(1)). Also the U-Boot side
support beside the i.MX specific header the U-Boot legacy header.

1. Using imx_usb_loader for first install with SPL
--------------------------------------------------

This implementation can be started in U-Boot using the sdp command
(CONFIG_CMD_USB_SDP) or in SPL if Serial Downloader boot mode has been
detected (CONFIG_SPL_USB_SDP_SUPPORT).

A typical use case is downloading full U-Boot after SPL has been
downloaded through the boot ROM's Serial Downloader. Using boot mode
detection the SPL will run the SDP implementation automatically in
this case:

  # imx_usb SPL

Targets Serial Console:

  Trying to boot from USB SDP
  SDP: initialize...
  SDP: handle requests...

At this point the SPL reenumerated as a new HID device and emulating
the boot ROM's SDP protocol. The USB VID/PID will depend on standard
U-Boot configurations CONFIG_G_DNL_(VENDOR|PRODUCT)_NUM. Make sure
imx_usb is aware of the USB VID/PID for your device by adding a
configuration entry in imx_usb.conf:

  0x1b67:0x4fff, mx6_usb_sdp_spl.conf

And the device specific configuration file mx6_usb_sdp_spl.conf:

  mx6_spl_sdp
  hid,uboot_header,1024,0x910000,0x10000000,1G,0x00900000,0x40000

This allows to download the regular U-Boot with legacy image headers
(u-boot.img) using a second invocation of imx_usb:

  # imx_usb u-boot.img

Furthermore, when U-Boot is running the sdp command can be used to
download and run scripts:

  # imx_usb script.scr

imx_usb configuration files can be also used to download multiple
files and of arbitrary types, e.g.

  mx6_usb_sdp_uboot
  hid,1024,0x10000000,1G,0x00907000,0x31000
  full.itb:load 0x12100000
  boot.scr:load 0x12000000,jump 0x12000000

There is also a batch mode which allows imx_usb to handle multiple
consecutive reenumerations by adding multiple VID/PID specifications
in imx_usb.conf:

  0x15a2:0x0061, mx6_usb_rom.conf, 0x1b67:0x4fff, mx6_usb_sdp_spl.conf

In this mode the file to download (imx_usb job) needs to be specified
in the configuration files.

mx6_usb_rom.conf:

  mx6_qsb
  hid,1024,0x910000,0x10000000,1G,0x00900000,0x40000
  SPL:jump header2

mx6_usb_sdp_spl.conf:

  mx6_spl_sdp
  hid,uboot_header,1024,0x10000000,1G,0x00907000,0x31000
  u-boot.img:jump header2

With that SPL and U-Boot can be downloaded with a single invocation
of imx_usb without arguments:

  # imx_usb

2. Using imx_usb_loader non-SPL images
---------------------------------------

Booting in USB mode, the i.MX6 announces itself to the Linux Host as:

Bus 001 Device 111: ID 15a2:0061 Freescale Semiconductor, Inc.

imx_usb_loader is able to download a single file (u-boot.imx)
to the board. For boards without SPL support, it is enough to
issue the command:

	sudo ../imx_usb_loader/imx_usb -v u-boot.imx
