summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorflyingcys <[email protected]>2024-04-09 22:48:57 +0800
committerMeco Man <[email protected]>2024-04-09 18:09:54 -0400
commit62cd7ad961151975fdd5159ebc4fb8af781238b0 (patch)
treed977fa47c0512643a37af682c054f43cf6535dd2
parentcbf316a5f7127a0945445df39ad3f2b63808daa3 (diff)
support cvitek bsp spinor flash
-rwxr-xr-xbsp/cvitek/README.md4
-rwxr-xr-xbsp/cvitek/board_env.sh45
-rwxr-xr-xbsp/cvitek/c906_little/Kconfig8
-rwxr-xr-xbsp/cvitek/c906_little/README.md2
-rwxr-xr-xbsp/cvitek/c906_little/README_en.md2
-rwxr-xr-xbsp/cvitek/combine-fip.sh39
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/Kconfig7
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/README.md2
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/README_en.md2
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/dtb/milkv-duo-spinor/cv1800b_milkv_duo_spinor.dtbbin0 -> 19789 bytes
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/dtb/milkv-duo-spinor/multi.its56
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/dtb/milkv-duo256m-spinor/cv1812cp_milkv_duo256m_spinor.dtbbin0 -> 20475 bytes
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/dtb/milkv-duo256m-spinor/multi.its56
-rwxr-xr-xbsp/cvitek/drivers/SConscript2
-rwxr-xr-xbsp/cvitek/mksdimg.sh37
15 files changed, 209 insertions, 53 deletions
diff --git a/bsp/cvitek/README.md b/bsp/cvitek/README.md
index 2bb196c3df..f1bb1ee3ce 100755
--- a/bsp/cvitek/README.md
+++ b/bsp/cvitek/README.md
@@ -32,7 +32,9 @@ $ scons --menuconfig
```shell
Board Type (milkv-duo) --->
( ) milkv-duo
+ ( ) milkv-duo-spinor
(X) milkv-duo256m
+ ( ) milkv-duo256m-spinor
```
2. 编译
@@ -75,6 +77,8 @@ $ wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1u
$ sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
```
+3. 如发现切换开发板编译正常,但无法正常打包,请切换至自动下载的 `cvi_bootloader` 目录,并手工运行 `git pull` 更新,或删除该目录后重新自动下载。
+
## 联系人信息
维护人:[flyingcys](https://github.com/flyingcys)
diff --git a/bsp/cvitek/board_env.sh b/bsp/cvitek/board_env.sh
new file mode 100755
index 0000000000..dcd4572702
--- /dev/null
+++ b/bsp/cvitek/board_env.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+function get_board_type()
+{
+ 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")
+ BOARD_VALUE=("milkv-duo" "milkv-duo-spinor" "milkv-duo-spinand" "milkv-duo256m" "milkv-duo256m-spinor" "milkv-duo256m-spinand")
+ STORAGE_VAUE=("sd" "spinor" "spinand" "sd" "spinor" "spinand")
+
+ for ((i=0;i<${#BOARD_CONFIG[@]};i++))
+ do
+ config_value=$(grep -w "${BOARD_CONFIG[i]}" ${PROJECT_PATH}/.config | cut -d= -f2)
+ if [ "$config_value" == "y" ]; then
+ BOARD_TYPE=${BOARD_VALUE[i]}
+ STORAGE_TYPE=${STORAGE_VAUE[i]}
+ break
+ fi
+ done
+ export BOARD_TYPE=${BOARD_TYPE}
+ export STORAGE_TYPE=${STORAGE_TYPE}
+}
+
+function check_bootloader()
+{
+ restult=$(curl -m 10 -s http://www.ip-api.com/json)
+ COUNTRY=$(echo $restult | sed 's/.*"country":"\([^"]*\)".*/\1/')
+ echo "Country: $COUNTRY"
+
+ if [ "$COUNTRY" == "China" ]; then
+ BOOTLOADER_URL=https://gitee.com/flyingcys/cvitek_bootloader
+ else
+ BOOTLOADER_URL=https://github.com/flyingcys/cvitek_bootloader
+ fi
+
+ if [ ! -d cvitek_bootloader ]; then
+ echo "cvitek_bootloader not exist, clone it from ${BOOTLOADER_URL}"
+ git clone ${BOOTLOADER_URL}
+
+ if [ $? -ne 0 ]; then
+ echo "Failed to clone ${BOOTLOADER_URL} !"
+ exit 1
+ fi
+fi
+}
+
+
diff --git a/bsp/cvitek/c906_little/Kconfig b/bsp/cvitek/c906_little/Kconfig
index a759cc313d..d981d97abe 100755
--- a/bsp/cvitek/c906_little/Kconfig
+++ b/bsp/cvitek/c906_little/Kconfig
@@ -45,6 +45,14 @@ choice
config BOARD_TYPE_MILKV_DUO
bool "milkv-duo"
+
+ config BOARD_TYPE_MILKV_DUO_SPINOR
+ bool "milkv-duo-spinor"
+
config BOARD_TYPE_MILKV_DUO256M
bool "milkv-duo256m"
+
+ config BOARD_TYPE_MILKV_DUO256M_SPINOR
+ bool "milkv-duo256m-spinor"
+
endchoice
diff --git a/bsp/cvitek/c906_little/README.md b/bsp/cvitek/c906_little/README.md
index 5b6b3026bb..14bd1a7e49 100755
--- a/bsp/cvitek/c906_little/README.md
+++ b/bsp/cvitek/c906_little/README.md
@@ -33,7 +33,9 @@ $ scons --menuconfig
```shell
Board Type (milkv-duo) --->
( ) milkv-duo
+ ( ) milkv-duo-spinor
(X) milkv-duo256m
+ ( ) milkv-duo256m-spinor
```
它会自动下载 env 相关脚本到 ~/.env 目录,然后执行
diff --git a/bsp/cvitek/c906_little/README_en.md b/bsp/cvitek/c906_little/README_en.md
index d2b872c71f..df6d28fa9c 100755
--- a/bsp/cvitek/c906_little/README_en.md
+++ b/bsp/cvitek/c906_little/README_en.md
@@ -32,7 +32,9 @@ Choose the target development board type that needs to be compiled:
```shell
Board Type (milkv-duo) --->
( ) milkv-duo
+ ( ) milkv-duo-spinor
(X) milkv-duo256m
+ ( ) milkv-duo256m-spinor
```
It will automatically download env related scripts to the ~/.env directory, then execute
diff --git a/bsp/cvitek/combine-fip.sh b/bsp/cvitek/combine-fip.sh
index 82e2edf5b1..414da79eb3 100755
--- a/bsp/cvitek/combine-fip.sh
+++ b/bsp/cvitek/combine-fip.sh
@@ -11,47 +11,12 @@ fi
ROOT_PATH=$(pwd)
echo $ROOT_PATH
-function get_board_type()
-{
- BOARD_CONFIG=("CONFIG_BOARD_TYPE_MILKV_DUO" "CONFIG_BOARD_TYPE_MILKV_DUO_SPINOR" "CONFIG_BOARD_TYPE_MILKV_DUO_SPINAND" "CONFIG_BOARD_TYPE_MILKV_DUO256M")
- BOARD_VALUE=("milkv-duo" "milkv-duo-spinor" "milkv-duo-spinand" "milkv-duo256m")
-
- for ((i=0;i<${#BOARD_CONFIG[@]};i++))
- do
- config_value=$(grep -w "${BOARD_CONFIG[i]}" ${PROJECT_PATH}/.config | cut -d= -f2)
- if [ "$config_value" == "y" ]; then
- BOARD_TYPE=${BOARD_VALUE[i]}
- break
- fi
- done
-}
+. board_env.sh
get_board_type
echo "board_type: ${BOARD_TYPE}"
-COUNTRY=China
-function get_country()
-{
- restult=$(curl -m 10 -s http://www.ip-api.com/json)
- COUNTRY=$(echo $restult | sed 's/.*"country":"\([^"]*\)".*/\1/')
- echo "Country: $COUNTRY"
-}
-
-if [ "$COUNTRY" == "China" ]; then
- cvitek_bootloader_url=https://gitee.com/flyingcys/cvitek_bootloader
-else
- cvitek_bootloader_url=https://github.com/flyingcys/cvitek_bootloader
-fi
-
-if [ ! -d cvitek_bootloader ]; then
- echo "cvitek_bootloader not exist, clone it from ${cvitek_bootloader_url}"
- git clone ${cvitek_bootloader_url}
-
- if [ $? -ne 0 ]; then
- echo "Failed to clone ${cvitek_bootloader_url} !"
- exit 1
- fi
-fi
+check_bootloader || exit 0
export BLCP_2ND_PATH=${PROJECT_PATH}/${IMAGE_NAME}
diff --git a/bsp/cvitek/cv18xx_risc-v/Kconfig b/bsp/cvitek/cv18xx_risc-v/Kconfig
index a9e8ed78c1..1977442273 100755
--- a/bsp/cvitek/cv18xx_risc-v/Kconfig
+++ b/bsp/cvitek/cv18xx_risc-v/Kconfig
@@ -53,6 +53,13 @@ choice
config BOARD_TYPE_MILKV_DUO
bool "milkv-duo"
+ config BOARD_TYPE_MILKV_DUO_SPINOR
+ bool "milkv-duo-spinor"
+
config BOARD_TYPE_MILKV_DUO256M
bool "milkv-duo256m"
+
+ config BOARD_TYPE_MILKV_DUO256M_SPINOR
+ bool "milkv-duo256m-spinor"
+
endchoice
diff --git a/bsp/cvitek/cv18xx_risc-v/README.md b/bsp/cvitek/cv18xx_risc-v/README.md
index 0d92292f15..336b6439ac 100755
--- a/bsp/cvitek/cv18xx_risc-v/README.md
+++ b/bsp/cvitek/cv18xx_risc-v/README.md
@@ -79,7 +79,9 @@ RT-Thread Kernel --->
```shell
Board Type (milkv-duo) --->
( ) milkv-duo
+ ( ) milkv-duo-spinor
(X) milkv-duo256m
+ ( ) milkv-duo256m-spinor
```
它会自动下载env相关脚本到~/.env目录,然后执行
diff --git a/bsp/cvitek/cv18xx_risc-v/README_en.md b/bsp/cvitek/cv18xx_risc-v/README_en.md
index e3141e177d..3b19462de0 100755
--- a/bsp/cvitek/cv18xx_risc-v/README_en.md
+++ b/bsp/cvitek/cv18xx_risc-v/README_en.md
@@ -78,7 +78,9 @@ RT-Thread Kernel --->
```shell
Board Type (milkv-duo) --->
( ) milkv-duo
+ ( ) milkv-duo-spinor
(X) milkv-duo256m
+ ( ) milkv-duo256m-spinor
```
It will automatically download relevant scripts to the ~/.env directory, then execute:
diff --git a/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo-spinor/cv1800b_milkv_duo_spinor.dtb b/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo-spinor/cv1800b_milkv_duo_spinor.dtb
new file mode 100755
index 0000000000..5275da07d2
--- /dev/null
+++ b/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo-spinor/cv1800b_milkv_duo_spinor.dtb
Binary files differ
diff --git a/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo-spinor/multi.its b/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo-spinor/multi.its
new file mode 100755
index 0000000000..5dfcc9d0aa
--- /dev/null
+++ b/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo-spinor/multi.its
@@ -0,0 +1,56 @@
+/*
+ * U-Boot uImage source file with multiple kernels, ramdisks and FDT blobs
+ */
+
+/dts-v1/;
+
+/ {
+ description = "Various kernels, ramdisks and FDT blobs";
+ #address-cells = <2>;
+
+ images {
+ kernel-1 {
+ description = "cvitek kernel";
+ data = /incbin/("./Image.lzma");
+ type = "kernel";
+ arch = "riscv";
+ os = "linux";
+ compression = "lzma";
+ load = <0x0 0x80200000>;
+ entry = <0x0 0x80200000>;
+ hash-2 {
+ algo = "crc32";
+ };
+ };
+
+
+ /*FDT*/
+
+ fdt-cv1800b_milkv_duo_spinor {
+ description = "cvitek device tree - cv1800b_milkv_duo_spinor";
+ data = /incbin/("./cv1800b_milkv_duo_spinor.dtb");
+ type = "flat_dt";
+ arch = "riscv";
+ compression = "none";
+ hash-1 {
+ algo = "sha256";
+ };
+ };
+
+
+
+ };
+
+ /*CFG*/
+ configurations {
+
+ config-cv1800b_milkv_duo_spinor {
+ description = "boot cvitek system with board cv1800b_milkv_duo_spinor";
+ kernel = "kernel-1";
+ fdt = "fdt-cv1800b_milkv_duo_spinor";
+ };
+
+ };
+
+
+};
diff --git a/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo256m-spinor/cv1812cp_milkv_duo256m_spinor.dtb b/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo256m-spinor/cv1812cp_milkv_duo256m_spinor.dtb
new file mode 100755
index 0000000000..e48fe8e311
--- /dev/null
+++ b/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo256m-spinor/cv1812cp_milkv_duo256m_spinor.dtb
Binary files differ
diff --git a/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo256m-spinor/multi.its b/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo256m-spinor/multi.its
new file mode 100755
index 0000000000..23f546482c
--- /dev/null
+++ b/bsp/cvitek/cv18xx_risc-v/dtb/milkv-duo256m-spinor/multi.its
@@ -0,0 +1,56 @@
+/*
+ * U-Boot uImage source file with multiple kernels, ramdisks and FDT blobs
+ */
+
+/dts-v1/;
+
+/ {
+ description = "Various kernels, ramdisks and FDT blobs";
+ #address-cells = <2>;
+
+ images {
+ kernel-1 {
+ description = "cvitek kernel";
+ data = /incbin/("./Image.lzma");
+ type = "kernel";
+ arch = "riscv";
+ os = "linux";
+ compression = "lzma";
+ load = <0x0 0x80200000>;
+ entry = <0x0 0x80200000>;
+ hash-2 {
+ algo = "crc32";
+ };
+ };
+
+
+ /*FDT*/
+
+ fdt-cv1812cp_milkv_duo256m_spinor {
+ description = "cvitek device tree - cv1812cp_milkv_duo256m_spinor";
+ data = /incbin/("./cv1812cp_milkv_duo256m_spinor.dtb");
+ type = "flat_dt";
+ arch = "riscv";
+ compression = "none";
+ hash-1 {
+ algo = "sha256";
+ };
+ };
+
+
+
+ };
+
+ /*CFG*/
+ configurations {
+
+ config-cv1812cp_milkv_duo256m_spinor {
+ description = "boot cvitek system with board cv1812cp_milkv_duo256m_spinor";
+ kernel = "kernel-1";
+ fdt = "fdt-cv1812cp_milkv_duo256m_spinor";
+ };
+
+ };
+
+
+};
diff --git a/bsp/cvitek/drivers/SConscript b/bsp/cvitek/drivers/SConscript
index 90aa68f80e..b1ea031d90 100755
--- a/bsp/cvitek/drivers/SConscript
+++ b/bsp/cvitek/drivers/SConscript
@@ -10,7 +10,7 @@ CPPDEFINES = []
CPPPATH = [cwd]
CHIP_TYPE = 'cv180x'
-if GetDepend('BOARD_TYPE_MILKV_DUO256M'):
+if GetDepend('BOARD_TYPE_MILKV_DUO256M') or GetDepend('BOARD_TYPE_MILKV_DUO256M_SPINOR') or GetDepend('BOARD_TYPE_MILKV_DUO256M_SPINAND'):
CHIP_TYPE = 'cv181x'
elif GetDepend('BOARD_TYPE_MILKV_DUO') or GetDepend('BOARD_TYPE_MILKV_DUO_SPINOR') or GetDepend('BOARD_TYPE_MILKV_DUO_SPINAND'):
CHIP_TYPE = 'cv180x'
diff --git a/bsp/cvitek/mksdimg.sh b/bsp/cvitek/mksdimg.sh
index fabc640d1b..26e70bba62 100755
--- a/bsp/cvitek/mksdimg.sh
+++ b/bsp/cvitek/mksdimg.sh
@@ -12,20 +12,7 @@ fi
ROOT_PATH=$(pwd)
echo ${ROOT_PATH}
-function get_board_type()
-{
- BOARD_CONFIG=("CONFIG_BOARD_TYPE_MILKV_DUO" "CONFIG_BOARD_TYPE_MILKV_DUO_SPINOR" "CONFIG_BOARD_TYPE_MILKV_DUO_SPINAND" "CONFIG_BOARD_TYPE_MILKV_DUO256M")
- BOARD_VALUE=("milkv-duo" "milkv-duo-spinor" "milkv-duo-spinand" "milkv-duo256m")
-
- for ((i=0;i<${#BOARD_CONFIG[@]};i++))
- do
- config_value=$(grep -w "${BOARD_CONFIG[i]}" ${PROJECT_PATH}/.config | cut -d= -f2)
- if [ "$config_value" == "y" ]; then
- BOARD_TYPE=${BOARD_VALUE[i]}
- break
- fi
- done
-}
+. board_env.sh
get_board_type
@@ -34,4 +21,24 @@ echo "start compress kernel..."
lzma -c -9 -f -k ${PROJECT_PATH}/${IMAGE_NAME} > ${PROJECT_PATH}/dtb/${BOARD_TYPE}/Image.lzma
mkdir -p ${ROOT_PATH}/output/${BOARD_TYPE}
-./mkimage -f ${PROJECT_PATH}/dtb/${BOARD_TYPE}/multi.its -r ${ROOT_PATH}/output/${BOARD_TYPE}/boot.sd \ No newline at end of file
+./mkimage -f ${PROJECT_PATH}/dtb/${BOARD_TYPE}/multi.its -r ${ROOT_PATH}/output/${BOARD_TYPE}/boot.${STORAGE_TYPE}
+
+if [ "${STORAGE_TYPE}" == "spinor" ] || [ "${STORAGE_TYPE}" == "spinand" ]; then
+
+ check_bootloader || exit 0
+
+ pushd cvitek_bootloader
+
+ . env.sh
+ get_build_board ${BOARD_TYPE}
+
+ CHIP_ARCH_L=$(echo $CHIP_ARCH | tr '[:upper:]' '[:lower:]')
+
+ echo "board: ${MV_BOARD_LINK}"
+
+ IMGTOOL_PATH=build/tools/common/image_tool
+ FLASH_PARTITION_XML=build/boards/"${CHIP_ARCH_L}"/"${MV_BOARD_LINK}"/partition/partition_"${STORAGE_TYPE}".xml
+ python3 "$IMGTOOL_PATH"/raw2cimg.py "${ROOT_PATH}"/output/"${BOARD_TYPE}"/boot."$STORAGE_TYPE" "${ROOT_PATH}/output/${BOARD_TYPE}" "$FLASH_PARTITION_XML"
+
+ popd
+fi \ No newline at end of file