README.sdp 3.2 KB

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