Skip to content

Commit db1f520

Browse files
nascstingleby
authored andcommitted
platform: add Radxa ROCK 5B platform support
Signed-off-by: Nascs <[email protected]>
1 parent f7b8799 commit db1f520

File tree

8 files changed

+339
-1
lines changed

8 files changed

+339
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ ARM
4747
* [ADLINK IPi-SMARC ARM](../master/docs/adlink_ipi_arm.md)
4848
* [Radxa ROCK 3C](../master/docs/radxa_rock_3c.md)
4949
* [Radxa ROCK 5A](../master/docs/radxa_rock_5a.md)
50+
* [Radxa ROCK 5B](../master/docs/radxa_rock_5b.md)
5051
* [Rock Pi 4](../master/docs/rockpi4.md)
5152

5253
MIPS

api/mraa/types.h

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ typedef enum {
7171
MRAA_SIEMENS_IOT2050 = 26, /**< Siemens IOT2050 board */
7272
MRAA_RADXA_ROCK_3C = 27, /**< Radxa ROCK 3 Model C */
7373
MRAA_VISIONFIVE = 28, /**< StarFive VisionFive board */
74-
MRAA_RADXA_ROCK_5A = 29, /**< Radxa ROCK 5 Model A */
74+
MRAA_RADXA_ROCK_5A = 29, /**< Radxa ROCK 5 Model A */
75+
MRAA_RADXA_ROCK_5B = 30, /**< Radxa ROCK 5 Model B */
7576

7677
// USB platform extenders start at 256
7778
MRAA_FTDI_FT4222 = 256, /**< FTDI FT4222 USB to i2c bridge */
@@ -213,6 +214,40 @@ typedef enum {
213214
MRAA_RADXA_ROCK_5A_PIN40 = 40
214215
} mraa_radxa_rock_5a_wiring_t;
215216

217+
/**
218+
* Radxa ROCK 5 Model B GPIO numbering enum
219+
*/
220+
typedef enum {
221+
MRAA_RADXA_ROCK_5B_PIN3 = 3,
222+
MRAA_RADXA_ROCK_5B_PIN5 = 5,
223+
MRAA_RADXA_ROCK_5B_PIN7 = 7,
224+
MRAA_RADXA_ROCK_5B_PIN8 = 8,
225+
MRAA_RADXA_ROCK_5B_PIN10 = 10,
226+
MRAA_RADXA_ROCK_5B_PIN11 = 11,
227+
MRAA_RADXA_ROCK_5B_PIN12 = 12,
228+
MRAA_RADXA_ROCK_5B_PIN13 = 13,
229+
MRAA_RADXA_ROCK_5B_PIN15 = 15,
230+
MRAA_RADXA_ROCK_5B_PIN16 = 16,
231+
MRAA_RADXA_ROCK_5B_PIN18 = 18,
232+
MRAA_RADXA_ROCK_5B_PIN19 = 19,
233+
MRAA_RADXA_ROCK_5B_PIN21 = 21,
234+
MRAA_RADXA_ROCK_5B_PIN22 = 22,
235+
MRAA_RADXA_ROCK_5B_PIN23 = 23,
236+
MRAA_RADXA_ROCK_5B_PIN24 = 24,
237+
MRAA_RADXA_ROCK_5B_PIN26 = 26,
238+
MRAA_RADXA_ROCK_5B_PIN27 = 27,
239+
MRAA_RADXA_ROCK_5B_PIN28 = 28,
240+
MRAA_RADXA_ROCK_5B_PIN29 = 29,
241+
MRAA_RADXA_ROCK_5B_PIN31 = 31,
242+
MRAA_RADXA_ROCK_5B_PIN32 = 32,
243+
MRAA_RADXA_ROCK_5B_PIN33 = 33,
244+
MRAA_RADXA_ROCK_5B_PIN35 = 35,
245+
MRAA_RADXA_ROCK_5B_PIN36 = 36,
246+
MRAA_RADXA_ROCK_5B_PIN37 = 37,
247+
MRAA_RADXA_ROCK_5B_PIN38 = 38,
248+
MRAA_RADXA_ROCK_5B_PIN40 = 40
249+
} mraa_radxa_rock_5b_wiring_t;
250+
216251
/**
217252
* Radxa ROCK 3 Model C GPIO numbering enum
218253
*/

api/mraa/types.hpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ typedef enum {
6666
RADXA_ROCK_3C = 27, /**< Radxa ROCK 3 Model C */
6767
VISIONFIVE = 28, /**< StarFive VisionFive board */
6868
RADXA_ROCK_5A = 29, /**< Radxa ROCK 5 Model A */
69+
RADXA_ROCK_5B = 30, /**< Radxa ROCK 5 Model B */
6970

7071
FTDI_FT4222 = 256, /**< FTDI FT4222 USB to i2c bridge */
7172

@@ -204,6 +205,40 @@ typedef enum {
204205
RADXA_ROCK_5A_PIN40 = 40
205206
} RadxaRock5AWiring;
206207

208+
/**
209+
* Radxa ROCK 5 Model B GPIO numbering enum
210+
*/
211+
typedef enum {
212+
RADXA_ROCK_5B_PIN3 = 3,
213+
RADXA_ROCK_5B_PIN5 = 5,
214+
RADXA_ROCK_5B_PIN7 = 7,
215+
RADXA_ROCK_5B_PIN8 = 8,
216+
RADXA_ROCK_5B_PIN10 = 10,
217+
RADXA_ROCK_5B_PIN11 = 11,
218+
RADXA_ROCK_5B_PIN12 = 12,
219+
RADXA_ROCK_5B_PIN13 = 13,
220+
RADXA_ROCK_5B_PIN15 = 15,
221+
RADXA_ROCK_5B_PIN16 = 16,
222+
RADXA_ROCK_5B_PIN18 = 18,
223+
RADXA_ROCK_5B_PIN19 = 19,
224+
RADXA_ROCK_5B_PIN21 = 21,
225+
RADXA_ROCK_5B_PIN22 = 22,
226+
RADXA_ROCK_5B_PIN23 = 23,
227+
RADXA_ROCK_5B_PIN24 = 24,
228+
RADXA_ROCK_5B_PIN26 = 26,
229+
RADXA_ROCK_5B_PIN27 = 27,
230+
RADXA_ROCK_5B_PIN28 = 28,
231+
RADXA_ROCK_5B_PIN29 = 29,
232+
RADXA_ROCK_5B_PIN31 = 31,
233+
RADXA_ROCK_5B_PIN32 = 32,
234+
RADXA_ROCK_5B_PIN33 = 33,
235+
RADXA_ROCK_5B_PIN35 = 35,
236+
RADXA_ROCK_5B_PIN36 = 36,
237+
RADXA_ROCK_5B_PIN37 = 37,
238+
RADXA_ROCK_5B_PIN38 = 38,
239+
RADXA_ROCK_5B_PIN40 = 40
240+
} RadxaRock5BWiring;
241+
207242
/**
208243
* Radxa ROCK 3 Model C GPIO numbering enum
209244
*/

docs/radxa_rock_5b.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
Radxa ROCK 5 Model B {#_Radxa}
2+
====================
3+
4+
Radxa ROCK 5 Model B is a Rockchip RK3588 based SBC(Single Board Computer) by Radxa. It can run Android or Linux. Radxa ROCK 5 Model B features a four core ARM processor, 64bit dual channel 5500Mb/s LPDDR5, HDMI up to 8K60fps, MIPI DSI, MIPI CSI, 3.5mm combo audio jack, Wi-Fi 6, Bluetooth 5.0, USB, GbE LAN, and 40-pin color expansion header. Radxa ROCK 5 Model B is powered by the USB Type-C port, and supports 5V input only. The recommended power adapter is 5V/3A without SSD, or 5V/5A with SSD.
5+
6+
Interface notes
7+
---------------
8+
9+
- UART2 is enabled as the default console.
10+
- All UART ports support baud up to 1500000.
11+
12+
Pin Mapping
13+
-----------
14+
15+
Radxa ROCK 5 Model B has a 40-pin expansion header. Each pin is distinguished by the color.
16+
17+
| Function5| Function4| Function3| Function2| Function1| PIN | PIN | Function1| Function2| Function3| Function4|
18+
|-----------|-------------|-------------|-------------|-----------|:------|------:|----------|-------------|------------|------------|
19+
| | | | | 3V3| 1 | 2 | +5.0V| | | |
20+
| | | I2C7_SDA_M3| PWM15_IR_M1| GPIO4_B3| 3 | 4 | +5.0V| | | |
21+
| | | I2C7_SCL_M3| PWM14_M1| GPIO4_B2| 5 | 6 | GND| | | |
22+
|SPI1_CS1_M1| I2C8_SDA_M4|UART7_CTSN_M1| PWM15_IR_M0| GPIO3_C3| 7 | 8 | GPIO0_B5| UART2_TX_M0| I2C1_SCL_M0| |
23+
| | | | | GND| 9 | 10 | GPIO0_B6| UART2_RX_M0| I2C1_SDA_M0| |
24+
| | | SPI1_CLK_M1| UART7_RX_M1| GPIO3_C1| 11 | 12 | GPIO3_B5| PWM12_M0| UART3_TX_M1| |
25+
| | | SPI1_MOSI_M1| I2C3_SCL_M1| GPIO3_B7| 13 | 14 | GND| | | |
26+
| | UART7_TX_M1| SPI1_MISO_M1| I2C3_SDA_M1| GPIO3_C0| 15 | 16 | GPIO3_A4| UART4_RX_M1| | |
27+
| | | | | +3.3V| 17 | 18 | GPIO4_C4| UART4_TX_M1| PWM5_M2| |
28+
| | | UART4_RX_M2| SPI0_MOSI_M2| GPIO1_B2| 19 | 20 | GND| | | |
29+
| | | PWM12_M1| SPI0_MISO_M2| GPIO1_B1| 21 | 22 |SARADC_IN4| | | |
30+
| | | UART4_TX_M2| SPI0_CLK_M2| GPIO1_B3| 23 | 24 | GPIO1_B4| UART7_RX_M2| SPI0_CS0_M2| UART9_RX_M1|
31+
| | | | | GND| 25 | 26 | GPIO1_B5| UART7_TX_M2| SPI0_CS1_M2| |
32+
| | SPI3_CLK_M0| I2C0_SDA_M1| PWM7_IR_M3| GPIO4_C6| 27 | 28 | GPIO4_C5| |SPI3_MOSI_M0| |
33+
| | | | PWM15_IR_M3| GPIO1_D7| 29 | 30 | GND| | | |
34+
| | | | PWM13_M2| GPIO1_B7| 31 | 32 | GPIO3_C2| PWM14_M0| I2C8_SCL_M4| |
35+
| | | | PWM8_M0| GPIO3_A7| 33 | 34 | GND| | | |
36+
| | | UART3_RX_M1| PWM13_M0| GPIO3_B6| 35 | 36 | GPIO3_B1| PWM2_M1| UART2_TX_M2| |
37+
| | | | | NC| 37 | 38 | GPIO3_B2| PWM3_IR_M1| UART2_RX_M2| |
38+
| | | | | GND| 39 | 40 | GPIO3_B3| | | |
39+
40+
Supports
41+
--------
42+
43+
You can find additional product support in the following channels:
44+
45+
- [Product Info](https://docs.radxa.com/en/rock5/rock5b)
46+
- [Forums](https://forum.radxa.com/c/rock5)
47+
- [Github](https://github.com/radxa)

include/arm/radxa_rock_5b.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Author: Nascs <[email protected]>
3+
* Copyright (c) Radxa Limited.
4+
*
5+
* SPDX-License-Identifier: MIT
6+
*/
7+
8+
#pragma once
9+
10+
#ifdef __cplusplus
11+
extern "C" {
12+
#endif
13+
14+
#include "mraa_internal.h"
15+
16+
#define MRAA_RADXA_ROCK_5B_GPIO_COUNT 26
17+
#define MRAA_RADXA_ROCK_5B_I2C_COUNT 4
18+
#define MRAA_RADXA_ROCK_5B_SPI_COUNT 2
19+
#define MRAA_RADXA_ROCK_5B_UART_COUNT 4
20+
#define MRAA_RADXA_ROCK_5B_PWM_COUNT 10
21+
#define MRAA_RADXA_ROCK_5B_AIO_COUNT 1
22+
#define MRAA_RADXA_ROCK_5B_PIN_COUNT 40
23+
#define PLATFORM_NAME_RADXA_ROCK_5B "Radxa ROCK 5B"
24+
25+
mraa_board_t *
26+
mraa_radxa_rock_5b();
27+
28+
#ifdef __cplusplus
29+
}
30+
#endif

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ set (mraa_LIB_ARM_SRCS_NOAUTO
109109
${PROJECT_SOURCE_DIR}/src/arm/de_nano_soc.c
110110
${PROJECT_SOURCE_DIR}/src/arm/radxa_rock_3c.c
111111
${PROJECT_SOURCE_DIR}/src/arm/radxa_rock_5a.c
112+
${PROJECT_SOURCE_DIR}/src/arm/radxa_rock_5b.c
112113
${PROJECT_SOURCE_DIR}/src/arm/rockpi4.c
113114
${PROJECT_SOURCE_DIR}/src/arm/adlink_ipi.c
114115
${PROJECT_SOURCE_DIR}/src/arm/siemens/iot2050.c

src/arm/arm.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "arm/96boards.h"
1313
#include "arm/radxa_rock_3c.h"
1414
#include "arm/radxa_rock_5a.h"
15+
#include "arm/radxa_rock_5b.h"
1516
#include "arm/rockpi4.h"
1617
#include "arm/de_nano_soc.h"
1718
#include "arm/banana.h"
@@ -97,6 +98,8 @@ mraa_arm_platform()
9798
platform_type = MRAA_RADXA_ROCK_3C;
9899
else if (mraa_file_contains("/proc/device-tree/model", PLATFORM_NAME_RADXA_ROCK_5A))
99100
platform_type = MRAA_RADXA_ROCK_5A;
101+
else if (mraa_file_contains("/proc/device-tree/model", PLATFORM_NAME_RADXA_ROCK_5B))
102+
platform_type = MRAA_RADXA_ROCK_5B;
100103
else if (mraa_file_contains("/proc/device-tree/model", "ROCK Pi 4") ||
101104
mraa_file_contains("/proc/device-tree/model", "ROCK PI 4") ||
102105
mraa_file_contains("/proc/device-tree/model", "ROCK 4")
@@ -132,6 +135,9 @@ mraa_arm_platform()
132135
case MRAA_RADXA_ROCK_5A:
133136
plat = mraa_radxa_rock_5a();
134137
break;
138+
case MRAA_RADXA_ROCK_5B:
139+
plat = mraa_radxa_rock_5b();
140+
break;
135141
case MRAA_ROCKPI4:
136142
plat = mraa_rockpi4();
137143
break;

0 commit comments

Comments
 (0)