u-boot/board/technexion/pico-imx7d
Braden Kell 89e54e221c [iot] Move i2c_setup calls to board_init
i2c_setup calls force_idle_bus which calls
get_timer if SDA and SCL are not high. On the Pico
baseboard there are level shifters that pull SDA
and SCL high, but the test harness does not have
pull-ups on these lines. Because
board_early_init_f is called before timer_init the
call to get_timer was causing a divide-by-zero
error due to CNTFRQ not being initialized. Moving
the i2c_setup calls to board_init fixes this
issue. power_init_board (which uses I2C to
configure the PMIC) is called after board_init, so
this should be safe.

Bug:
Test: PMIC registers are read correctly on both
      boards (DEV_ID=0x30 REV_ID=0x11)
Test: iMX7D SOM boots on Pico baseboard
Test: iMX7D SOM boots on test harness
Change-Id: Iecdd28f3177fe915a3b614565d8dfa6e20e6a842
2018-08-20 21:25:46 +08:00
..
Kconfig
MAINTAINERS
Makefile
README pico-imx7d: Add "how to boot with NXP 4.1 Kernel" 2017-09-18 17:15:28 +02:00
imximage.cfg MLK-18591-10 android: iot: Update imx7d pico board support 2018-06-13 03:06:48 -07:00
imximage_512mb.cfg MLK-18591-10 android: iot: Update imx7d pico board support 2018-06-13 03:06:48 -07:00
pico-imx7d.c [iot] Move i2c_setup calls to board_init 2018-08-20 21:25:46 +08:00
plugin.S MLK-18591-10 android: iot: Update imx7d pico board support 2018-06-13 03:06:48 -07:00

README

How to update U-Boot on pico-imx7d board
----------------------------------------

Required software on the host PC:

- imx_usb_loader: https://github.com/boundarydevices/imx_usb_loader

Build U-Boot for pico:

$ make mrproper
$ make pico-imx7d_defconfig
$ make

This generates the U-Boot binary called u-boot.imx.

Put pico board in USB download mode (refer to the PICO-iMX7D Quick Start Guide
page 3)

Connect a USB to serial adapter between the host PC and pico.

Connect a USB cable between the OTG pico port and the host PC.

Open a terminal program such as minicom.

Copy u-boot.imx to the imx_usb_loader folder.

Load u-boot.imx via USB:

$ sudo ./imx_usb u-boot.imx

Then U-Boot starts and its messages appear in the console program.

Use the default environment variables:

=> env default -f -a
=> saveenv

Run the UMS command:
=> ums 0 mmc 0

Transfer u-boot.imx to be flashed into the eMMC:

$ sudo dd if=u-boot.imx of=/dev/sdX bs=1K seek=1; sync

Remove power from the pico board.

Put pico board into normal boot mode.

Power up the board and the new updated U-Boot should boot from eMMC.

Building U-Boot to boot with NXP 4.1 kernel:

The NXP 4.1 kernel boots only in secure boot mode on mx7.

Follow the next steps to enable secure boot:

$ make mrproper
$ make pico-imx7d_defconfig
$ make menuconfig
	-> ARM architecture
	-> [*] Enable support for booting in non-secure mode
	-> [*]   Boot in secure mode by default
	-> Exit
$ make

Flash u-boot.imx using the imx_usb_loader tool.