Skip to content

Commit 59008a8

Browse files
dnltzkartben
authored andcommitted
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>
1 parent 2120b82 commit 59008a8

File tree

7 files changed

+161
-0
lines changed

7 files changed

+161
-0
lines changed

boards/aesc/elemrv/Kconfig.elemrv

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2025 Aesc Silicon
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_ELEMRV
5+
select SOC_ELEMRV_N

boards/aesc/elemrv/board.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: elemrv
3+
full_name: ElemRV-N
4+
vendor: aesc
5+
socs:
6+
- name: elemrv_n

boards/aesc/elemrv/doc/index.rst

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
.. zephyr:board:: elemrv
2+
3+
Overview
4+
********
5+
6+
ElemRV-N is an end-to-end open-source RISC-V microcontroller designed using SpinalHDL.
7+
8+
Version 0.2 of ElemRV-N was successfully fabricated using `IHP's Open PDK`_, a 130nm open semiconductor process, with support from `FMD-QNC`_.
9+
10+
For more details, refer to the official `GitHub Project`_.
11+
12+
.. note::
13+
The currently supported silicon version is ElemRV-N 0.2.
14+
15+
Supported Features
16+
******************
17+
18+
.. zephyr:board-supported-hw::
19+
20+
System Clock
21+
============
22+
23+
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.
24+
25+
CPU
26+
===
27+
28+
ElemRV-N integrates a VexRiscv RISC-V core featuring a 5-stage pipeline and the following ISA extensions:
29+
30+
* M (Integer Multiply/Divide)
31+
* C (Compressed Instructions)
32+
33+
It also includes the following general-purpose ``Z`` extensions:
34+
35+
* Zicntr – Base Counter and Timer extensions
36+
* Zicsr – Control and Status Register operations
37+
* Zifencei – Instruction-fetch fence
38+
39+
The complete ISA string for this CPU is: ``RV32IMC_Zicntr_Zicsr_Zifencei``
40+
41+
Hart-Level Interrupt Controller (HLIC)
42+
======================================
43+
44+
Each CPU core is equipped with a Hart-Level Interrupt Controller, configurable through Control and Status Registers (CSRs).
45+
46+
Machine Timer
47+
=============
48+
49+
A RISC-V compliant machine timer is enabled by default.
50+
51+
Serial
52+
======
53+
54+
The UART (Universal Asynchronous Receiver-Transmitter) interface is a configurable serial communication peripheral used for transmitting and receiving data.
55+
56+
By default, ``uart0`` operates at a baud rate of ``115200``, which can be adjusted via the elemrv device tree.
57+
58+
To evaluate the UART interface, build and run the following sample:
59+
60+
.. zephyr-app-commands::
61+
:board: elemrv/elemrv_n
62+
:zephyr-app: samples/hello_world
63+
:goals: build
64+
65+
.. _GitHub Project:
66+
https://github.com/aesc-silicon/elemrv
67+
68+
.. _IHP's Open PDK:
69+
https://github.com/IHP-GmbH/IHP-Open-PDK
70+
71+
.. _FMD-QNC:
72+
https://www.elektronikforschung.de/projekte/fmd-qnc
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright (C) 2025 Aesc Silicon
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
9+
#include <aesc/elemrv-n.dtsi>
10+
11+
/ {
12+
model = "ElemRV-N";
13+
compatible = "aesc,elemrv-n";
14+
15+
chosen {
16+
zephyr,console = &uart0;
17+
zephyr,shell-uart = &uart0;
18+
zephyr,sram = &hyperbus;
19+
zephyr,flash = &flash;
20+
};
21+
22+
soc {
23+
ocram: memory@80000000 {
24+
device_type = "memory";
25+
compatible = "mmio-sram";
26+
reg = <0x80000000 DT_SIZE_K(1)>;
27+
};
28+
29+
hyperbus: memory@90000000 {
30+
device_type = "memory";
31+
compatible = "mmio-sram";
32+
reg = <0x90000000 DT_SIZE_K(32)>;
33+
};
34+
35+
flash: flash@a0010000 {
36+
compatible = "soc-nv-flash";
37+
reg = <0xa0010000 DT_SIZE_K(32)>;
38+
};
39+
};
40+
};
41+
42+
&uart0 {
43+
clock-frequency = <DT_FREQ_M(20)>;
44+
current-speed = <115200>;
45+
status = "okay";
46+
};
47+
48+
&cpu0 {
49+
clock-frequency = <DT_FREQ_M(20)>;
50+
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
identifier: elemrv/elemrv_n
2+
name: ElemRV-N
3+
type: mcu
4+
arch: riscv
5+
toolchain:
6+
- cross-compile
7+
- zephyr
8+
ram: 32
9+
flash: 32
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright (c) 2025 Aesc Silicon
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# Serial Driver
5+
CONFIG_SERIAL=y
6+
7+
# Enable Console
8+
CONFIG_CONSOLE=y
9+
CONFIG_UART_CONSOLE=y

boards/aesc/index.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.. _boards-aesc:
2+
3+
Aesc Silicon
4+
############
5+
6+
.. toctree::
7+
:maxdepth: 1
8+
:glob:
9+
10+
**/*

0 commit comments

Comments
 (0)