Skip to content

Commit 66738d7

Browse files
Solonix-Chumysterywolf
authored andcommitted
bsp: cvitek: Add support for duos_sd
Supports both big and little cores of RISC-V C906, but does not support ARM cores. Currently, only UART drivers are supported on the peripherals. Signed-off-by: Shicheng Chu <[email protected]>
1 parent 669a682 commit 66738d7

File tree

11 files changed

+148
-7
lines changed

11 files changed

+148
-7
lines changed

bsp/cvitek/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
支持开发板以及集成 SoC 芯片信息如下
2525

2626
- milk-v duo: [https://milkv.io/duo](https://milkv.io/duo),SoC 采用 CV1800B。
27-
- milk-v duo256m: [https://milkv.io/duo256m](https://milkv.io/docs/duo/getting-started/duo256m),SoC 采用 SG2002。
27+
- milk-v duo256m: [https://milkv.io/duo256m](https://milkv.io/docs/duo/getting-started/duo256m),SoC 采用 SG2002(原 CV181xC)。
28+
- milk-v duos: [https://milkv.io/duos](https://milkv.io/docs/duo/getting-started/duos),SoC 采用 SG2000(原 CV181xH)。
2829

2930
Duo 家族开发板采用 CV18xx 系列芯片。芯片的工作模式总结如下:
3031

@@ -109,6 +110,7 @@ Board Type (milkv-duo) --->
109110
( ) milkv-duo-spinor
110111
(X) milkv-duo256m
111112
( ) milkv-duo256m-spinor
113+
( ) milkv-duos
112114
```
113115

114116
2. 编译

bsp/cvitek/board_env.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
function get_board_type()
44
{
5-
BOARD_CONFIG=("CONFIG_BOARD_TYPE_MILKV_DUO" "CONFIG_BOARD_TYPE_MILKV_DUO_SPINOR" "CONFIG_BOARD_TYPE_MILKV_DUO_SPINAND" "CONFIG_BOARD_TYPE_MILKV_DUO256M" "CONFIG_BOARD_TYPE_MILKV_DUO256M_SPINOR" "CONFIG_BOARD_TYPE_MILKV_DUO256M_SPINAND")
6-
BOARD_VALUE=("milkv-duo" "milkv-duo-spinor" "milkv-duo-spinand" "milkv-duo256m" "milkv-duo256m-spinor" "milkv-duo256m-spinand")
7-
STORAGE_VAUE=("sd" "spinor" "spinand" "sd" "spinor" "spinand")
5+
BOARD_CONFIG=("CONFIG_BOARD_TYPE_MILKV_DUO" "CONFIG_BOARD_TYPE_MILKV_DUO_SPINOR" "CONFIG_BOARD_TYPE_MILKV_DUO_SPINAND" "CONFIG_BOARD_TYPE_MILKV_DUO256M" "CONFIG_BOARD_TYPE_MILKV_DUO256M_SPINOR" "CONFIG_BOARD_TYPE_MILKV_DUO256M_SPINAND" "CONFIG_BOARD_TYPE_MILKV_DUOS")
6+
BOARD_VALUE=("milkv-duo" "milkv-duo-spinor" "milkv-duo-spinand" "milkv-duo256m" "milkv-duo256m-spinor" "milkv-duo256m-spinand" "milkv-duos-sd")
7+
STORAGE_VAUE=("sd" "spinor" "spinand" "sd" "spinor" "spinand" "sd")
88

99
for ((i=0;i<${#BOARD_CONFIG[@]};i++))
1010
do

bsp/cvitek/c906_little/Kconfig

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ config SOC_TYPE_CV180X
4242
bool
4343
default n
4444

45+
config SOC_TYPE_SG2000
46+
bool
47+
default n
48+
4549
config SOC_TYPE_SG2002
4650
bool
4751
default n
@@ -66,4 +70,8 @@ choice
6670
select SOC_TYPE_SG2002
6771
bool "milkv-duo256m-spinor"
6872

73+
config BOARD_TYPE_MILKV_DUOS
74+
select SOC_TYPE_SG2000
75+
bool "milkv-duos"
76+
6977
endchoice

bsp/cvitek/c906_little/SConstruct

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu = False)
3434
# include libraries
3535
objs.extend(SConscript(drivers_path_prefix + '/SConscript', variant_dir='build/drivers', duplicate=0))
3636

37-
if GetDepend('BOARD_TYPE_MILKV_DUO256M'):
37+
if GetDepend('BOARD_TYPE_MILKV_DUO256M') or GetDepend('BOARD_TYPE_MILKV_DUOS'):
3838
env['LINKFLAGS'] = env['LINKFLAGS'].replace('cv180x_lscript.ld', 'cv181x_lscript.ld')
3939
env['LINKFLAGS'] = env['LINKFLAGS'].replace('-L board/script/cv180x', '-L board/script/cv181x')
4040

bsp/cvitek/cv18xx_risc-v/Kconfig

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ config SOC_TYPE_CV180X
4848
bool
4949
default n
5050

51+
config SOC_TYPE_SG2000
52+
bool
53+
default n
54+
5155
config SOC_TYPE_SG2002
5256
bool
5357
default n
@@ -72,6 +76,10 @@ choice
7276
select SOC_TYPE_SG2002
7377
bool "milkv-duo256m-spinor"
7478

79+
config BOARD_TYPE_MILKV_DUOS
80+
select SOC_TYPE_SG2000
81+
bool "milkv-duos"
82+
7583
endchoice
7684

7785
choice BSP_ROOTFS_TYPE

bsp/cvitek/cv18xx_risc-v/applications/main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
#define LED_PIN "E02" /* Onboard LED pins */
1717
#elif defined(BOARD_TYPE_MILKV_DUO) || defined(BOARD_TYPE_MILKV_DUO_SPINOR)
1818
#define LED_PIN "C24" /* Onboard LED pins */
19+
#elif defined(BOARD_TYPE_MILKV_DUOS)
20+
#define LED_PIN "A29" /* Onboard LED pins */
1921
#endif
2022

2123
int main(void)
Binary file not shown.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* U-Boot uImage source file with multiple kernels, ramdisks and FDT blobs
3+
*/
4+
5+
/dts-v1/;
6+
7+
/ {
8+
description = "Various kernels, ramdisks and FDT blobs";
9+
#address-cells = <2>;
10+
11+
images {
12+
kernel-1 {
13+
description = "cvitek kernel";
14+
data = /incbin/("./Image.lzma");
15+
type = "kernel";
16+
arch = "riscv";
17+
os = "linux";
18+
compression = "lzma";
19+
load = <0x0 0x80200000>;
20+
entry = <0x0 0x80200000>;
21+
hash-2 {
22+
algo = "crc32";
23+
};
24+
};
25+
26+
27+
/*FDT*/
28+
29+
fdt-cv1813h_milkv_duos_sd {
30+
description = "cvitek device tree - cv1813h_milkv_duos_sd";
31+
data = /incbin/("./cv1813h_milkv_duos_sd.dtb");
32+
type = "flat_dt";
33+
arch = "riscv";
34+
compression = "none";
35+
hash-1 {
36+
algo = "sha256";
37+
};
38+
};
39+
40+
41+
42+
};
43+
44+
/*CFG*/
45+
configurations {
46+
47+
config-cv1813h_milkv_duos_sd {
48+
description = "boot cvitek system with board cv1813h_milkv_duos_sd";
49+
kernel = "kernel-1";
50+
fdt = "fdt-cv1813h_milkv_duos_sd";
51+
};
52+
53+
};
54+
55+
56+
};

bsp/cvitek/drivers/SConscript

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ CPPDEFINES = []
1212
CPPPATH = [cwd]
1313

1414
CHIP_TYPE = 'cv180x'
15-
if GetDepend('BOARD_TYPE_MILKV_DUO256M') or GetDepend('BOARD_TYPE_MILKV_DUO256M_SPINOR') or GetDepend('BOARD_TYPE_MILKV_DUO256M_SPINAND'):
15+
if GetDepend('BOARD_TYPE_MILKV_DUO256M') or GetDepend('BOARD_TYPE_MILKV_DUO256M_SPINOR') or GetDepend('BOARD_TYPE_MILKV_DUO256M_SPINAND') or GetDepend('BOARD_TYPE_MILKV_DUOS'):
1616
CHIP_TYPE = 'cv181x'
1717
elif GetDepend('BOARD_TYPE_MILKV_DUO') or GetDepend('BOARD_TYPE_MILKV_DUO_SPINOR') or GetDepend('BOARD_TYPE_MILKV_DUO_SPINAND'):
1818
CHIP_TYPE = 'cv180x'

bsp/cvitek/drivers/drv_pinmux.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ const struct fselect pin_selects_array[][8] = {
230230
/* PAD_AUD_AOUTR */ {FS_NONE, FS_NONE, FS_NONE, {XGPIOC_24, 3}, {IIS1_DI, 4}, {IIS2_DO, 5}, {IIS1_DO, 6}, FS_NONE},
231231
};
232232

233-
#elif defined(SOC_TYPE_SG2002)
233+
#elif defined(SOC_TYPE_SG2002) || defined(SOC_TYPE_SG2000)
234234

235235
struct fmux pinmux_array[] = {
236236
FS_PINMUX(CAM_MCLK0),

bsp/cvitek/drivers/drv_uart.c

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,71 @@ static const char *pinname_whitelist_uart4_tx[] = {
357357
};
358358
#endif
359359

360+
#elif defined(BOARD_TYPE_MILKV_DUOS)
361+
362+
#ifdef BSP_USING_UART0
363+
static const char *pinname_whitelist_uart0_rx[] = {
364+
"UART0_RX",
365+
NULL,
366+
};
367+
static const char *pinname_whitelist_uart0_tx[] = {
368+
"UART0_TX",
369+
NULL,
370+
};
371+
#endif
372+
373+
#ifdef BSP_USING_UART1
374+
static const char *pinname_whitelist_uart1_rx[] = {
375+
"JTAG_CPU_TCK",
376+
"UART0_RX",
377+
NULL,
378+
};
379+
static const char *pinname_whitelist_uart1_tx[] = {
380+
"JTAG_CPU_TMS",
381+
"UART0_TX",
382+
"IIC0_SCL",
383+
NULL,
384+
};
385+
#endif
386+
387+
#ifdef BSP_USING_UART2
388+
static const char *pinname_whitelist_uart2_rx[] = {
389+
"VIVO_D9",
390+
"VIVO_D5",
391+
"VIVO_CLK",
392+
"PWR_GPIO1",
393+
NULL,
394+
};
395+
static const char *pinname_whitelist_uart2_tx[] = {
396+
"VIVO_D10",
397+
"VIVO_D6",
398+
"VIVO_D2",
399+
"IIC0_SCL",
400+
"PWR_GPIO0",
401+
NULL,
402+
};
403+
#endif
404+
405+
#ifdef BSP_USING_UART3
406+
static const char *pinname_whitelist_uart3_rx[] = {
407+
"ADC2",
408+
NULL,
409+
};
410+
static const char *pinname_whitelist_uart3_tx[] = {
411+
"ADC3",
412+
NULL,
413+
};
414+
#endif
415+
416+
#ifdef BSP_USING_UART4
417+
static const char *pinname_whitelist_uart4_rx[] = {
418+
NULL,
419+
};
420+
static const char *pinname_whitelist_uart4_tx[] = {
421+
NULL,
422+
};
423+
#endif
424+
360425
#else
361426
#error "Unsupported board type!"
362427
#endif

0 commit comments

Comments
 (0)