zephyr/boards/riscv/adp_xc7k_ae350/doc/index.rst

316 lines
10 KiB
ReStructuredText

.. _adp_xc7k_ae350:
Andes ADP-XC7K AE350
####################
Overview
********
ADP-XC7K AE350 board is for AndeShape AE350 platform on ADP-XC7K series
FPGA-based development boards.
ADP-XC7K series are FPGA-based development and prototyping boards for evaluation of
variety of AndesCore processors and AndeShape SoC platform IPs.
AE350 is a RISC-V platform which can integrate AndesCore CPUs with a collection
of fundamental peripheral IPs.
1st figure shows the green PCB is ADP-XC7K160 and 2nd figure shows the red PCB is ADP-XC7K410.
.. image:: img/adp_xc7k160.jpg
:align: center
:alt: ADP-XC7K160
.. image:: img/adp_xc7k410.jpg
:align: center
:alt: ADP-XC7K410
More information can be found on `ADP-XC7K160/410`_ and `AndeShape AE350`_ websites.
Hardware
********
The ADP-XC7K AE350 platform integrates 1 ~ 4 cores 32/64-bit 60MHz RISC-V CPUs, DSP,
1GB RAM, Cache, SPI flash memory, ethernet controller and other peripherals.
The ADP-XC7K AE350 platform provides following hardware components:
- 1 ~ 4 cores 32/64-bit 60MHz AndeStar v5 RISC-V CPUs
- 1GB on-board SDRAM
- 2MB SPI flash memory (1MB can be used for XIP)
- UART
- I2C
- SPI
- GPIO
- PWM
- DMA
- 10/100 Ethernet RJ45 port
- LCD module connector
- 16KB I2C EEPROM
- SD memory card slot
- MIC-in, Line-in, and Line-out with AC97 audio codec
Supported Features
==================
The ``adp_xc7k_ae350`` board configuration supports the following hardware features:
+----------------+------------+----------------------+
| Interface | Controller | Driver/Component |
+================+============+======================+
| PLIC | on-chip | interrupt_controller |
+----------------+------------+----------------------+
| RISC-V Machine | on-chip | timer |
| Timer | | |
+----------------+------------+----------------------+
| GPIO | on-chip | gpio |
+----------------+------------+----------------------+
| UART | on-chip | serial |
+----------------+------------+----------------------+
Other hardware features are not supported yet.
Connections and IOs
===================
The ADP-XC7K AE350 platform has 1 GPIO controller. It providing 32 bits of IO.
It is responsible for pin input/output, pull-up, etc.
Mapping from GPIO controller to the ADP-XC7K board pins:
+--------------------+--------------------+
| GPIO controller | Usage / Board pins |
+====================+====================+
| **Push Buttons** | |
+--------------------+--------------------+
| GPIO.0 | SW1 |
+--------------------+--------------------+
| GPIO.1 | SW2 |
+--------------------+--------------------+
| GPIO.2 | SW3 |
+--------------------+--------------------+
| GPIO.3 | SW4 |
+--------------------+--------------------+
| GPIO.4 | SW5 |
+--------------------+--------------------+
| GPIO.5 | SW6 |
+--------------------+--------------------+
| GPIO.6 | SW7 |
+--------------------+--------------------+
| **7-Segment LED1** | |
+--------------------+--------------------+
| GPIO.16 | 7SEG1.A |
+--------------------+--------------------+
| GPIO.17 | 7SEG1.B |
+--------------------+--------------------+
| GPIO.18 | 7SEG1.C |
+--------------------+--------------------+
| GPIO.19 | 7SEG1.D |
+--------------------+--------------------+
| GPIO.20 | 7SEG1.E |
+--------------------+--------------------+
| GPIO.21 | 7SEG1.F |
+--------------------+--------------------+
| GPIO.22 | 7SEG1.G |
+--------------------+--------------------+
| GPIO.23 | 7SEG1.DP |
+--------------------+--------------------+
| **7-Segment LED2** | |
+--------------------+--------------------+
| GPIO.24 | 7SEG2.A |
+--------------------+--------------------+
| GPIO.25 | 7SEG2.B |
+--------------------+--------------------+
| GPIO.26 | 7SEG2.C |
+--------------------+--------------------+
| GPIO.27 | 7SEG2.D |
+--------------------+--------------------+
| GPIO.28 | 7SEG2.E |
+--------------------+--------------------+
| GPIO.29 | 7SEG2.F |
+--------------------+--------------------+
| GPIO.30 | 7SEG2.G |
+--------------------+--------------------+
| GPIO.31 | 7SEG2.DP |
+--------------------+--------------------+
| **GPIO pins** | |
+--------------------+--------------------+
| GPIO.7 | IDE_CON1.4 |
+--------------------+--------------------+
| GPIO.8 | IDE_CON1.6 |
+--------------------+--------------------+
| GPIO.9 | IDE_CON1.8 |
+--------------------+--------------------+
| GPIO.10 | IDE_CON1.10 |
+--------------------+--------------------+
| GPIO.11 | IDE_CON1.11 |
+--------------------+--------------------+
| GPIO.12 | IDE_CON1.12 |
+--------------------+--------------------+
| GPIO.13 | IDE_CON1.13 |
+--------------------+--------------------+
| GPIO.14 | IDE_CON1.14 |
+--------------------+--------------------+
| GPIO.15 | IDE_CON1.15 |
+--------------------+--------------------+
Other peripheral mapping are listed below:
+-------------+---------------------------------+
| Peripherals | Usage / Board pins |
+=============+=================================+
| SPI_1 | internal connected to SPI Flash |
+-------------+---------------------------------+
| SPI_2_CS | IDE_CON1.37 |
+-------------+---------------------------------+
| SPI_2_MOSI | IDE_CON1.36 |
+-------------+---------------------------------+
| SPI_2_MISO | IDE_CON1.38 |
+-------------+---------------------------------+
| SPI_2_SCLK | IDE_CON1.35 |
+-------------+---------------------------------+
| I2C_SDA | J27.1 |
+-------------+---------------------------------+
| I2C_SCL | J27.2 |
+-------------+---------------------------------+
System Clock
------------
The ADP-XC7K AE350 platform has 60MHz core clock.
Serial Port
-----------
The ADP-XC7K AE350 platform has 2 UARTs.
The Zephyr console output is by default assigned to UART2 and the default
settings are 115200 8N1.
Programming and debugging
*************************
For debugging zephyr applications or burning them into a flash, you will need to
connect Andes ICE from host computer to ADP-XC7K board and execute the
Andes ICE management software, ICEman, on this host computer.
Connecting Andes ICE (AICE)
===========================
AICE is used for flashing and debugging the board. Please connect AICE to both
ADP-XC7K board and the host computer as shown in the figure.
.. image:: img/connect_aice.jpg
:align: center
:alt: Connect AICE
More information can be found on `AICE-MINI+`_, `AICE-MICRO`_ website
Building
========
You can build applications in the usual way. Here is an example for
the :ref:`hello_world` application.
.. zephyr-app-commands::
:board: adp_xc7k_ae350
:goals: build
Flashing
========
Before flashing, you have to download ICEman (``ice.zip``) from the
`Andes Development Kit`_.
If you want to use XIP mode (``CONFIG_XIP=y``), you also need to download
the flash burner (``flash.zip``).
At first, you should run ICEman when flashing and debugging program.
.. code-block:: console
# Enable execute file permission of ICEman
chmod a+x ./ICEman
# Running the ICEman server
sudo ./ICEman -Z v5
.. note::
To run ICEman commands as a normal user, you will need to install the
:file:`70-ndsusb-v1.rules` udev rules file (usually by placing it in
:file:`/etc/udev/rules.d`, then unplugging and plugging the
AICE adapter in again via USB.).
If ``CONFIG_XIP=n``, you can load the program (``zephyr.elf``) into RAM directly
and execute it.
.. code-block:: console
# Check the ICEman server is running
# Load the program into RAM and execute it
riscv64-zephyr-elf-gdb zephyr/zephyr.elf
(gdb) target remote :1111
(gdb) monitor reset halt
(gdb) load
(gdb) quit
If ``CONFIG_XIP=y``, you need to burn the program (``zephyr.bin``) into flash memory
and execute it.
.. code-block:: console
# Check the ICEman server is running
# Burn the program into flash and execute it
<FLASH>/bin/target_burn_frontend \
-P 4444 --unlock --verify --image=zephyr/zephyr.bin \
--algorithm-bin=<FLASH>/target_bin/target_SPI_v5_[32|64].bin
# Note:
# 1. Assume the flash burner is downloaded to <FLASH> directory
# 2. For algorithm-bin file, use target_SPI_v5_32.bin in RV32 platform and
# use target_SPI_v5_64.bin in RV64 platform
Open a serial terminal with the following settings:
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
you should see the following message in the terminal:
.. code-block:: console
***** Booting Zephyr OS v2.4.0 *****
Hello World! adp_xc7k_ae350
Debugging
=========
.. code-block:: console
# Check the ICEman server is running
# Load and debug program
./riscv64-zephyr-elf-gdb zephyr/zephyr.elf
(gdb) target remote :1111
(gdb) monitor reset halt
(gdb) load
If ``CONFIG_XIP=y``, please follow the flashing section to burn the program into
flash memory first.
Then, you can use GDB to debug program by above commands but do NOT execute ``load``
command since the program has been placed in the flash memory.
References
**********
.. target-notes::
.. _ADP-XC7K160/410: http://www.andestech.com/en/products-solutions/andeshape-platforms/adp-xc7k160-410/
.. _AndeShape AE350: http://www.andestech.com/en/products-solutions/andeshape-platforms/ae350-axi-based-platform-pre-integrated-with-n25f-nx25f-a25-ax25/
.. _AICE-MINI+: http://www.andestech.com/en/products-solutions/andeshape-platforms/aice-mini-plus/
.. _AICE-MICRO: http://www.andestech.com/en/products-solutions/andeshape-platforms/aice-micro/
.. _Andes Development Kit: https://github.com/andestech/Andes-Development-Kit/releases