u-boot-brain/board/warp7
Bryan O'Donoghue 852cc548b3 warp7: Set u-boot serial# based on OTP value
u-boot has a standard "serial#" environment variable that is suitable
for storing the iSerial number we will supply via the USB device
descriptor. serial# is automatically picked up by the disk subsystem in
u-boot - thus providing a handy unique identifier in /dev/disk/by-id as
detailed below.

Storing the hardware serial identifier in serial# means we can change the
serial# if we want before USB enumeration - thus making iSerial automatic
via OTP but overridable if necessary.

This patch reads the defined OTP fuse and sets environment variable
"serial#" to the value read.

With this patch in place the USB mass storage device will appear in
/dev/disk/by-id with a unique name based on the OTP value. For example

/dev/disk/by-id/usb-Linux_UMS_disk_0_WaRP7-0xf42400d3000001d4-0:0

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Cc: Rui Miguel Silva <rui.silva@linaro.org>
Cc: Ryan Harkin <ryan.harkin@linaro.org>
Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
2018-04-15 11:44:13 +02:00
..
imximage.cfg imx: s/docs\/README.imximage/doc\/README.imximage/g 2016-10-26 16:53:16 +02:00
Kconfig warp7: Add initial support 2016-03-26 14:16:12 +01:00
MAINTAINERS warp7: MAINTAINERS: Add warp7_secure_defconfig entry 2017-05-01 09:19:52 -04:00
Makefile warp7: Add initial support 2016-03-26 14:16:12 +01:00
README warp7: Add README file 2016-06-18 10:36:00 +02:00
warp7.c warp7: Set u-boot serial# based on OTP value 2018-04-15 11:44:13 +02:00

How to Update U-Boot on Warp7 board
----------------------------------

Required software on the host PC:

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

- dfu-util: http://dfu-util.sourceforge.net/releases/ (if you are in a
Debian distribution then you can get it via libdfu-dev package)

- libusb: http://libusb.org/ (if you are in a Debian distribution
then you can get it via libusb-dev and libusb-1.0-0-dev)

In U-Boot folder, build U-Boot for Warp7:

$ make mrproper
$ make warp7_config
$ make

This will generate the U-Boot binary called u-boot.imx.

Put warp7 board in USB download mode: 

Remove the CPU board from the base board then put switch 2 in the upper
position

Connect a USB to serial adapter between the host PC and warp7

Connect a USB cable between the OTG warp7 port and the host PC

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 should start and its messages will appear in the console program.

Open a terminal program such as minicom

Use the default environment variables:

=> env default -f -a
=> saveenv

Run the DFU command:
=> dfu 0 mmc 0

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

$ sudo dfu-util -D u-boot.imx -a boot

Then on the U-Boot prompt the following message should be seen after a
successful upgrade:

#DOWNLOAD ... OK
Ctrl+C to exit ...

Remove power from the warp7 board.

Put warp7 board into normal boot mode (put the switch 2 in the lower position)

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