mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 06:00:43 +00:00
3af3bebc21
Currently the Serial Download Protocol tools and procedure are documented in two places: - doc/imx/README.sdp - doc/imx/README.imx6 It is better to consolidate all SDP related information into README.sdp file, so move the content from README.imx6 to README.sdp. Signed-off-by: Breno Lima <breno.lima@nxp.com> |
||
---|---|---|
.. | ||
README.imx5 | ||
README.imx6 | ||
README.imx25 | ||
README.imx27 | ||
README.imximage | ||
README.mxc_hab | ||
README.mxs | ||
README.mxsimage | ||
README.sdp |
------------- 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