openSUSE:Imx usb loader
Introduction: iMX USB loader
The iMX USB loader is a utility that allows to download and execute code on Freescale i.MX5/i.MX6 and Vybrid SoCs through the Serial Download Protocol (SDP). Depending on the board, there is usually some kind of recovery button to bring the SoC into serial download boot mode, check documentation of your hardware.
The utility support USB and UART as serial link. It is available here: http://software.opensuse.org/package/imx-usb-loader?search_term=imx-usb-loader
Usage
This tool is mainly used to load u-boot in RAM and then perform a first flash (or a 2nd flash if you brick your board).
USB
Firstly, connect your host PC to your device. Then, boot on USB mode (depending on your board). Finally, load your u-boot image to the device RAM and boot on it:
imx_usb u-boot.imx
Then, you should see somthing like:
config file </etc/imx-loader.d/imx_usb.conf> vid=0x066f pid=0x3780 file_name=mx23_usb_work.conf vid=0x15a2 pid=0x004f file_name=mx28_usb_work.conf vid=0x15a2 pid=0x0052 file_name=mx50_usb_work.conf vid=0x15a2 pid=0x0054 file_name=mx6_usb_work.conf vid=0x15a2 pid=0x0061 file_name=mx6_usb_work.conf vid=0x15a2 pid=0x0063 file_name=mx6_usb_work.conf vid=0x15a2 pid=0x0041 file_name=mx51_usb_work.conf vid=0x15a2 pid=0x004e file_name=mx53_usb_work.conf vid=0x15a2 pid=0x006a file_name=vybrid_usb_work.conf vid=0x066f pid=0x37ff file_name=linux_gadget.conf config file </etc/imx-loader.d/mx6_usb_work.conf> parse /etc/imx-loader.d/mx6_usb_work.conf 15a2:0054(mx6_qsb) bConfigurationValue =1 Interface 0 claimed HAB security state: development mode (0x56787856) == work item filename /tmp/boot/u-boot.imx load_size 0 bytes load_addr 0x00000000 dcd 1 clear_dcd 0 plug 1 jump_mode 2 jump_addr 0x00000000 == end work item main dcd length 310 sub dcd length 30c loading binary file(/tmp/boot/u-boot.imx) to 177ff400, skip=0, fsize=62c00 type=aa <<<404480, 404480 bytes>>> succeeded (status 0x88888888) jumping to 0x177ff400
U-Boot is now loaded and you should have access to it on your serial port as usual. Use U-Boot to (re)flash your board.
UART
Firstly, connect your host PC to your device. Then, boot on UART mode (depending on your board). Finally, load your u-boot image to the device RAM and boot on it:
imx_uart /dev/ttyUSB0 vybrid_usb_work.conf u-boot.imx