Build Instructions for U-Boot as main bootloader

Simple you can build U-Boot and obtain u-boot.bin:

$ make edison_defconfig
$ make all

Updating U-Boot on Edison

By default Intel Edison boards are shipped with preinstalled heavily patched U-Boot v2014.04. Though it supports DFU which we may be able to use.

  1. Prepare u-boot.bin as described in chapter above. You still need one more step (if and only if you have original U-Boot), i.e. run the following command:

    $ truncate -s %4096 u-boot.bin
  2. Run your board and interrupt booting to U-Boot console. In the console call:

    => run do_force_flash_os
  3. Wait for few seconds, it will prepare environment variable and runs DFU. Run DFU command from the host system:

    $ dfu-util -v -d 8087:0a99 --alt u-boot0 -D u-boot.bin
  4. Return to U-Boot console and following hint. i.e. push Ctrl+C, and reset the board:

    => reset

Updating U-Boot using xFSTK

You can also update U-Boot using the xfstk-dldr-solo tool if you can build it. One way to do that is to follow the xFSTK instructions. In short, after you install all necessary dependencies and clone repository, it will look like this:

cd xFSTK
export DISTRIBUTION_NAME=ubuntu20.04
export BUILD_VERSION=1.8.5
git checkout v$BUILD_VERSION

Once you have built it, you can copy xfstk-dldr-solo to /usr/local/bin and libboost_program_options.so.1.54.0 to /usr/lib/i386-linux-gnu/ and with luck it will work. You might find this drive helpful.

If it does, then you can download and unpack the Edison recovery image, install dfu-util, reset your board and flash U-Boot like this:

xfstk-dldr-solo --gpflags 0x80000007 \
    --osimage u-boot-edison.img \
    --fwdnx recover/edison_dnx_fwr.bin \
    --fwimage recover/edison_ifwi-dbg-00.bin \
    --osdnx recover/edison_dnx_osr.bin

This should show the following

XFSTK Downloader Solo 1.8.5
Copyright (c) 2015 Intel Corporation
Build date and time: Aug 15 2020 15:07:13

.Intel SoC Device Detection Found
Parsing Commandline....
Registering Status Callback....
.Initiating Download Process....
.......(lots of dots)........XFSTK-STATUS--Reconnecting to device - Attempt #1
.......(even more dots)......................

You have about 10 seconds after resetting the board to type the above command. If you want to check if the board is ready, type:

lsusb | grep -E "8087|8086"
Bus 001 Device 004: ID 8086:e005 Intel Corp.

If you see a device with the same ID as above, the board is waiting for your command.

After about 5 seconds you should see some console output from the board:

              WR: 20104000

SCU IPC: 0x800000d0  0xfffce92c

PSH miaHOB version: TNG.B0.VVBD.0000000c

microkernel built 11:24:08 Feb  5 2015

******* PSH loader *******
PCM page cache size = 192 KB
Cache Constraint = 0 Pages
Arming IPC driver ..
Adding page store pool ..
PagestoreAddr(IMR Start Address) = 0x04899000
pageStoreSize(IMR Size)          = 0x00080000

*** Ready to receive application ***

After another 10 seconds the xFSTK tool completes and the board resets. About 10 seconds after that should see the above message again and then within a few seconds U-Boot should start on your board:

U-Boot 2020.10-rc3 (Sep 03 2020 - 18:44:28 -0600)

CPU:   Genuine Intel(R) CPU   4000  @  500MHz
DRAM:  980.6 MiB
WDT:   Started with servicing (60s timeout)
MMC:   mmc@ff3fc000: 0, mmc@ff3fa000: 1
Loading Environment from MMC... OK
In:    serial
Out:   serial
Err:   serial
Saving Environment to MMC... Writing to redundant MMC(0)... OK
Saving Environment to MMC... Writing to MMC(0)... OK
Net:   No ethernet found.
Hit any key to stop autoboot:  0
Partitioning using GPT
Writing GPT: success!
Saving Environment to MMC... Writing to redundant MMC(0)... OK
Flashing already done...
5442816 bytes read in 238 ms (21.8 MiB/s)
Valid Boot Flag
Setup Size = 0x00003c00
Magic signature found
Using boot protocol version 2.0c
Linux kernel version 3.10.17-poky-edison+ (ferry@kalamata) #1 SMP PREEMPT Mon Jan 11 14:54:18 CET 2016
Building boot_params at 0x00090000
Loading bzImage at address 100000 (5427456 bytes)
Magic signature found
Kernel command line: "rootwait ..."
Magic signature found

Starting kernel ...


Poky (Yocto Project Reference Distro) 1.7.2 edison ttyMFD2

edison login: