================================================================================
Useful notes on bulding and using of U-Boot on ARC HS Development Kit (AKA HSDK)
================================================================================

   BOARD OVERVIEW

   The DesignWare ARC HS Development Kit is a ready-to-use platform for rapid
   software development on the ARC HS3x family of processors.

   For more information please visit:
   https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit

   User guide is availalble here:
   https://github.com/foss-for-synopsys-dwc-arc-processors/ARC-Development-Systems-Forum/wiki/docs/ARC_HSDK_User_Guide.pdf

   It has the following features useful for U-Boot:
    * On-board 2-channel FTDI TTL-to-USB converter
      - The first channel is used for serial debug port (which makes it possible
        to use a serial connection on pretty much any host machine be it
        Windows, Linux or Mac).
        On Linux machine typucally FTDI serial port would be /dev/ttyUSB0.
        There's no HW flow-control and baud-rate is 115200.

      - The second channel is used for built-in Digilent USB JTAG probe.
        That means no extra hardware is required to access ARC core from a
        debugger on development host. Both proprietary MetaWare debugger and
        open source OpenOCD + GDB client are supported.

      - Also with help of this FTDI chip it is possible to reset entire
        board with help of a special `rff-ftdi-reset` utility, see:
        https://github.com/foss-for-synopsys-dwc-arc-processors/rff-ftdi-reset

    * Micro SD-card slot
      - U-Boot expects to see the very first partition on the card formatted as
        FAT file-system and uses it for keeping its environment in `uboot.env`
        file. Note uboot.env is not just a text file but it is auto-generated
        file created by U-Boot on invocation of `saveenv` command.
        It contains a checksum which makes this saved environment invalid in
        case of maual modification.

      - There might be more useful files on that first FAT partition like
        Linux kernl image in form of uImage (with or without built-in
        initramfs), device tree blob (.dtb) etc.

      - Except FAT partition there might be others following the first FAT one
        like Ext file-system with rootfs etc.

    * 1 Gb Ethernet socket
      - U-Boot might get payload from TFTP server. This might be uImage, rootfs
        image and anything else.

    * 2 MiB of SPI-flash
      - SPI-flahs is used as a storage for image of an application auto-executed
        by bootROM on power-on. Typically U-Boot gets programmed there but
        there might be other uses. But note bootROM expects to find a special
        header preceeding application image itself so before flashing anything
        make sure required image is prepended. In case of U-Boot this is done
        by invocation of `headerize-hsdk.py` with `make bsp-generate` command.


   BUILDING U-BOOT

   1. Configure U-Boot:
      ------------------------->8----------------------
      make hsdk_defconfig
      ------------------------->8----------------------

   2. To build Elf file (for example to be used with host debugger via JTAG
      connection to the target board):
      ------------------------->8----------------------
      make mdbtrick
      ------------------------->8----------------------

      This will produce `u-boot` Elf file.

   3. To build artifacts required for U-Boot update in n-board SPI-flash:
      ------------------------->8----------------------
      make bsp-generate
      ------------------------->8----------------------

      This will produce `u-boot.head` and `u-boot-update.scr` which should
      be put on the first FAT partition of micro SD-card to be inserted in the
      HSDK board.


   EXECUTING U-BOOT

   1. The HSDK board is supposed to auto-start U-Boot image stored in on-board
      SPI-flash on power-on. For that make sure DIP-switches in the corner of
      the board are in their default positions: BIM in 1:off, 2:on state
      while both BMC and BCS should be in 1:on, 2:on state.

   2. Though it is possible to load U-Boot as a simple Elf file via JTAG right
      in DDR and start it from the debugger.

      2.1. In case of proprietary MetaWare debugger run:
      ------------------------->8----------------------
      mdb -digilent -run -cl u-boot
      ------------------------->8----------------------


   UPDATION U-BOOT IMAGE IN ON-BOARD SPI-FLASH

   1. Create `u-boot.head` and `u-boot-update.scr` as discribed above with
      `make bsp-generate` command.

   2. Copy `u-boot.head` and `u-boot-update.scr` to the first the first FAT
      partition of micro SD-card.

   3. Connect USB cable from the HSDK board to the developemnt host and
      fire-up serial terminal.

   3. Insert prepared micro SD-card in the HSDK board, press reset button
      and stop auto-execution of existing `bootcmd` pressing any key in serial
      terminal and enter the following command:
      ------------------------->8----------------------
      mmc rescan && fatload mmc 0:1 ${loadaddr} u-boot-update.scr && source ${loadaddr}
      ------------------------->8----------------------
      Wait before you see "u-boot update: OK" message.

   4. Press RESET button and enjoy updated U-Boot version.
