Imx usb loader: Difference between revisions
(Created page with "<!-- Set release according to "release" parameter in URL and use ROCKO_V1.0_VAR-SOM-MX6 as default --> {{#vardefine:RELEASE_PARAM|{{#urlget:release}}}} <!-- --> {{#lst:Yocto_P...") |
No edit summary |
||
Line 27: | Line 27: | ||
'''Build U-Boot''':<br> | '''Build U-Boot''':<br> | ||
Build U-Boot using the defconfig for SD card/eMMC.<br> | Build U-Boot using the defconfig for SD card/eMMC.<br> | ||
You can follow the "Build U-Boot from source code" instructions | You can follow the "Build U-Boot from source code" instructions {{Varlink|Yocto_Build_U-Boot|{{#var:RELEASE_LINK}}|here}}.<br> | ||
Copy the {{#ifeq: {{#var:SPL_SD_IMAGE_NAME}} | N/A | U-Boot binary | SPL and U-Boot binaries}} to the imx_usb_loader directory: | Copy the {{#ifeq: {{#var:SPL_SD_IMAGE_NAME}} | N/A | U-Boot binary | SPL and U-Boot binaries}} to the imx_usb_loader directory: | ||
$ cp -v {{#ifeq: {{#var:SPL_SD_IMAGE_NAME}} | N/A || SPL}} {{#var:U-BOOT_IMAGE_NAME}} ~/imx_usb_loader | $ cp -v {{#ifeq: {{#var:SPL_SD_IMAGE_NAME}} | N/A || SPL}} {{#var:U-BOOT_IMAGE_NAME}} ~/imx_usb_loader |
Revision as of 11:08, 25 December 2017
Introduction
imx_loader is an open source utility by Boundary Devices that allows to download and execute code on Freescale i.MX5/i.MX6/i.MX7 and Vybrid SoCs through the Serial Download Protocol (SDP).
Most commonly it is used to load SPL and U-Boot via the USB OTG port.
It is a replacement for Freescale's MFGTOOLS.
Further readings:
https://github.com/boundarydevices/imx_usb_loader/blob/master/README.md
https://github.com/varigit/uboot-imx/blob/imx_v2017.03_4.9.11_1.0.0_ga_var01/doc/README.sdp
Note:
All Variscite SOMs are shipped with SPL and U-Boot pre-programmed on the SOM's internal storage.
In addition, all Variscite carrier boards have an SD card slot, and even in the unlikely event of the SPL/U-Boot being erased from the SOM's internal storage, the SOM can always be booted from an SD card (like our recovery SD card, for example).
So, generally, this utility is not needed, however, it is yet another option that can be used to boot the Variscite SOMs, for anyone who is interested.
Step by step usage instructions
Download the imx_usb_loader utility:
$ cd ~ $ git clone https://github.com/boundarydevices/imx_usb_loader.git
Build U-Boot:
Build U-Boot using the defconfig for SD card/eMMC.
You can follow the "Build U-Boot from source code" instructions here.
Copy the SPL and U-Boot binaries to the imx_usb_loader directory:
$ cp -v SPL ~/imx_usb_loader
Configure imx_usb to load SPL and consecutively:
$ cd ~/imx_usb_loader
Edit the imx_usb.conf file, and prepend the following lines to it:
#imx6dq/dqp 0x15a2:0x0054, mx6_usb_rom.conf, 0x0525:0xb4a4, mx6_usb_sdp_spl.conf #imx6s/dl 0x15a2:0x0061, mx6_usb_rom.conf, 0x0525:0xb4a4, mx6_usb_sdp_spl.conf #imx6ul 0x15a2:0x007d, mx6_usb_rom.conf, 0x0525:0xb4a4, mx6_usb_sdp_spl.conf #imx6ull 0x15a2:0x0080, mx6_usb_rom.conf, 0x0525:0xb4a4, mx6_usb_sdp_spl.conf
Create a file called mx6_usb_rom.conf with the following content:
(the content is the same as mx6_usb_work.conf, with the last 'SPL' line appended to it)
mx6_qsb hid,1024,0x910000,0x10000000,1G,0x00900000,0x40000 SPL:jump header2
Edit the mx6_usb_sdp_spl.conf file, and append the following line to it:
u-boot.img:jump header2
Boot the board into serial download mode:
Set the board boot mode to SD card, while not having an actual card inserted in its slot.
Alternatively, set the board boot mode to eMMC/NAND flash, when the eMMC/NAND flash does not contain a bootloader.
Connect the board to your host PC via the USB OTG port, and power on the board.
The board should be recognized on the host as a "Freescale SemiConductor Inc SE Blank ARIK".
Run imx_usb to load and SPL and U-Boot on the board:
$ sudo ./imx_usb
The board should now run SPL and U-Boot.
Notes:
- The default boot command when booting from USB is bootcmd_mfg. It can be defined in the in the board's default env (we leave it empty by default).
- When booting via the Serial Download Protocol, the runtime environment variables are not set, so the device tree autodetection, mmc device autodetection, etc. do not work properly, and you need to explicitly set the correct values in the environment.