Skip to content

Commit 91970ad

Browse files
yashinashif
authored andcommitted
boards: Add Space Cubics OBC Module 1
This is a single board computer for spacecraft OBC (On-board Computer). It has a Xilinx FPGA with Cortex ARM M3 core with peripherals, UART, CAN and others. Signed-off-by: Yasushi SHOJI <[email protected]>
1 parent 2e3aeaa commit 91970ad

File tree

15 files changed

+321
-0
lines changed

15 files changed

+321
-0
lines changed

CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@
135135
/boards/arm/sam4s_xplained/ @fallrisk
136136
/boards/arm/sam_e70_xplained/ @nandojve
137137
/boards/arm/sam_v71_xult/ @nandojve
138+
/boards/arm/scobc_module1/ @yashi
138139
/boards/arm/v2m_beetle/ @fvincenzo
139140
/boards/arm/olimexino_stm32/ @ydamigos
140141
/boards/arm/sensortile_box/ @avisconti
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Space Cubics OBC module 1 configuration
2+
3+
# Copyright (c) 2021 Space Cubics, LLC. <[email protected]>
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
config BOARD_SCOBC_MODULE1
7+
bool "Space Cubics OBC Module 1"
8+
depends on SOC_SERIES_ARM_DESIGNSTART
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Space Cubics OBC module 1
2+
3+
# Copyright (c) 2021 Space Cubics <[email protected]>
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
if BOARD_SCOBC_MODULE1
7+
8+
config BOARD
9+
default "scobc_module1"
10+
11+
config CPU_CORTEX_M_HAS_SYSTICK
12+
default y
13+
14+
config CPU_HAS_ARM_MPU
15+
default y
16+
17+
config NUM_IRQS
18+
default 7
19+
20+
config UART_XLNX_UARTLITE
21+
depends on SERIAL
22+
default y
23+
24+
endif # BOARD_SCOBC_SPEQ
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
if(CONFIG_BOARD_SCOBC_MODULE1)
4+
board_runner_args(openocd "--use-elf" "--config=${BOARD_DIR}/support/openocd-ftdi.cfg")
5+
6+
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
7+
endif()
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
.. _scobc_module1:
2+
3+
Space Cubics OBC module 1
4+
#########################
5+
6+
Overview
7+
********
8+
9+
`Space Cubics`_ OBC module 1 is a single board computer for spacecraft,
10+
especially for 3U CubeSats. The board is based on Xilinx Artix-7 FPGA and
11+
implements ARM Cortex M3 as the main CPU.
12+
13+
.. figure:: ./scobc.jpg
14+
:width: 442px
15+
:align: center
16+
:alt: Space Cubics OBC module 1
17+
18+
Space Cubics OBC module 1
19+
20+
It is designed to survive in the severe space environment, extreme temperature,
21+
vacuum, and space radiation.
22+
23+
As the name suggests, the board form factor is a module and requires a base I/O
24+
board connected at CON1, a board-to-board connector. This modularity allows
25+
CubeSat designers the freedom to connect and expand the capability required for
26+
their mission.
27+
28+
Hardware
29+
********
30+
31+
Supported Features
32+
==================
33+
34+
The Space Cubics OBC module 1 provides the following hardware features:
35+
36+
+-----------+------------+------------------------------------+
37+
| Interface | Controller | Driver/Component |
38+
+===========+============+====================================+
39+
| NVIC | on-chip | nested vector interrupt controller |
40+
+-----------+------------+------------------------------------+
41+
| SYSTICK | on-chip | systick |
42+
+-----------+------------+------------------------------------+
43+
| UART | on-chip | serial port-polling; |
44+
| | | serial port-interrupt |
45+
+-----------+------------+------------------------------------+
46+
47+
The default configuration for the board can be found in the defconfig file:
48+
:file:`boards/arm/scobc_module1/scobc_module1_defconfig`.
49+
50+
Other hardware features are not currently supported by the port.
51+
52+
System Clock
53+
============
54+
55+
The board has two 24 MHz external oscillators connected to the FPGA for
56+
redundancy. The FPGA will select an active oscillator as CPU system clock. The
57+
selected clock signal is then used by the CMT in the FPGA, and drives the CPU at
58+
48 MHz by default.
59+
60+
Serial Port
61+
===========
62+
63+
The default configuration contains one SC UART IP, which is register compatible
64+
with Xilinx UART Lite for basic TX and RX. This UART is configured as the
65+
default console and is accessible through the CON1 pin 43 and 45 for Rx and Tx,
66+
respectively.
67+
68+
Programming and Debugging
69+
*************************
70+
71+
Flashing
72+
========
73+
74+
Here is an example for building and flashing the \`hello\_world\`
75+
application for the board:
76+
77+
Here is an example for building and flashing the :ref:`hello_world` application
78+
for the default design:
79+
80+
.. zephyr-app-commands::
81+
:zephyr-app: samples/hello_world
82+
:board: scobc_module1
83+
:goals: flash
84+
85+
After flashing, you should see message similar to the following in the terminal:
86+
87+
.. code-block:: console
88+
89+
*** Booting Zephyr OS build zephyr-v2.7.99 ***
90+
Hello World! scobc_module1
91+
92+
Note, however, that the application was not persisted in flash memory by the
93+
above steps. It was merely written to internal RAM in the FPGA.
94+
95+
Debugging
96+
=========
97+
98+
Here is an example for the :ref:`hello_world` application.
99+
100+
.. zephyr-app-commands::
101+
:zephyr-app: samples/hello_world
102+
:board: scobc_module1
103+
:goals: debug
104+
105+
Step through the application in your debugger, and you should see a message
106+
similar to the following in the terminal:
107+
108+
.. code-block:: console
109+
110+
*** Booting Zephyr OS build zephyr-v2.7.99 ***
111+
Hello World! scobc_module1
112+
113+
References
114+
**********
115+
116+
.. target-notes::
117+
118+
.. _Space Cubics:
119+
https://spacecubics.com/
595 KB
Loading
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
description: Space Cubics HRMEM (High-reliability Memory)
4+
5+
compatible: "sc,hrmem"
6+
7+
include: base.yaml
8+
9+
properties:
10+
reg:
11+
required: true
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright (c) 2021 Space Cubics, LLC. <[email protected]>
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
#include <arm/armv7-m.dtsi>
9+
#include <mem.h>
10+
11+
/ {
12+
model = "Space Cubics OBC module 1";
13+
14+
chosen {
15+
zephyr,console = &uartlite0;
16+
zephyr,shell-uart = &uartlite0;
17+
zephyr,sram = &hrmem;
18+
};
19+
20+
cpus {
21+
#address-cells = <1>;
22+
#size-cells = <0>;
23+
24+
cpu0: cpu@0 {
25+
device_type = "cpu";
26+
compatible = "arm,cortex-m3";
27+
reg = <0>;
28+
#address-cells = <1>;
29+
#size-cells = <1>;
30+
31+
mpu: mpu@e000ed90 {
32+
compatible = "arm,armv7m-mpu";
33+
reg = <0xe000ed90 0x40>;
34+
arm,num-mpu-regions = <8>;
35+
};
36+
};
37+
};
38+
39+
soc {
40+
hrmem: memory@0 {
41+
compatible = "sc,hrmem";
42+
reg = <0x00000000 DT_SIZE_K(128)>;
43+
};
44+
45+
uartlite0: uartlite@50010000 {
46+
compatible = "xlnx,xps-uartlite-1.00.a";
47+
interrupts = <0 0>;
48+
reg = <0x50010000 0x10000>;
49+
label = "UART_0";
50+
};
51+
};
52+
};
53+
54+
&nvic {
55+
arm,num-irq-priority-bits = <3>;
56+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
identifier: scobc_module1
2+
name: Space Cubics OBC module 1
3+
type: mcu
4+
arch: arm
5+
toolchain:
6+
- zephyr
7+
supported:
8+
- uart
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
CONFIG_CORTEX_M_SYSTICK=y
4+
CONFIG_SOC_SERIES_ARM_DESIGNSTART=y
5+
CONFIG_SOC_ARM_DESIGNSTART_FPGA_CORTEX_M3=y
6+
CONFIG_BOARD_SCOBC_MODULE1=y
7+
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=48000000
8+
CONFIG_ARM_MPU=n
9+
10+
CONFIG_SERIAL=y
11+
CONFIG_UART_INTERRUPT_DRIVEN=y
12+
CONFIG_CONSOLE=y
13+
CONFIG_UART_CONSOLE=y
14+
15+
CONFIG_XIP=n
16+
CONFIG_FLASH_SIZE=0
17+
CONFIG_FLASH_BASE_ADDRESS=0x0
18+
CONFIG_BOOTLOADER_SRAM_SIZE=0

0 commit comments

Comments
 (0)