boards: s32z270dc2_r52: add docs
Document supported features and basic how-to for s32z270dc2_r52 boards. Signed-off-by: Manuel Arguelles <manuel.arguelles@nxp.com>
This commit is contained in:
parent
2c62966621
commit
390f5bad8f
1 changed files with 237 additions and 0 deletions
237
boards/arm/s32z270dc2_r52/doc/index.rst
Normal file
237
boards/arm/s32z270dc2_r52/doc/index.rst
Normal file
|
@ -0,0 +1,237 @@
|
|||
.. _s32z270dc2_r52:
|
||||
|
||||
NXP X-S32Z27X-DC (DC2)
|
||||
######################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The X-S32Z27X-DC (DC2) board is based on the NXP S32Z270 Real-Time Processor,
|
||||
which includes two Real-Time Units (RTU) composed of four ARM Cortex-R52 cores
|
||||
each, with flexible split/lock configurations.
|
||||
|
||||
There is one Zephyr board per RTU:
|
||||
|
||||
- ``s32z270dc2_rtu0_r52``, for RTU0
|
||||
- ``s32z270dc2_rtu1_r52``, for RTU1.
|
||||
|
||||
Hardware
|
||||
********
|
||||
|
||||
Information about the hardware and design resources can be found at
|
||||
`NXP S32Z2 Real-Time Processors website`_.
|
||||
|
||||
Supported Features
|
||||
==================
|
||||
|
||||
The boards support the following hardware features:
|
||||
|
||||
+-----------+------------+-------------------------------------+
|
||||
| Interface | Controller | Driver/Component |
|
||||
+===========+============+=====================================+
|
||||
| GIC | on-chip | interrupt_controller |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| ARM Timer | on-chip | timer |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| SIUL2 | on-chip | pinctrl |
|
||||
| | | |
|
||||
| | | gpio |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| LINFlexD | on-chip | serial |
|
||||
+-----------+------------+-------------------------------------+
|
||||
|
||||
Other hardware features are not currently supported by the port.
|
||||
|
||||
Connections and IOs
|
||||
===================
|
||||
|
||||
The SoC's pads are grouped into ports and pins for consistency with GPIO driver
|
||||
and the HAL drivers used by this Zephyr port. The following table summarizes
|
||||
the mapping between pads and ports/pins. This must be taken into account when
|
||||
using GPIO driver or configuring the pinmuxing for the device drivers.
|
||||
|
||||
+-------------------+-------------+
|
||||
| Pads | Port/Pins |
|
||||
+===================+=============+
|
||||
| PAD_000 - PAD_015 | PA0 - PA15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_016 - PAD_030 | PB0 - PB14 |
|
||||
+-------------------+-------------+
|
||||
| PAD_031 | PC15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_032 - PAD_047 | PD0 - PD15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_048 - PAD_063 | PE0 - PE15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_064 - PAD_079 | PF0 - PF15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_080 - PAD_091 | PG0 - PG11 |
|
||||
+-------------------+-------------+
|
||||
| PAD_092 - PAD_095 | PH12 - PH15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_096 - PAD_111 | PI0 - PI15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_112 - PAD_127 | PJ0 - PJ15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_128 - PAD_143 | PK0 - PK15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_144 - PAD_145 | PL0 - PL1 |
|
||||
+-------------------+-------------+
|
||||
| PAD_146 - PAD_159 | PM2 - PM15 |
|
||||
+-------------------+-------------+
|
||||
| PAD_160 - PAD_169 | PN0 - PN9 |
|
||||
+-------------------+-------------+
|
||||
| PAD_170 - PAD_173 | PO10 - PO13 |
|
||||
+-------------------+-------------+
|
||||
|
||||
This board does not include user LED's or switches, which are needed for some
|
||||
of the samples such as :ref:`blinky-sample` or :ref:`button-sample`.
|
||||
Follow the steps described in the sample description to enable support for this
|
||||
board.
|
||||
|
||||
System Clock
|
||||
============
|
||||
|
||||
The Cortex-R52 cores are configured to run at 800 MHz.
|
||||
|
||||
Serial Port
|
||||
===========
|
||||
|
||||
The SoC has 12 LINFlexD instances that can be used in UART mode. Instance 0
|
||||
(defined as ``uart0`` in devicetree) is configured for the console and the
|
||||
remaining are disabled and not configured.
|
||||
|
||||
Programming and Debugging
|
||||
*************************
|
||||
|
||||
Applications for the ``s32z270dc2_rtu0_r52`` and ``s32z270dc2_rtu1_r52`` boards
|
||||
can be built in the usual way as documented in :ref:`build_an_application`.
|
||||
|
||||
Currently is only possible to load and execute a Zephyr application binary on
|
||||
this board from the internal SRAM, using `Lauterbach TRACE32`_ development
|
||||
tools and debuggers.
|
||||
|
||||
.. note::
|
||||
Currently, the start-up scripts executed with ``west flash`` and
|
||||
``west debug`` commands perform the same steps to initialize the SoC and
|
||||
load the application to SRAM. The difference is that ``west flash`` hide the
|
||||
Lauterbach TRACE32 interface, executes the application and exits.
|
||||
|
||||
Install Lauterbach TRACE32 Software
|
||||
===================================
|
||||
|
||||
Follow the steps described in :ref:`lauterbach-trace32-debug-host-tools` to
|
||||
install and set-up Lauterbach TRACE32 software.
|
||||
|
||||
Set-up the Board
|
||||
================
|
||||
|
||||
Connect the Lauterbach TRACE32 debugger to the board's JTAG connector (``J134``)
|
||||
and to the host computer.
|
||||
|
||||
For visualizing the serial output, connect the board's USB/UART port (``J119``) to
|
||||
the host computer and run your favorite terminal program to listen for output.
|
||||
For example, using the cross-platform `pySerial miniterm`_ terminal:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
python -m serial.tools.miniterm <port> 115200
|
||||
|
||||
Replace ``<port>`` with the port where the board can be found. For example,
|
||||
under Linux, ``/dev/ttyUSB0``.
|
||||
|
||||
Flashing
|
||||
========
|
||||
|
||||
For example, you can build and run the :ref:`hello_world` sample for the board
|
||||
``s32z270dc2_rtu0_r52`` with:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: s32z270dc2_rtu0_r52
|
||||
:goals: build flash
|
||||
|
||||
You should see the following message in the terminal:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Hello World! s32z270dc2_rtu0_r52
|
||||
|
||||
Debugging
|
||||
=========
|
||||
|
||||
To enable debugging using Lauterbach TRACE32 software, run instead:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: s32z270dc2_rtu0_r52
|
||||
:goals: build debug
|
||||
|
||||
Step through the application in your debugger, and you should see the following
|
||||
message in the terminal:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Hello World! s32z270dc2_rtu0_r52
|
||||
|
||||
RTU and Core Configuration
|
||||
==========================
|
||||
|
||||
This Zephyr port can only run single core in any of the Cortex-R52 cores,
|
||||
either in lock-step or split-lock mode. By default, Zephyr runs on the first
|
||||
core of the RTU chosen and in lock-step mode (which is the reset
|
||||
configuration).
|
||||
|
||||
To build for split-lock mode, the :kconfig:option:`CONFIG_DCLS` must be
|
||||
disabled from your application Kconfig file.
|
||||
|
||||
Additionally, to run in a different core or with a different core
|
||||
configuration than the default, extra parameters must be provided to the runner
|
||||
as follows:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
west <command> --startup-args elfFile=<elf_path> rtu=<rtu_id> \
|
||||
core=<core_id> lockstep=<yes/no>
|
||||
|
||||
Where:
|
||||
|
||||
- ``<command>`` is ``flash`` or ``debug``
|
||||
- ``<elf_path>`` is the path to the Zephyr application ELF in the output
|
||||
directory
|
||||
- ``<rtu_id>`` is the zero-based RTU index (0 for ``s32z270dc2_rtu0_r52``
|
||||
and 1 for ``s32z270dc2_rtu1_r52``)
|
||||
- ``<core_id>`` is the zero-based core index relative to the RTU on which to
|
||||
run the Zephyr application (0, 1, 2 or 3)
|
||||
- ``<yes/no>`` can be ``yes`` to run in lock-step, or ``no`` to run in
|
||||
split-lock.
|
||||
|
||||
For example, to build the :ref:`hello_world` sample for the board
|
||||
``s32z270dc2_rtu0_r52`` with split-lock core configuration:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: s32z270dc2_rtu0_r52
|
||||
:goals: build
|
||||
:gen-args: -DCONFIG_DCLS=n
|
||||
|
||||
To execute this sample in the second core of RTU0 in split-lock mode:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
west flash --startup-args elfFile=build/zephyr/zephyr.elf \
|
||||
rtu=0 core=1 lockstep=no
|
||||
|
||||
References
|
||||
**********
|
||||
|
||||
.. target-notes::
|
||||
|
||||
.. _NXP S32Z2 Real-Time Processors website:
|
||||
https://www.nxp.com/products/processors-and-microcontrollers/s32-automotive-platform/s32z-and-s32e-real-time-processors/s32z2-safe-and-secure-high-performance-real-time-processors:S32Z2
|
||||
|
||||
.. _Lauterbach TRACE32:
|
||||
https://www.lauterbach.com
|
||||
|
||||
.. _pySerial miniterm:
|
||||
https://pyserial.readthedocs.io/en/latest/tools.html#module-serial.tools.miniterm
|
Loading…
Add table
Add a link
Reference in a new issue