3.1.2 Build U-Boot from Sources

Perform the following steps to build the u-boot.

Note: Make sure to install the mkenvimage tool on the Linux machine.
  1. Export the cross compiler toolchain path, using the following command:
    export CROSS_COMPILER=arm-linux-gnueabi-
  2. Clone the Linux4sam GitHub U-Boot repository, enter in to the cloned directory using the following command:
    $ git clone git://github.com/linux4sam/u-boot-at91.git
  3. Move to the u-boot-at91 directory, using the following command:
    $ cd u-boot-at91
  4. Switch to a new branch u-boot-2018.07-at91, using the following commands:
    $ git branch -r
    $ git checkout origin/u-boot-2018.07-at91 -b u-boot-2018.07-at91
  5. The configs/ directory lists many defconfig files. Use the sama5d2_xplained_mmc_defconfig file to configure the u-boot by using the following command:
    $make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- sama5d2_xplained_mmc_defconfig
  6. Open the u-boot-at91/include/configs/sama5d2_xplained.h file and modify the definitions for FAT_ENV_DEVICE_AND_PART and CONFIG_BOOTCOMMAND, using the following commands:
    /*bootstrap + u-boot + env in sd card */
    #undef FAT_ENV_DEVICE_AND_PART 
    #undef CONFIG_BOOTCOMMAND 
    #define FAT_ENV_DEVICE_AND_PART    "0"
    #define CONFIG_BOOTCOMMAND        "fatload mmc 0:1 0x21000000 at91-sama5d2_xplained.dtb; " \
                                      "fatload mmc 0:1 0x22000000 zImage; " \
                                      "bootz 0x22000000 - 0x21000000"
    #undef CONFIG_BOOTARGS
    #define CONFIG_BOOTARGS           "console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait"
    #elif CONFIG_SPI_BOOT
  7. Build the u-boot binary, using the following command:
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
    • The result of these operations is a fresh U-Boot binary called u-boot.bin corresponding to the binary ELF file u-boot.
      • u-boot.bin file will be created in u-boot-at91 directory.
      • u-boot is the ELF format binary file can be used to debug U-Boot through a JTag link.
  8. Create a text file named u-boot-env.txt in any directory with the u-boot environment variables mentioned below:
    bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
    bootcmd=fatload mmc 0:1 0x21000000 at91-sama5d2_xplained.dtb; fatload mmc 0:1 0x22000000
    zImage; bootz 0x22000000 - 0x21000000
    bootdelay=1
    ethact=gmac0
    stderr=serial
    stdin=serial
    stdout=serial
  9. Move to the direcrory and enter the following command to generate uboot.env file from the previously created u-boot-env.txt file.
    $ mkenvimage -s 0x2000 -o uboot.env u-boot-env.txt