boards: aesc: Add ElemRV-N
ElemRV-N is an end-to-end open-source microcontroller. This patch adds basic support for the platform with any interfaces. They will be added later since drivers are missing completly. Signed-off-by: Daniel Schultz <dnltz@aesc-silicon.de>
This commit is contained in:
parent
2120b82ec9
commit
59008a8f96
7 changed files with 161 additions and 0 deletions
5
boards/aesc/elemrv/Kconfig.elemrv
Normal file
5
boards/aesc/elemrv/Kconfig.elemrv
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Copyright (c) 2025 Aesc Silicon
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_ELEMRV
|
||||
select SOC_ELEMRV_N
|
6
boards/aesc/elemrv/board.yml
Normal file
6
boards/aesc/elemrv/board.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
board:
|
||||
name: elemrv
|
||||
full_name: ElemRV-N
|
||||
vendor: aesc
|
||||
socs:
|
||||
- name: elemrv_n
|
72
boards/aesc/elemrv/doc/index.rst
Normal file
72
boards/aesc/elemrv/doc/index.rst
Normal file
|
@ -0,0 +1,72 @@
|
|||
.. zephyr:board:: elemrv
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
ElemRV-N is an end-to-end open-source RISC-V microcontroller designed using SpinalHDL.
|
||||
|
||||
Version 0.2 of ElemRV-N was successfully fabricated using `IHP's Open PDK`_, a 130nm open semiconductor process, with support from `FMD-QNC`_.
|
||||
|
||||
For more details, refer to the official `GitHub Project`_.
|
||||
|
||||
.. note::
|
||||
The currently supported silicon version is ElemRV-N 0.2.
|
||||
|
||||
Supported Features
|
||||
******************
|
||||
|
||||
.. zephyr:board-supported-hw::
|
||||
|
||||
System Clock
|
||||
============
|
||||
|
||||
The system clock for the RISC-V core is set to 20 MHz. This value is specified in the ``cpu0`` devicetree node using the ``clock-frequency`` property.
|
||||
|
||||
CPU
|
||||
===
|
||||
|
||||
ElemRV-N integrates a VexRiscv RISC-V core featuring a 5-stage pipeline and the following ISA extensions:
|
||||
|
||||
* M (Integer Multiply/Divide)
|
||||
* C (Compressed Instructions)
|
||||
|
||||
It also includes the following general-purpose ``Z`` extensions:
|
||||
|
||||
* Zicntr – Base Counter and Timer extensions
|
||||
* Zicsr – Control and Status Register operations
|
||||
* Zifencei – Instruction-fetch fence
|
||||
|
||||
The complete ISA string for this CPU is: ``RV32IMC_Zicntr_Zicsr_Zifencei``
|
||||
|
||||
Hart-Level Interrupt Controller (HLIC)
|
||||
======================================
|
||||
|
||||
Each CPU core is equipped with a Hart-Level Interrupt Controller, configurable through Control and Status Registers (CSRs).
|
||||
|
||||
Machine Timer
|
||||
=============
|
||||
|
||||
A RISC-V compliant machine timer is enabled by default.
|
||||
|
||||
Serial
|
||||
======
|
||||
|
||||
The UART (Universal Asynchronous Receiver-Transmitter) interface is a configurable serial communication peripheral used for transmitting and receiving data.
|
||||
|
||||
By default, ``uart0`` operates at a baud rate of ``115200``, which can be adjusted via the elemrv device tree.
|
||||
|
||||
To evaluate the UART interface, build and run the following sample:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:board: elemrv/elemrv_n
|
||||
:zephyr-app: samples/hello_world
|
||||
:goals: build
|
||||
|
||||
.. _GitHub Project:
|
||||
https://github.com/aesc-silicon/elemrv
|
||||
|
||||
.. _IHP's Open PDK:
|
||||
https://github.com/IHP-GmbH/IHP-Open-PDK
|
||||
|
||||
.. _FMD-QNC:
|
||||
https://www.elektronikforschung.de/projekte/fmd-qnc
|
50
boards/aesc/elemrv/elemrv_elemrv_n.dts
Normal file
50
boards/aesc/elemrv/elemrv_elemrv_n.dts
Normal file
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright (C) 2025 Aesc Silicon
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <aesc/elemrv-n.dtsi>
|
||||
|
||||
/ {
|
||||
model = "ElemRV-N";
|
||||
compatible = "aesc,elemrv-n";
|
||||
|
||||
chosen {
|
||||
zephyr,console = &uart0;
|
||||
zephyr,shell-uart = &uart0;
|
||||
zephyr,sram = &hyperbus;
|
||||
zephyr,flash = &flash;
|
||||
};
|
||||
|
||||
soc {
|
||||
ocram: memory@80000000 {
|
||||
device_type = "memory";
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x80000000 DT_SIZE_K(1)>;
|
||||
};
|
||||
|
||||
hyperbus: memory@90000000 {
|
||||
device_type = "memory";
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x90000000 DT_SIZE_K(32)>;
|
||||
};
|
||||
|
||||
flash: flash@a0010000 {
|
||||
compatible = "soc-nv-flash";
|
||||
reg = <0xa0010000 DT_SIZE_K(32)>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
clock-frequency = <DT_FREQ_M(20)>;
|
||||
current-speed = <115200>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
clock-frequency = <DT_FREQ_M(20)>;
|
||||
};
|
9
boards/aesc/elemrv/elemrv_elemrv_n.yaml
Normal file
9
boards/aesc/elemrv/elemrv_elemrv_n.yaml
Normal file
|
@ -0,0 +1,9 @@
|
|||
identifier: elemrv/elemrv_n
|
||||
name: ElemRV-N
|
||||
type: mcu
|
||||
arch: riscv
|
||||
toolchain:
|
||||
- cross-compile
|
||||
- zephyr
|
||||
ram: 32
|
||||
flash: 32
|
9
boards/aesc/elemrv/elemrv_elemrv_n_defconfig
Normal file
9
boards/aesc/elemrv/elemrv_elemrv_n_defconfig
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Copyright (c) 2025 Aesc Silicon
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# Serial Driver
|
||||
CONFIG_SERIAL=y
|
||||
|
||||
# Enable Console
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_UART_CONSOLE=y
|
10
boards/aesc/index.rst
Normal file
10
boards/aesc/index.rst
Normal file
|
@ -0,0 +1,10 @@
|
|||
.. _boards-aesc:
|
||||
|
||||
Aesc Silicon
|
||||
############
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:glob:
|
||||
|
||||
**/*
|
Loading…
Add table
Add a link
Reference in a new issue