u-boot/board/synopsys/emsdp
Harald Seiler 35b65dd8ef reset: Remove addr parameter from reset_cpu()
Historically, the reset_cpu() function had an `addr` parameter which was
meant to pass in an address of the reset vector location, where the CPU
should reset to.  This feature is no longer used anywhere in U-Boot as
all reset_cpu() implementations now ignore the passed value.  Generic
code has been added which always calls reset_cpu() with `0` which means
this feature can no longer be used easily anyway.

Over time, many implementations seem to have "misunderstood" the
existence of this parameter as a way to customize/parameterize the reset
(e.g.  COLD vs WARM resets).  As this is not properly supported, the
code will almost always not do what it is intended to (because all
call-sites just call reset_cpu() with 0).

To avoid confusion and to clean up the codebase from unused left-overs
of the past, remove the `addr` parameter entirely.  Code which intends
to support different kinds of resets should be rewritten as a sysreset
driver instead.

This transformation was done with the following coccinelle patch:

    @@
    expression argvalue;
    @@
    - reset_cpu(argvalue)
    + reset_cpu()

    @@
    identifier argname;
    type argtype;
    @@
    - reset_cpu(argtype argname)
    + reset_cpu(void)
    { ... }

Signed-off-by: Harald Seiler <hws@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
2021-03-02 14:03:02 -05:00
..
config.mk ARC: rework setting of ARC CPU specific compiler options 2020-02-12 21:11:12 +03:00
emsdp.c reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
Kconfig
MAINTAINERS
Makefile
README arc: emsdp: docs: Prefer Degilent over Opella-XD 2019-11-01 16:45:40 +03:00

================================================================================
Useful notes on bulding and using of U-Boot on
ARC EM Software Development Platform (AKA EMSDP)
================================================================================

   BOARD OVERVIEW

   The DesignWare ARC EM Software Development Platform is FPGA-bases platform
   for rapid software development on the ARC EM family of processors.

   Since this board is based on FPGA it's possible to load and use different
   versions of ARC EM CPUs. U-Boot is built to be run on the simplest
   possible configuration which means the same one binary will work on more
   advanced configurations as well.

   The board 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
        user applications, data files etc.

    * 256 KiB of "ROM"
      - This so-called "ROM" is a part of FPGA image and even though it
        might be unlocked for writes its initial content will be restored
        on the next power-on.


   BUILDING U-BOOT

   1. Configure U-Boot:
      ------------------------->8----------------------
      make emsdp_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 binary image to be put in "ROM":
      ------------------------->8----------------------
      make u-boot.bin
      ------------------------->8----------------------


   EXECUTING U-BOOT

   1. The EMSDP board is supposed to auto-start U-Boot image stored in ROM on
      power-on. For that make sure VCCIO DIP-switches are all in "off" state.

   2. Though it is possible to load U-Boot as a simple Elf file via JTAG right
      in "ROM" and start it from the debugger. One important note here we first
      need to enable writes into "ROM" by writing 1 to 0xf0001000.

      2.1. In case of proprietary MetaWare debugger run:
      ------------------------->8----------------------
      mdb -digilent -OK -preloadexec="eval *(int*)0xf0001000=0" u-boot
      ------------------------->8----------------------