5 SDP stands for serial download protocol. It is the protocol used in NXP's
6 i.MX SoCs ROM Serial Downloader and provides means to download a program
7 image to the chip over USB and UART serial connection.
9 The implementation in U-Boot uses the USB Downloader Gadget (g_dnl) to
10 provide a SDP implementation over USB. This allows to download program
11 images to the target in SPL/U-Boot using the same protocol/tooling the
12 SoC's recovery mechanism is using.
14 The SDP protocol over USB is a USB HID class protocol. USB HID class
15 protocols allow to access a USB device without OS specific drivers. The
16 U-Boot implementation has primarly been tested using the open source
17 imx_loader utility (https://github.com/boundarydevices/imx_usb_loader).
19 The host side utilities are typically capable to interpret the i.MX
20 specific image header (see doc/README.imximage). There are extensions
21 for imx_loader's imx_usb utility which allow to interpret the U-Boot
22 specific legacy image format (see mkimage(1)). Also the U-Boot side
23 support beside the i.MX specific header the U-Boot legacy header.
28 This implementation can be started in U-Boot using the sdp command
29 (CONFIG_CMD_USB_SDP) or in SPL if Serial Downloader boot mode has been
30 detected (CONFIG_SPL_USB_SDP_SUPPORT).
32 A typical use case is downloading full U-Boot after SPL has been
33 downloaded through the boot ROM's Serial Downloader. Using boot mode
34 detection the SPL will run the SDP implementation automatically in
39 Targets Serial Console:
41 Trying to boot from USB SDP
43 SDP: handle requests...
45 At this point the SPL reenumerated as a new HID device and emulating
46 the boot ROM's SDP protocol. The USB VID/PID will depend on standard
47 U-Boot configurations CONFIG_G_DNL_(VENDOR|PRODUCT)_NUM. Make sure
48 imx_usb is aware of the USB VID/PID for your device by adding a
49 configuration entry in imx_usb.conf:
51 0x1b67:0x4fff, mx6_usb_sdp_spl.conf
53 And the device specific configuration file mx6_usb_sdp_spl.conf:
56 hid,uboot_header,1024,0x910000,0x10000000,1G,0x00900000,0x40000
58 This allows to download the regular U-Boot with legacy image headers
59 (u-boot.img) using a second invocation of imx_usb:
63 Furthermore, when U-Boot is running the sdp command can be used to
64 download and run scripts:
68 imx_usb configuration files can be also used to download multiple
69 files and of arbitrary types, e.g.
72 hid,1024,0x10000000,1G,0x00907000,0x31000
73 full.itb:load 0x12100000
74 boot.scr:load 0x12000000,jump 0x12000000
76 There is also a batch mode which allows imx_usb to handle multiple
77 consecutive reenumerations by adding multiple VID/PID specifications
80 0x15a2:0x0061, mx6_usb_rom.conf, 0x1b67:0x4fff, mx6_usb_sdp_spl.conf
82 In this mode the file to download (imx_usb job) needs to be specified
83 in the configuration files.
88 hid,1024,0x910000,0x10000000,1G,0x00900000,0x40000
94 hid,uboot_header,1024,0x10000000,1G,0x00907000,0x31000
95 u-boot.img:jump header2
97 With that SPL and U-Boot can be downloaded with a single invocation
98 of imx_usb without arguments: