For the "References" section to be useful, it needs to include a call to the target-notes directive, which is the one that actually generates the list of references made in the current document. Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
558 lines
28 KiB
ReStructuredText
558 lines
28 KiB
ReStructuredText
.. _hsdk4xd:
|
||
|
||
DesignWare(R) ARC(R) HS4x/HS4xD Development Kit
|
||
###############################################
|
||
|
||
Overview
|
||
********
|
||
|
||
The ARC HS4x/HS4xD Development Kit is the next revision of :ref:`Synopsys HSDK board <hsdk>`.
|
||
It includes a multicore ARC HS4xD-based chip that integrates a wide range of interfaces
|
||
including Ethernet, HDMI, WiFi, Bluetooth, USB, SDIO, I2C, SPI, UART, I2S, ADC, PWM and GPIO,
|
||
as well as a Think Silicon GPU.
|
||
|
||
.. image:: hsdk4xd.jpg
|
||
:align: center
|
||
:alt: DesignWare(R) ARC(R) HS4x/HS4xD Development Kit (synopsys.com)
|
||
|
||
For details about the board, see: `ARC HS4x/HS4xD Development Kit
|
||
(HSDK4xD) <https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit>`__
|
||
|
||
Hardware
|
||
********
|
||
|
||
The ARC HSDK4xD has 24 general GPIOs, which divided into 8 groups named from ``GPIO_SEL_0`` to ``GPIO_SEL_7``.
|
||
Each sel can configured for different functions, such as: GPIO, UART, SPI, I2C and PWM. We can program
|
||
``CREG_GPIO_MUX`` register to do configuration for each sel. Tables below show the bit definition for
|
||
``CREG_GPIO_MUX`` register and the details configuration for each pin.
|
||
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| Bit | Name | Access | Reset value | Description |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| 2:0 | GPIO_SEL_0 | RW | 0x0 | GPIO mux select for gpio[3:0] |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| 5:3 | GPIO_SEL_1 | RW | 0x0 | GPIO mux select for gpio[7:4] |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| 8:6 | GPIO_SEL_2 | RW | 0x0 | GPIO mux select for gpio[11:8] |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| 11:9 | GPIO_SEL_3 | RW | 0x0 | GPIO mux select for gpio[15:12] |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| 14:12 | GPIO_SEL_4 | RW | 0x0 | GPIO mux select for gpio[17:16] |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| 17:15 | GPIO_SEL_5 | RW | 0x0 | GPIO mux select for gpio[19:18] |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| 20:18 | GPIO_SEL_6 | RW | 0x0 | GPIO mux select for gpio[21:20] |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
| 23:21 | GPIO_SEL_7 | RW | 0x0 | GPIO mux select for gpio[23:22] |
|
||
+--------+-------------+---------+--------------+---------------------------------+
|
||
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SELS | GPIO PINS | FUN0 | FUN1 | FUN2 | FUN3 | FUN4 | FUN5 | FUN6 | FUN7 |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SEL0 | 0 | gpio[0] | uart0_cts | spi1_cs[0] | gpio[0] | gpio[0] | pwm_ch[6] | pwm_ch[6] | pwm_ch[1] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 1 | gpio[1] | uart0_txd | spi1_mosi | gpio[1] | pwm_ch[0] | gpio[1] | pwm_ch[0] | pwm_ch[0] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 2 | gpio[2] | uart0_rxd | spi1 _miso | i2c1_scl | gpio[2] | gpio[2] | gpio[2] | gpio[2] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 3 | gpio[3] | uart0_rts | spi1_clk | i2c1_sda | gpio[3] | gpio[3] | gpio[3] | gpio[3] |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SEL1 | 4 | gpio[4] | uart1_cts | spi2_cs[0] | gpio[4] | gpio[4] | pwm_ch[4] | pwm_ch[4] | pwm_ch[3] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 5 | gpio[5] | uart1_txd | spi2_mosi | gpio[5] | pwm_ch[2] | gpio[5] | pwm_ch[2] | pwm_ch[2] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 6 | gpio[6] | uart1_rxd | spi2_miso | i2c2_scl | gpio[6] | gpio[6] | gpio[6] | gpio[6] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 7 | gpio[7] | uart1_rts | spi2_clk | i2c2_sda | gpio[7] | gpio[7] | gpio[7] | gpio[7] |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SEL2 | 8 | gpio[8] | uart2_cts | spi1_cs[1] | gpio[8] | gpio[8] | pwm_ch[2] | pwm_ch[2] | pwm_ch[5] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 9 | gpio[9] | uart2_txd | spi1_mosi | gpio[9] | pwm_ch[4] | gpio[9] | pwm_ch[4] | pwm_ch[4] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 10 | gpio[10] | uart2_rxd | spi1_miso | i2c1_scl | gpio[10] | gpio[10] | gpio[10] | gpio[10] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 11 | gpio[11] | uart2_rts | spi1_clk | i2c1_sda | gpio[11] | gpio[11] | gpio[11] | gpio[11] |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SEL3 | 12 | gpio[12] | uart0_cts | spi2_cs[1] | gpio[12] | gpio[12] | pwm_ch[0] | pwm_ch[0] | pwm_ch[7] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 13 | gpio[13] | uart0_txd | spi2_mosi | gpio[13] | pwm_ch[6] | gpio[13] | pwm_ch[6] | pwm_ch[6] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 14 | gpio[14] | uart0_rxd | spi2_miso | i2c2_scl | gpio[14] | gpio[14] | gpio[14] | gpio[14] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 15 | gpio[15] | uart0_rts | spi2_clk | i2c2_sda | gpio[15] | gpio[15] | gpio[15] | gpio[15] |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SEL4 | 16 | gpio[16] | uart1_txd | spi1_cs[2] | i2c1_scl | gpio[16] | pwm_fault_0 | gpio[16] | pwm_fault_0 |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 17 | gpio[17] | uart1_rxd | spi1_mosi | i2c1_sda | pwm_ch[0] | pwm_ch[0] | pwm_ch[5] | pwm_ch[5] |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SEL5 | 18 | gpio[18] | uart2_txd | spi1_miso | i2c2_scl | gpio[18] | gpio[18] | gpio[18] | gpio[18] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 19 | gpio[19] | uart2_rxd | spi1_clk | i2c2_sda | gpio[19] | gpio[19] | gpio[19] | gpio[19] |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SEL6 | 20 | gpio[20] | uart0_txd | spi2_cs[2] | i2c1_scl | gpio[20] | pwm_fault_1 | gpio[20] | pwm_fault_1 |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 21 | gpio[21] | uart0_rxd | spi2_mosi | i2c1_sda | pwm_ch[6] | pwm_ch[6] | pwm_ch[3] | pwm_ch[3] |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| SEL7 | 22 | gpio[22] | uart2_txd | spi2_miso | i2c2_scl | gpio[22] | gpio[22] | gpio[22] | gpio[22] |
|
||
| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
| | 23 | gpio[23] | uart2_rxd | spi2_clk | i2c2_sda | gpio[23] | gpio[23] | gpio[23] | gpio[23] |
|
||
+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+
|
||
|
||
Digilent Pmod
|
||
=============
|
||
|
||
The ARC HSDK4xD features two 12-pin Pmod connectors ``Pmod_A`` and ``Pmod_B`` and one 6-pin Pmod connector ``Pmod_C``.
|
||
The functionality of the Pmod connectors is programmable and includes GPIO, UART, SPI, I2C and PWM.
|
||
The location of the pins on the Pmod connectors is shown in Figure below. Detailed pin descriptions
|
||
depending on the pin multiplexer settings are provided in the subsequent sections.
|
||
|
||
.. image:: pinout_diagram_of_the_pmod.jpg
|
||
:align: center
|
||
:alt: Pinout Diagram of the Pmod
|
||
|
||
Pmod_A Connector
|
||
----------------
|
||
|
||
Table below lists the pin assignment of valid protocols that can be multiplexed on the ``Pmod_A``
|
||
connector. The GPIO column is the default assignment after Reset.
|
||
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| Pin | GPIO | UART | SPI | I2C | PWM_1 | PWM_2 |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A1 | gpio[8] | uart2_cts | spi1_cs[1] | gpio[8] | gpio[8] | pwm_ch[2] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A2 | gpio[9] | uart2_txd | spi1_mosi | gpio[9] | pwm_ch[4] | gpio[9] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A3 | gpio[10] | uart2_rxd | spi1_miso | i2c1_scl | gpio[10] | gpio[10] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A4 | gpio[11] | uart2_rts | spi1_clk | i2c1_sda | gpio[11] | gpio[11] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A5 | GND | GND | GND | GND | GND | GND |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A6 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A7 | gpio[20] | gpio[20] | gpio[20] | gpio[20] | gpio[20] | gpio[20] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A8 | gpio[21] | gpio[21] | gpio[21] | gpio[21] | gpio[21] | gpio[21] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A9 | n.c. | n.c. | n.c. | n.c. | n.c. | n.c. |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A10 | n.c. | n.c. | n.c. | n.c. | n.c. | n.c. |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A11 | GND | GND | GND | GND | GND | GND |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| A12 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
|
||
Pmod_B Connector
|
||
----------------
|
||
|
||
Table below lists the pin assignment of valid protocols that can be multiplexed on the ``Pmod_B``
|
||
connector. The GPIO column is the default assignment after Reset.
|
||
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| Pin | GPIO | UART | SPI | I2C | PWM_1 | PWM_2 |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B1 | gpio[12] | uart0_cts | spi2_cs[1] | gpio[12] | gpio[12] | pwm_ch[0] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B2 | gpio[13] | uart0_txd | spi2_mosi | gpio[13] | pwm_ch[6] | gpio[13] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B3 | gpio[14] | uart0_rxd | spi2_miso | i2c2_scl | gpio[14] | gpio[14] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B4 | gpio[15] | uart0_rts | spi2_clk | i2c2_sda | gpio[15] | gpio[15] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B5 | GND | GND | GND | GND | GND | GND |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B6 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B7 | gpio[22] | gpio[22] | gpio[22] | gpio[22] | gpio[22] | gpio[22] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B8 | gpio[23] | gpio[23] | gpio[23] | gpio[23] | gpio[23] | gpio[23] |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B9 | n.c. | n.c. | n.c. | n.c. | n.c. | n.c. |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B10 | n.c. | n.c. | n.c. | n.c. | n.c. | n.c. |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B11 | GND | GND | GND | GND | GND | GND |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
| B12 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 |
|
||
+------+-----------+------------+-------------+-----------+------------+-----------+
|
||
|
||
Pmod_C Connector
|
||
----------------
|
||
|
||
Table below lists the pin assignment of valid protocols that can be multiplexed on the ``Pmod_C``
|
||
connector. The GPIO column is the default assignment after Reset.
|
||
|
||
+------+-----------+------------+-------------+-----------+-----------+
|
||
| Pin | GPIO | UART | SPI | I2C | PWM |
|
||
+------+-----------+------------+-------------+-----------+-----------+
|
||
| C1 | gpio[16] | uart1_txd | spi1_cs[2] | i2c1_scl | gpio[16] |
|
||
+------+-----------+------------+-------------+-----------+-----------+
|
||
| C2 | gpio[17] | uart1_rxd | spi1_mosi | i2c1_sda | pwm_ch[0] |
|
||
+------+-----------+------------+-------------+-----------+-----------+
|
||
| C3 | gpio[18] | uart2_txd | spi1_miso | i2c2_scl | gpio[18] |
|
||
+------+-----------+------------+-------------+-----------+-----------+
|
||
| C4 | gpio[19] | uart2_rxd | spi1_clk | i2c2_sda | gpio[19] |
|
||
+------+-----------+------------+-------------+-----------+-----------+
|
||
| C5 | GND | GND | GND | GND | GND |
|
||
+------+-----------+------------+-------------+-----------+-----------+
|
||
| C6 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 |
|
||
+------+-----------+------------+-------------+-----------+-----------+
|
||
|
||
Mikrobus
|
||
========
|
||
|
||
The ARC HSDK4xD features a set of MikroBUS headers. Figure below shows the relevant function assignments,
|
||
fully compatible with the MikroBUS standard. Table below shows the pin assignment on the I/O Multiplexer.
|
||
|
||
.. image:: mikrobus_header.jpg
|
||
:align: center
|
||
:alt: mikrobus header
|
||
|
||
+-------+-----------------+------+-----------+
|
||
| Pin | I/O | Pin | I/O |
|
||
+-------+-----------------+------+-----------+
|
||
| AN | ADC VIN6* | PWM | pwm_ch[0] |
|
||
+-------+-----------------+------+-----------+
|
||
| RST | GPX_Port0_bit1 | INT | gpio[16] |
|
||
+-------+-----------------+------+-----------+
|
||
| CS | spi2_cs[1] | RX | uart2_rxd |
|
||
+-------+-----------------+------+-----------+
|
||
| SCK | spi2_clk | TX | uart2_txd |
|
||
+-------+-----------------+------+-----------+
|
||
| MISO | spi2_miso | SCL | i2c2_scl |
|
||
+-------+-----------------+------+-----------+
|
||
| MOSI | spi2_mosi | SDA | i2c2_sda |
|
||
+-------+-----------------+------+-----------+
|
||
|
||
.. note::
|
||
ADC VIN6 is available through the on-board ADC and is
|
||
read though SPI0 using SPI chip select 1.
|
||
|
||
Arduino
|
||
=======
|
||
|
||
The ARC HSDK4xD provides an Arduino shield interface. Figure below shows the relevant
|
||
function assignments. The Arduino shield interface is compatible with the Arduino UNO
|
||
R3 with the following exceptions: 5 Volt shields are not supported, the IOREF voltage on
|
||
the ARC HSDK4xD board is fixed to 3V3. Note that the ICSP header is also not available. Most
|
||
shields do not require this ICSP header as the SPI master interface on this ICSP header
|
||
is also available on the ``IO10`` to ``IO13`` pins.
|
||
|
||
.. image:: arduino_shield_interface.jpg
|
||
:align: center
|
||
:alt: arduino shield interface
|
||
|
||
Table below shows the pin assignment on the I/O Multiplexer. Multiplexing is controlled by software
|
||
using the ``CREG_GPIO_MUX`` register (see Pinmux ). After a reset, all ports are configured as GPIO inputs.
|
||
|
||
+-------+------------+-----------------+------------+
|
||
| Pin | I/O-1 | I/O-2 | I/O-3 |
|
||
+-------+------------+-----------------+------------+
|
||
| AD0 | ADC VIN0* | GPX_port0_bit2 | - |
|
||
+-------+------------+-----------------+------------+
|
||
| AD1 | ADC VIN1* | GPX_port0_bit3 | - |
|
||
+-------+------------+-----------------+------------+
|
||
| AD2 | ADC VIN2* | GPX_port0_bit4 | - |
|
||
+-------+------------+-----------------+------------+
|
||
| AD3 | ADC VIN3* | GPX_port0_bit5 | - |
|
||
+-------+------------+-----------------+------------+
|
||
| AD4 | ADC VIN4* | gpio[18] | i2c2_sda |
|
||
+-------+------------+-----------------+------------+
|
||
| AD5 | ADC VIN5* | gpio[19] | i2c2_scl |
|
||
+-------+------------+-----------------+------------+
|
||
| IO0 | gpio[23] | uart2_rxd | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO1 | gpio[22] | uart2_txd | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO2 | gpio[16] | - | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO3 | gpio[17] | pwm_ch[5] | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO4 | gpio[11] | - | |
|
||
+-------+------------+-----------------+------------+
|
||
| IO5 | gpio[9] | pwm_ch[4] | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO6 | gpio[21] | pwm_ch[3] | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO7 | gpio[20] | - | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO8 | gpio[10] | - | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO9 | gpio[8] | pwm_ch[2] | - |
|
||
+-------+------------+-----------------+------------+
|
||
| IO10 | gpio[12] | pwm_ch[0] | spi2_cs[1] |
|
||
+-------+------------+-----------------+------------+
|
||
| IO11 | gpio[13] | pwm_ch[6] | spi2_mosi |
|
||
+-------+------------+-----------------+------------+
|
||
| IO12 | gpio[14] | - | spi2_miso |
|
||
+-------+------------+-----------------+------------+
|
||
| IO13 | gpio[15] | - | spi2_clk |
|
||
+-------+------------+-----------------+------------+
|
||
|
||
I/O expander
|
||
============
|
||
|
||
The ARC HSDK4xD board includes a CY8C9520A I/O expander from `Cypress CY8C9520A
|
||
<https://www.cypress.com/file/37971/download>`__. The I/O
|
||
expander offers additional GPIO signals and board control signals and can be accessed
|
||
through the on-board I2C bus, we have implemented a basic driver for it.
|
||
Tables below shows an overview of relevant I/O signals.
|
||
|
||
+------------+---------------------------------------------+
|
||
| Pins | Usage |
|
||
+------------+---------------------------------------------+
|
||
| port0_bit0 | RS9113 Bluetooth I2S RX enable (active low) |
|
||
+------------+---------------------------------------------+
|
||
| port0_bit1 | mikroBUS Reset (active low) |
|
||
+------------+---------------------------------------------+
|
||
| port0_bit2 | GPIO for Arduino AD0 |
|
||
+------------+---------------------------------------------+
|
||
| port0_bit3 | GPIO for Arduino AD1 |
|
||
+------------+---------------------------------------------+
|
||
| port0_bit4 | GPIO for Arduino AD2 |
|
||
+------------+---------------------------------------------+
|
||
| port0_bit5 | GPIO for Arduino AD3 |
|
||
+------------+---------------------------------------------+
|
||
| port1_bit4 | On-board user LED0 |
|
||
+------------+---------------------------------------------+
|
||
| port1_bit5 | On-board user LED1 |
|
||
+------------+---------------------------------------------+
|
||
| port1_bit6 | On-board user LED2 |
|
||
+------------+---------------------------------------------+
|
||
| port1_bit7 | On-board user LED3 |
|
||
+------------+---------------------------------------------+
|
||
|
||
On-board user LEDS
|
||
==================
|
||
|
||
The ARC HSDK4xD includes 4 user LEDs(active high), which can be controlled through the I/O expander pins.
|
||
|
||
+-------+-----------------+
|
||
| LEDs | PINs |
|
||
+-------+-----------------+
|
||
| LED0 | GPX_port1_bit4 |
|
||
+-------+-----------------+
|
||
| LED1 | GPX_port1_bit5 |
|
||
+-------+-----------------+
|
||
| LED2 | GPX_port1_bit6 |
|
||
+-------+-----------------+
|
||
| LED3 | GPX_port1_bit7 |
|
||
+-------+-----------------+
|
||
|
||
For hardware feature details, refer to : `Designware HS4x/HS4xD Development Kit website
|
||
<https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit>`__.
|
||
|
||
Programming and Debugging
|
||
*************************
|
||
|
||
Required Hardware and Software
|
||
==============================
|
||
|
||
To use Zephyr RTOS applications on the HS4x/HS4xD Development Kit board, a few
|
||
additional pieces of hardware are required.
|
||
|
||
* A micro USB cable provides USB-JTAG debug and USB-UART communication
|
||
to the board
|
||
|
||
* A universal switching power adaptor (110-240V
|
||
AC to 12V DC), provided in the package, provides power to the board.
|
||
|
||
* :ref:`The Zephyr SDK <toolchain_zephyr_sdk>`
|
||
|
||
* Terminal emulator software for use with the USB-UART. Suggestion:
|
||
`Putty Website`_.
|
||
|
||
* (optional) A collection of Pmods, Arduino modules, or Mikro modules.
|
||
See `Digilent Pmod Modules`_ or develop your custom interfaces to attach
|
||
to the Pmod connector.
|
||
|
||
Set up the ARC HS4x/HS4xD Development Kit
|
||
=========================================
|
||
|
||
To run Zephyr application on ARC HS4x/HS4xD Development Kit, you need to
|
||
set up the board correctly.
|
||
|
||
* Connect the digilent USB cable from your host to the board.
|
||
|
||
* Connect the 12V DC power supply to your board
|
||
|
||
Set up Zephyr Software
|
||
======================
|
||
|
||
Building Sample Applications
|
||
==============================
|
||
|
||
You can try many of the :zephyr:code-sample-category:`sample applications and demos <samples>`.
|
||
We'll use :zephyr:code-sample:`hello_world`, found in :zephyr_file:`samples/hello_world` as an example.
|
||
|
||
Configuring
|
||
-----------
|
||
|
||
You may need to write a ``prj.conf`` file if the sample doesn't have one.
|
||
Next, you can use the menuconfig rule to configure the target. By specifying
|
||
``hsdk4xd`` as the board configuration, you can select the ARC HS4x/HS4xD Development
|
||
Kit board support for Zephyr.
|
||
|
||
.. zephyr-app-commands::
|
||
:board: hsdk4xd
|
||
:zephyr-app: samples/hello_world
|
||
:goals: menuconfig
|
||
|
||
|
||
Building
|
||
--------
|
||
|
||
You can build an application in the usual way. Refer to
|
||
:ref:`build_an_application` for more details. Here is an example for
|
||
:zephyr:code-sample:`hello_world`.
|
||
|
||
.. zephyr-app-commands::
|
||
:board: hsdk4xd
|
||
:zephyr-app: samples/hello_world
|
||
:maybe-skip-config:
|
||
:goals: build
|
||
|
||
|
||
Connecting Serial Output
|
||
=========================
|
||
|
||
In the default configuration, Zephyr's HS4x/HS4xD Development Kit images support
|
||
serial output via the USB-UART on the board. To enable serial output:
|
||
|
||
* Open a serial port emulator (i.e. on Linux minicom, putty, screen, etc)
|
||
|
||
* Specify the tty driver name, for example, on Linux this may be
|
||
:file:`/dev/ttyUSB0`
|
||
|
||
* Set the communication settings to:
|
||
|
||
|
||
========= =====
|
||
Parameter Value
|
||
========= =====
|
||
Baud: 115200
|
||
Data: 8 bits
|
||
Parity: None
|
||
Stopbits: 1
|
||
========= =====
|
||
|
||
Debugging
|
||
==========
|
||
|
||
Using the latest version of Zephyr SDK(>=0.15.2), you can debug and
|
||
flash (run) HS4x/HS4xD Development Kit directly.
|
||
|
||
One option is to build and debug the application using the usual
|
||
Zephyr build system commands.
|
||
|
||
.. zephyr-app-commands::
|
||
:board: hsdk4xd
|
||
:app: <my app>
|
||
:goals: debug
|
||
|
||
At this point you can do your normal debug session. Set breakpoints and then
|
||
:kbd:`c` to continue into the program.
|
||
|
||
The other option is to launch a debug server, as follows.
|
||
|
||
.. zephyr-app-commands::
|
||
:board: hsdk4xd
|
||
:app: <my app>
|
||
:goals: debugserver
|
||
|
||
Then connect to the debug server at the HS4x/HS4xD Development Kit from a second
|
||
console, from the build directory containing the output :file:`zephyr.elf`.
|
||
|
||
.. code-block:: console
|
||
|
||
$ cd <my app>
|
||
$ $ZEPHYR_SDK_INSTALL_DIR/arc-zephyr-elf/arc-zephyr-elf-gdb zephyr.elf
|
||
(gdb) target remote localhost:3333
|
||
(gdb) load
|
||
(gdb) b main
|
||
(gdb) c
|
||
|
||
Flashing
|
||
========
|
||
|
||
If you just want to download the application to the HS4x/HS4xD Development Kit's DDR
|
||
and run, you can do so in the usual way.
|
||
|
||
.. zephyr-app-commands::
|
||
:board: hsdk4xd
|
||
:app: <my app>
|
||
:goals: flash
|
||
|
||
This command still uses openocd and gdb to load the application elf file to
|
||
HS4x/HS4xD Development Kit, but it will load the application and immediately run. If
|
||
power is removed, the application will be lost since it wasn't written to flash.
|
||
|
||
Most of the time you will not be flashing your program but will instead debug
|
||
it using openocd and gdb. The program can be download via the USB cable into
|
||
the code and data memories.
|
||
|
||
The HS4x/HS4xD Development Kit also supports flashing the Zephyr application
|
||
with the U-Boot bootloader, a powerful and flexible tool for loading
|
||
an executable from different sources and running it on the target platform.
|
||
|
||
The U-Boot implementation for the HS4x/HS4xD Development Kit was further extended with
|
||
additional functionality that allows users to better manage the broad
|
||
configurability of the HS4x/HS4xD Development Kit
|
||
|
||
When you are ready to deploy the program so that it boots up automatically on
|
||
reset or power-up, you can follow the steps to place the program on SD card.
|
||
|
||
For details, see: `Uboot-HS4x/HS4xD-Command-Reference
|
||
<https://github.com/foss-for-synopsys-dwc-arc-processors/linux/wiki/Uboot-HSDK-4xD-Command-Reference#launching-baremetal-application-on-hsdk-4xd>`__
|
||
|
||
Supported peripheral
|
||
====================
|
||
|
||
The following list indicates the state of HS4x/HS4xD Development Kit peripherals’ support
|
||
|
||
+------------+---------+
|
||
| Peripheral | Support |
|
||
+------------+---------+
|
||
| ADC | No |
|
||
+------------+---------+
|
||
| Bluetooth | No |
|
||
+------------+---------+
|
||
| Ethernet | No |
|
||
+------------+---------+
|
||
| GPIO | No |
|
||
+------------+---------+
|
||
| GPU | No |
|
||
+------------+---------+
|
||
| HDMI | No |
|
||
+------------+---------+
|
||
| I2C | No |
|
||
+------------+---------+
|
||
| I2S | No |
|
||
+------------+---------+
|
||
| PWM | No |
|
||
+------------+---------+
|
||
| SDIO | No |
|
||
+------------+---------+
|
||
| SPI | No |
|
||
+------------+---------+
|
||
| UART | Yes |
|
||
+------------+---------+
|
||
| USB | No |
|
||
+------------+---------+
|
||
| WiFi | No |
|
||
+------------+---------+
|
||
|
||
References
|
||
**********
|
||
|
||
.. target-notes::
|
||
|
||
.. _embARC website: https://www.embarc.org
|
||
|
||
.. _Designware HS Development Kit website: https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit
|
||
|
||
.. _Digilent Pmod Modules: http://store.digilentinc.com/pmod-modules
|
||
|
||
.. _Putty website: http://www.putty.org
|