boards: hsdk: add initial support of ARC HS Development Kit
This commit includes the initial support of ARC HS Development Kit: * hsdk soc support * hsdk board support * no mmu support, so no userspace * smp support Signed-off-by: Wayne Ren <wei.ren@synopsys.com>
This commit is contained in:
parent
4fb8bf61c0
commit
dbc29fe77e
18 changed files with 828 additions and 0 deletions
14
boards/arc/hsdk/Kconfig.board
Normal file
14
boards/arc/hsdk/Kconfig.board
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Kconfig - DesignWare ARC HS Development Kit board configuration
|
||||
#
|
||||
# Copyright (c) 2019 Synopsys, Inc. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
config BOARD_HSDK
|
||||
bool "ARC HS Development Kit"
|
||||
depends on SOC_ARC_HSDK
|
||||
help
|
||||
The DesignWare ARC HS Development Kit is a ready-to-use platform for
|
||||
rapid software development on the ARC HS3x family of processors. It
|
||||
supports single- and multi-core ARC HS34, HS36 and HS38 processors
|
||||
and offers a wide range of interfaces
|
11
boards/arc/hsdk/Kconfig.defconfig
Normal file
11
boards/arc/hsdk/Kconfig.defconfig
Normal file
|
@ -0,0 +1,11 @@
|
|||
#
|
||||
# Copyright (c) 2019 Synopsys, Inc. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if BOARD_HSDK
|
||||
|
||||
config BOARD
|
||||
default "hsdk"
|
||||
|
||||
endif # BOARD_HSDK
|
6
boards/arc/hsdk/board.cmake
Normal file
6
boards/arc/hsdk/board.cmake
Normal file
|
@ -0,0 +1,6 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# TODO: can this board just use the usual openocd runner?
|
||||
set(BOARD_FLASH_RUNNER em-starterkit)
|
||||
set(BOARD_DEBUG_RUNNER em-starterkit)
|
||||
board_finalize_runner_args(em-starterkit)
|
BIN
boards/arc/hsdk/doc/hsdk.jpg
Normal file
BIN
boards/arc/hsdk/doc/hsdk.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 103 KiB |
208
boards/arc/hsdk/doc/index.rst
Normal file
208
boards/arc/hsdk/doc/index.rst
Normal file
|
@ -0,0 +1,208 @@
|
|||
.. _hsdk:
|
||||
|
||||
DesignWare(R) ARC(R) HS Development Kit
|
||||
########################################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The DesignWare(R) ARC(R) HS Development Kit is a ready-to-use platform for
|
||||
rapid software development on the ARC HS3x family of processors. It supports
|
||||
single- and multi-core ARC HS34, HS36 and HS38 processors and offers a wide
|
||||
range of interfaces including Ethernet, WiFi, Bluetooth, USB, SDIO, I2C, SPI,
|
||||
UART, I2S, ADC, PWM and GPIO. A Vivante GPU is also contained in the ARC
|
||||
Development System SoC. This allows developers to build and debug complex
|
||||
software on a comprehensive hardware platform
|
||||
|
||||
.. image:: ./hsdk.jpg
|
||||
:width: 442px
|
||||
:align: center
|
||||
:alt: DesignWare(R) ARC(R) HS Development Kit (synopsys.com)
|
||||
|
||||
For details about the board, see: `ARC HS Development Kit
|
||||
(IoTDK) <https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit>`__
|
||||
|
||||
Hardware
|
||||
********
|
||||
|
||||
For hardware feature details, refer to :
|
||||
`Designware HS Development Kit website`_.
|
||||
|
||||
Programming and Debugging
|
||||
*************************
|
||||
|
||||
Required Hardware and Software
|
||||
==============================
|
||||
|
||||
To use Zephyr RTOS applications on the HS 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 <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 HS Development Kit
|
||||
==================================
|
||||
|
||||
To run Zephyr application on IoT 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 :ref:`sample applications and demos
|
||||
<samples-and-demos>`. We'll use :ref:`hello_world`, found in
|
||||
:zephyr_file:`samples/hello_world` as an example.
|
||||
|
||||
Configuring
|
||||
-----------
|
||||
|
||||
You may need to write a prj_arc.conf file if the sample doesn't have one.
|
||||
Next, you can use the menuconfig rule to configure the target. By specifying
|
||||
``hsdk`` as the board configuration, you can select the ARC HS Development
|
||||
Kit board support for Zephyr.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:board: hsdk
|
||||
: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
|
||||
:ref:`hello_world`.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:board: hsdk
|
||||
:zephyr-app: samples/hello_world
|
||||
:maybe-skip-config:
|
||||
:goals: build
|
||||
|
||||
|
||||
Connecting Serial Output
|
||||
=========================
|
||||
|
||||
In the default configuration, Zephyr's HS 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.10), you can debug and
|
||||
flash (run) HS Development Kit directly.
|
||||
|
||||
One option is to build and debug the application using the usual
|
||||
Zephyr build system commands.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:board: hsdk
|
||||
: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: hsdk
|
||||
:app: <my app>
|
||||
:goals: debugserver
|
||||
|
||||
Then connect to the debug server at the HS 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 HS Development Kit's DDR
|
||||
and run, you can do so in the usual way.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:board: hsdk
|
||||
:app: <my app>
|
||||
:goals: flash
|
||||
|
||||
This command still uses openocd and gdb to load the application elf file to
|
||||
HS 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 HS 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 HS Development Kit was further extended with
|
||||
additional functionality that allows users to better manage the broad
|
||||
configurability of the HS 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-HSDK-Command-Reference
|
||||
<https://github.com/foss-for-synopsys-dwc-arc-processors/linux/wiki/Uboot-HSDK-Command-Reference#launching-baremetal-application-on-hsdk>`__
|
||||
|
||||
|
||||
Release Notes
|
||||
*************
|
||||
|
||||
References
|
||||
**********
|
||||
|
||||
.. _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
|
29
boards/arc/hsdk/hsdk.dts
Normal file
29
boards/arc/hsdk/hsdk.dts
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Copyright (c) 2019, Synopsys, Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <arc_hsdk.dtsi>
|
||||
|
||||
/ {
|
||||
model = "hsdk";
|
||||
compatible = "snps,hsdk";
|
||||
|
||||
aliases {
|
||||
uart-0 = &uart0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
zephyr,sram = &ddr0;
|
||||
zephyr,console = &uart0;
|
||||
zephyr,shell-uart = &uart0;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
current-speed = <115200>;
|
||||
};
|
11
boards/arc/hsdk/hsdk.yaml
Normal file
11
boards/arc/hsdk/hsdk.yaml
Normal file
|
@ -0,0 +1,11 @@
|
|||
identifier: hsdk
|
||||
name: HS Development Kit
|
||||
type: mcu
|
||||
arch: arc
|
||||
toolchain:
|
||||
- zephyr
|
||||
- xtools
|
||||
testing:
|
||||
ignore_tags:
|
||||
- net
|
||||
- bluetooth
|
15
boards/arc/hsdk/hsdk_defconfig
Normal file
15
boards/arc/hsdk/hsdk_defconfig
Normal file
|
@ -0,0 +1,15 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_ARC=y
|
||||
CONFIG_CPU_ARCHS=y
|
||||
CONFIG_SOC_ARC_HSDK=y
|
||||
CONFIG_BOARD_HSDK=y
|
||||
CONFIG_SYS_CLOCK_TICKS_PER_SEC=100
|
||||
CONFIG_XIP=y
|
||||
CONFIG_BUILD_OUTPUT_BIN=n
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_ARCV2_INTERRUPT_UNIT=y
|
||||
CONFIG_ARCV2_TIMER=y
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_UART_CONSOLE=y
|
||||
CONFIG_SERIAL=y
|
111
boards/arc/hsdk/support/openocd.cfg
Normal file
111
boards/arc/hsdk/support/openocd.cfg
Normal file
|
@ -0,0 +1,111 @@
|
|||
# Copyright (C) 2019 Synopsys, Inc.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
# Configure JTAG cable
|
||||
# SDP has built-in FT2232 chip, which is similar to Digilent HS-1, except that
|
||||
# it uses channgel B for JTAG, instead of channel A.
|
||||
interface ftdi
|
||||
ftdi_vid_pid 0x0403 0x6010
|
||||
ftdi_layout_init 0x0088 0x008b
|
||||
ftdi_channel 1
|
||||
|
||||
|
||||
adapter_khz 10000
|
||||
|
||||
# ARCs supports only JTAG.
|
||||
transport select jtag
|
||||
|
||||
|
||||
#
|
||||
# HS Development Kit SoC.
|
||||
#
|
||||
# Contains quad-core ARC HS38.
|
||||
#
|
||||
|
||||
source [find cpu/arc/hs.tcl]
|
||||
|
||||
set _coreid 0
|
||||
set _dbgbase [expr 0x00000000 | ($_coreid << 13)]
|
||||
|
||||
# CHIPNAME will be used to choose core family (600, 700 or EM). As far as
|
||||
# OpenOCD is concerned EM and HS are identical.
|
||||
set _CHIPNAME arc-em
|
||||
|
||||
# OpenOCD discovers JTAG TAPs in reverse order.
|
||||
|
||||
set _TARGETNAME4 $_CHIPNAME.cpu4
|
||||
jtag newtap $_CHIPNAME cpu4 -irlen 4 -ircapture 0x1 -expected-id 0x200c24b1
|
||||
set _TARGETNAME3 $_CHIPNAME.cpu3
|
||||
jtag newtap $_CHIPNAME cpu3 -irlen 4 -ircapture 0x1 -expected-id 0x200824b1
|
||||
set _TARGETNAME2 $_CHIPNAME.cpu2
|
||||
jtag newtap $_CHIPNAME cpu2 -irlen 4 -ircapture 0x1 -expected-id 0x200424b1
|
||||
set _TARGETNAME1 $_CHIPNAME.cpu1
|
||||
jtag newtap $_CHIPNAME cpu1 -irlen 4 -ircapture 0x1 -expected-id 0x200024b1
|
||||
|
||||
################################
|
||||
# ARC HS38 core 1
|
||||
################################
|
||||
|
||||
target create $_TARGETNAME1 arcv2 -chain-position $_TARGETNAME1
|
||||
$_TARGETNAME1 configure -coreid $_coreid
|
||||
$_TARGETNAME1 configure -dbgbase $_dbgbase
|
||||
$_TARGETNAME1 configure -event reset-assert "arc_common_reset $_TARGETNAME1"
|
||||
set _coreid [expr $_coreid + 1]
|
||||
set _dbgbase [expr 0x00000000 | ($_coreid << 13)]
|
||||
arc_hs_init_regs
|
||||
|
||||
# Enable L2 cache support for core 1.
|
||||
$_TARGETNAME1 arc has-l2cache true
|
||||
|
||||
|
||||
################################
|
||||
# ARC HS38 core 2
|
||||
################################
|
||||
|
||||
target create $_TARGETNAME2 arcv2 -chain-position $_TARGETNAME2
|
||||
$_TARGETNAME2 configure -coreid $_coreid
|
||||
$_TARGETNAME2 configure -dbgbase $_dbgbase
|
||||
$_TARGETNAME2 configure -event reset-assert "arc_common_reset $_TARGETNAME2"
|
||||
set _coreid [expr $_coreid + 1]
|
||||
set _dbgbase [expr 0x00000000 | ($_coreid << 13)]
|
||||
arc_hs_init_regs
|
||||
|
||||
# Enable L2 cache support for core 2.
|
||||
$_TARGETNAME2 arc has-l2cache true
|
||||
|
||||
|
||||
################################
|
||||
# ARC HS38 core 3
|
||||
################################
|
||||
|
||||
target create $_TARGETNAME3 arcv2 -chain-position $_TARGETNAME3
|
||||
$_TARGETNAME3 configure -coreid $_coreid
|
||||
$_TARGETNAME3 configure -dbgbase $_dbgbase
|
||||
$_TARGETNAME3 configure -event reset-assert "arc_common_reset $_TARGETNAME3"
|
||||
set _coreid [expr $_coreid + 1]
|
||||
set _dbgbase [expr 0x00000000 | ($_coreid << 13)]
|
||||
arc_hs_init_regs
|
||||
|
||||
# Enable L2 cache support for core 3.
|
||||
$_TARGETNAME3 arc has-l2cache true
|
||||
|
||||
################################
|
||||
# ARC HS38 core 4
|
||||
################################
|
||||
|
||||
target create $_TARGETNAME4 arcv2 -chain-position $_TARGETNAME4
|
||||
$_TARGETNAME4 configure -coreid $_coreid
|
||||
$_TARGETNAME4 configure -dbgbase $_dbgbase
|
||||
# Flush L2$.
|
||||
$_TARGETNAME4 configure -event reset-assert "arc_hs_reset $_TARGETNAME4"
|
||||
set _coreid [expr $_coreid + 1]
|
||||
set _dbgbase [expr 0x00000000 | ($_coreid << 13)]
|
||||
arc_hs_init_regs
|
||||
|
||||
# Enable L2 cache support for core 4.
|
||||
$_TARGETNAME4 arc has-l2cache true
|
||||
|
||||
|
||||
|
||||
# vi:ft=tcl
|
189
dts/arc/arc_hsdk.dtsi
Normal file
189
dts/arc/arc_hsdk.dtsi
Normal file
|
@ -0,0 +1,189 @@
|
|||
/*
|
||||
* Copyright (c) 2019, Synopsys, Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
#include <dt-bindings/i2c/i2c.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu@0 {
|
||||
device_type = "cpu";
|
||||
compatible = "snps,archs38";
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
cpu@1 {
|
||||
device_type = "cpu";
|
||||
compatible = "snps,archs38";
|
||||
reg = <1>;
|
||||
};
|
||||
|
||||
cpu@2 {
|
||||
device_type = "cpu";
|
||||
compatible = "snps,archs38";
|
||||
reg = <2>;
|
||||
};
|
||||
|
||||
cpu@3 {
|
||||
device_type = "cpu";
|
||||
compatible = "snps,archs38";
|
||||
reg = <3>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
intc: arcv2-intc {
|
||||
compatible = "snps,arcv2-intc";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
|
||||
idu_intc: idu-interrupt-controller {
|
||||
compatible = "snps,archs-idu-intc";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&intc>;
|
||||
};
|
||||
|
||||
soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "simple-bus";
|
||||
interrupt-parent = <&idu_intc>;
|
||||
ranges;
|
||||
|
||||
ddr0: memory@0 {
|
||||
device_type = "memory";
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x0 0x80000000>;
|
||||
};
|
||||
|
||||
uart0: uart@f0005000 {
|
||||
compatible = "ns16550";
|
||||
clock-frequency = <33333333>;
|
||||
reg = <0xf0005000 0x1000>;
|
||||
label = "UART_0";
|
||||
interrupts = <30 1>;
|
||||
};
|
||||
|
||||
uart1: uart@f0026000{
|
||||
compatible = "ns16550";
|
||||
clock-frequency = <33333333>;
|
||||
reg = <0xf0026000 0x1000>;
|
||||
label = "UART_1";
|
||||
interrupts = <46 1>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart2: uart@f0027000 {
|
||||
compatible = "ns16550";
|
||||
clock-frequency = <33333333>;
|
||||
reg = <0xf0027000 0x1000>;
|
||||
label = "UART_2";
|
||||
interrupts = <47 1>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart3: uart@f0028000 {
|
||||
compatible = "ns16550";
|
||||
clock-frequency = <33333333>;
|
||||
reg = <0xf0028000 0x1000>;
|
||||
label = "UART_3";
|
||||
interrupts = <48 1>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio0: gpio@f0003000 {
|
||||
compatible = "snps,designware-gpio";
|
||||
reg = <0xf0003000 0x1000>;
|
||||
bits = <32>;
|
||||
label = "GPIO_0";
|
||||
interrupt-parent = <&idu_intc>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c0: i2c@f0023000 {
|
||||
compatible = "snps,designware-i2c";
|
||||
clock-frequency = <I2C_BITRATE_STANDARD>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xf0023000 0x1000>;
|
||||
interrupts = <43 1>;
|
||||
label = "I2C_0";
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c1: i2c@f0024000 {
|
||||
compatible = "snps,designware-i2c";
|
||||
clock-frequency = <I2C_BITRATE_STANDARD>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xf0024000 0x1000>;
|
||||
interrupts = <44 1>;
|
||||
label = "I2C_1";
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@f0025000 {
|
||||
compatible = "snps,designware-i2c";
|
||||
clock-frequency = <I2C_BITRATE_STANDARD>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xf0025000 0x1000>;
|
||||
interrupts = <45 1>;
|
||||
label = "I2C_2";
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi0: spi@f0020000 {
|
||||
compatible = "snps,designware-spi";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xf0020000 0x1000>;
|
||||
interrupts = <40 1>;
|
||||
label = "SPI_0";
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi1: spi@f0021000 {
|
||||
compatible = "snps,designware-spi";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xf0021000 0x1000>;
|
||||
interrupts = <41 1>;
|
||||
label = "SPI_1";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi2: spi@f0022000 {
|
||||
compatible = "snps,designware-spi";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xf0022000 0x1000>;
|
||||
interrupts = <42 1>;
|
||||
label = "SPI_1";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
23
dts/bindings/interrupt-controller/snps,archs-idu-intc.yaml
Normal file
23
dts/bindings/interrupt-controller/snps,archs-idu-intc.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
#
|
||||
# Copyright (c) 2019, synopsys
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
title: ARC-HS Interrupt Distribution Unit
|
||||
|
||||
description: >
|
||||
This binding describes the 2nd level interrupt controller can be used in
|
||||
SMP configurations for dynamic IRQ routing, load balancing of
|
||||
common/external IRQs towards core intc
|
||||
|
||||
inherits:
|
||||
!include [interrupt-controller.yaml, base.yaml]
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
constraint: "snps,archs-idu-intc"
|
||||
|
||||
"#cells":
|
||||
- irq
|
||||
- priority
|
13
soc/arc/snps_arc_hsdk/CMakeLists.txt
Normal file
13
soc/arc/snps_arc_hsdk/CMakeLists.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
|
||||
|
||||
# -mcpu=hs38_linux includes -matomic -mcode-density -mdiv-rem
|
||||
# -mswap -mnorm -mll64 -mmpy-option=9 -mfpu=fpud_all
|
||||
zephyr_cc_option(-mcpu=${GCC_M_CPU})
|
||||
zephyr_cc_option(-mno-sdata)
|
||||
zephyr_cc_option_ifdef(CONFIG_FLOAT -mfpu=fpud_all)
|
||||
|
||||
zephyr_sources(
|
||||
soc.c
|
||||
)
|
63
soc/arc/snps_arc_hsdk/Kconfig.defconfig
Normal file
63
soc/arc/snps_arc_hsdk/Kconfig.defconfig
Normal file
|
@ -0,0 +1,63 @@
|
|||
#
|
||||
# Copyright (c) 2019 Synopsys, Inc. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
if SOC_ARC_HSDK
|
||||
|
||||
config SOC
|
||||
string
|
||||
default "snps_arc_hsdk"
|
||||
|
||||
config CPU_HS38_LINUX
|
||||
def_bool y
|
||||
|
||||
config NUM_IRQ_PRIO_LEVELS
|
||||
# This processor supports 2 priority levels:
|
||||
# 0 for Fast Interrupts (FIRQs) and 1 for Regular Interrupts (IRQs).
|
||||
default 2
|
||||
|
||||
config NUM_IRQS
|
||||
# must be > the highest interrupt number used
|
||||
default 88
|
||||
|
||||
config RGF_NUM_BANKS
|
||||
default 2
|
||||
|
||||
config SYS_CLOCK_HW_CYCLES_PER_SEC
|
||||
default 500000000
|
||||
|
||||
config ARC_FIRQ
|
||||
default y
|
||||
|
||||
config CODE_DENSITY
|
||||
default y
|
||||
|
||||
config ARCV2_TIMER_IRQ_PRIORITY
|
||||
default 1
|
||||
|
||||
config ARC_CONNECT
|
||||
default y
|
||||
|
||||
config MP_NUM_CPUS
|
||||
default 4
|
||||
|
||||
if SERIAL
|
||||
|
||||
config UART_NS16550
|
||||
default y
|
||||
|
||||
endif # SERIAL
|
||||
|
||||
if UART_CONSOLE
|
||||
|
||||
config UART_NS16550_PORT_0
|
||||
default y
|
||||
|
||||
config UART_NS16550_ACCESS_WORD_ONLY
|
||||
default y
|
||||
|
||||
endif # UART_CONSOLE
|
||||
|
||||
endif # ARC_HSDK
|
9
soc/arc/snps_arc_hsdk/Kconfig.soc
Normal file
9
soc/arc/snps_arc_hsdk/Kconfig.soc
Normal file
|
@ -0,0 +1,9 @@
|
|||
#
|
||||
# Copyright (c) 2019 Synopsys, Inc. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
config SOC_ARC_HSDK
|
||||
bool "Synopsys ARC HSDK SoC"
|
||||
select CPU_HAS_FPU
|
19
soc/arc/snps_arc_hsdk/dts_fixup.h
Normal file
19
soc/arc/snps_arc_hsdk/dts_fixup.h
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (c) 2019 Synopsys, Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/* SoC level DTS fixup file */
|
||||
|
||||
/*
|
||||
* UART configuration
|
||||
*/
|
||||
#define DT_UART_NS16550_PORT_0_BASE_ADDR DT_NS16550_F0005000_BASE_ADDRESS
|
||||
#define DT_UART_NS16550_PORT_0_IRQ DT_NS16550_F0005000_IRQ_0
|
||||
#define DT_UART_NS16550_PORT_0_CLK_FREQ DT_NS16550_F0005000_CLOCK_FREQUENCY
|
||||
#define DT_UART_NS16550_PORT_0_BAUD_RATE DT_NS16550_F0005000_CURRENT_SPEED
|
||||
#define DT_UART_NS16550_PORT_0_NAME DT_NS16550_F0005000_LABEL
|
||||
#define DT_UART_NS16550_PORT_0_IRQ_PRI DT_NS16550_F0005000_IRQ_0_PRIORITY
|
||||
|
||||
/* End of SoC Level DTS fixup file */
|
23
soc/arc/snps_arc_hsdk/linker.ld
Normal file
23
soc/arc/snps_arc_hsdk/linker.ld
Normal file
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright (c) 2019 Synopsys, Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Linker script for the HS Development Kit
|
||||
*/
|
||||
|
||||
#include <generated_dts_board.h>
|
||||
#include <autoconf.h>
|
||||
|
||||
/*
|
||||
* SRAM base address and size
|
||||
*/
|
||||
#if defined(CONFIG_SRAM_BASE_ADDRESS) && (CONFIG_SRAM_SIZE > 0)
|
||||
#define SRAM_START CONFIG_SRAM_BASE_ADDRESS
|
||||
#define SRAM_SIZE CONFIG_SRAM_SIZE
|
||||
#endif
|
||||
|
||||
|
||||
#include <arch/arc/v2/linker.ld>
|
41
soc/arc/snps_arc_hsdk/soc.c
Normal file
41
soc/arc/snps_arc_hsdk/soc.c
Normal file
|
@ -0,0 +1,41 @@
|
|||
|
||||
/*
|
||||
* Copyright (c) 2019 Synopsys, Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* This module provides routines to initialize and support soc-level hardware
|
||||
* for the HS Development Kit
|
||||
*/
|
||||
#include <device.h>
|
||||
#include <init.h>
|
||||
#include "soc.h"
|
||||
|
||||
static int arc_hsdk_init(struct device *dev)
|
||||
{
|
||||
ARG_UNUSED(dev);
|
||||
|
||||
u32_t core;
|
||||
u32_t i;
|
||||
|
||||
/* allocate all IDU interrupts to master core */
|
||||
core = z_arc_v2_core_id();
|
||||
|
||||
z_arc_connect_idu_disable();
|
||||
|
||||
for (i = 0; i < (CONFIG_NUM_IRQS - ARC_CONNECT_IDU_IRQ_START); i++) {
|
||||
z_arc_connect_idu_set_mode(i, ARC_CONNECT_INTRPT_TRIGGER_LEVEL,
|
||||
ARC_CONNECT_DISTRI_MODE_ROUND_ROBIN);
|
||||
z_arc_connect_idu_set_dest(i, 1 << core);
|
||||
z_arc_connect_idu_set_mask(i, 0x0);
|
||||
}
|
||||
|
||||
z_arc_connect_idu_enable();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
SYS_INIT(arc_hsdk_init, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
|
43
soc/arc/snps_arc_hsdk/soc.h
Normal file
43
soc/arc/snps_arc_hsdk/soc.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (c) 2019 Synopsys, Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Board configuration macros for HS Development Kit
|
||||
*
|
||||
* This header file is used to specify and describe board-level
|
||||
* aspects for the target.
|
||||
*/
|
||||
|
||||
#ifndef _SOC_H_
|
||||
#define _SOC_H_
|
||||
|
||||
#include <misc/util.h>
|
||||
|
||||
|
||||
/* ARC HS Core IRQs */
|
||||
#define IRQ_TIMER0 16
|
||||
#define IRQ_TIMER1 17
|
||||
#define IRQ_ICI 19
|
||||
|
||||
#define BASE_ADDR_SYSCONFIG 0xF000A000
|
||||
|
||||
#ifndef _ASMLANGUAGE
|
||||
|
||||
|
||||
#include <misc/util.h>
|
||||
#include <random/rand32.h>
|
||||
|
||||
/*
|
||||
* UARTs: UART0 & UART1 & UART2
|
||||
*/
|
||||
#define DT_UART_NS16550_PORT_0_IRQ_FLAGS 0 /* Default */
|
||||
#define DT_UART_NS16550_PORT_1_IRQ_FLAGS 0 /* Default */
|
||||
#define DT_UART_NS16550_PORT_2_IRQ_FLAGS 0 /* Default */
|
||||
|
||||
|
||||
#endif /* !_ASMLANGUAGE */
|
||||
|
||||
#endif /* _SOC_H_ */
|
Loading…
Add table
Add a link
Reference in a new issue