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. You may need to use a virtual machine running Ubuntu Trusty. Once you have built it and installed libboost-all-dev, 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 fine this drive helpful.

If it does, then you can download and unpack the Edison reocovery 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 0.0.0
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 |egrep "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 root=PARTUUID=ada722ed-6410-764e-8619-abff6f66e10e rootfstype=ext4 console=ttyMFD2 earlyprintk=ttyMFD2,keep loglevel=4 g_multi.ethernet_config=cdc systemd.unit=multi-user.target hardware_id=00 g_multi.iSerialNumber=2249baf774c675598661a63098c0ad41 g_multi.dev_addr=02:00:86:c0:ad:41 platform_mrfld_audio.audio_codec=dummy"
Magic signature found

Starting kernel ...


Poky (Yocto Project Reference Distro) 1.7.2 edison ttyMFD2

edison login: