Merge pull request #56 from yue-xiaomin/dev
add NOR/NAND configurations
This commit is contained in:
35
README-zh.md
35
README-zh.md
@ -71,10 +71,12 @@ Usage:
|
|||||||
./build.sh [board] - Build [board] directly, supported boards asfollows:
|
./build.sh [board] - Build [board] directly, supported boards asfollows:
|
||||||
milkv-duo
|
milkv-duo
|
||||||
milkv-duo-lite
|
milkv-duo-lite
|
||||||
|
milkv-duo-spinand
|
||||||
|
milkv-duo-spinor
|
||||||
milkv-duo256m
|
milkv-duo256m
|
||||||
milkv-duo256m-lite
|
milkv-duo256m-lite
|
||||||
```
|
```
|
||||||
最下边列出的是当前支持的目标版本列表,带 `lite` 后缀的为精简版,不包含 python,pip, pinpong 等库和应用包。
|
最下边列出的是当前支持的目标版本列表,带 `lite` 后缀的为精简版,不包含 python,pip, pinpong 等库和应用包。带`spinor`或者`spinand` 后缀的为基于IOB板载NOR FLASH或者NAND FLASH的版本。
|
||||||
|
|
||||||
如提示中所示,有两种方法来编译目录版本。
|
如提示中所示,有两种方法来编译目录版本。
|
||||||
|
|
||||||
@ -84,8 +86,11 @@ milkv-duo256m-lite
|
|||||||
Select a target to build:
|
Select a target to build:
|
||||||
1. milkv-duo
|
1. milkv-duo
|
||||||
2. milkv-duo-lite
|
2. milkv-duo-lite
|
||||||
3. milkv-duo256m
|
3. milkv-duo-spinand
|
||||||
4. milkv-duo256m-lite
|
4. milkv-duo-spinor
|
||||||
|
5. milkv-duo256m
|
||||||
|
6. milkv-duo256m-lite
|
||||||
|
7. milkv-duos
|
||||||
Which would you like:
|
Which would you like:
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -94,7 +99,7 @@ Which would you like:
|
|||||||
# ./build.sh milkv-duo
|
# ./build.sh milkv-duo
|
||||||
```
|
```
|
||||||
|
|
||||||
编译成功后可以在 `out` 目录下看到生成的SD卡烧录镜像 `milkv-duo-*-*.img`
|
编译成功后可以在 `out` 目录下看到生成的SD卡烧录镜像 `milkv-duo-*-*.img`,或者NOR FLASH/NAND FLASH 的烧录文件目录`milkv-duo-*-*`。
|
||||||
|
|
||||||
*注: 第一次编译会自动下载所需的工具链,大小为 840M 左右,下载完会自动解压到 SDK 目录下的 `host-tools` 目录,下次编译时检测到已存在 `host-tools` 目录,就不会再次下载了*
|
*注: 第一次编译会自动下载所需的工具链,大小为 840M 左右,下载完会自动解压到 SDK 目录下的 `host-tools` 目录,下次编译时检测到已存在 `host-tools` 目录,就不会再次下载了*
|
||||||
|
|
||||||
@ -110,6 +115,8 @@ tar -xf host-tools.tar.gz -C /your/sdk/path/
|
|||||||
```
|
```
|
||||||
milkv-duo cv1800b_milkv_duo_sd
|
milkv-duo cv1800b_milkv_duo_sd
|
||||||
milkv-duo-lite cv1800b_milkv_duo_sd
|
milkv-duo-lite cv1800b_milkv_duo_sd
|
||||||
|
milkv-duo-spinand cv1800b_milkv_duo_spinand
|
||||||
|
milkv-duo-spinor cv1800b_milkv_duo_spinor
|
||||||
milkv-duo256m cv1812cp_milkv_duo256m_sd
|
milkv-duo256m cv1812cp_milkv_duo256m_sd
|
||||||
milkv-duo256m-lite cv1812cp_milkv_duo256m_sd
|
milkv-duo256m-lite cv1812cp_milkv_duo256m_sd
|
||||||
```
|
```
|
||||||
@ -137,8 +144,10 @@ pack_sd_image
|
|||||||
|
|
||||||
生成的固件位置:
|
生成的固件位置:
|
||||||
```
|
```
|
||||||
Duo: install/soc_cv1800b_milkv_duo_sd/[board].img
|
Duo: install/soc_cv1800b_milkv_duo_sd/[board].img
|
||||||
Duo256M: install/soc_cv1812cp_milkv_duo256m_sd/[board].img
|
Duo(nor): install/soc_cv1800b_milkv_duo_sd/fip.bin、boot.spinor、rootfs.spinor
|
||||||
|
Duo(nand): install/soc_cv1800b_milkv_duo_sd/fip.bin、boot.spinand、rootfs.spinand、system.spinand、cfg.spinand
|
||||||
|
Duo256M: install/soc_cv1812cp_milkv_duo256m_sd/[board].img
|
||||||
```
|
```
|
||||||
|
|
||||||
## 二、使用 Docker 编译
|
## 二、使用 Docker 编译
|
||||||
@ -188,6 +197,8 @@ docker exec -it duodocker /bin/bash -c "cd /home/work && cat /etc/issue && ./bui
|
|||||||
```
|
```
|
||||||
milkv-duo
|
milkv-duo
|
||||||
milkv-duo-lite
|
milkv-duo-lite
|
||||||
|
milkv-duo-spinand
|
||||||
|
milkv-duo-spinor
|
||||||
milkv-duo256m
|
milkv-duo256m
|
||||||
milkv-duo256m-lite
|
milkv-duo256m-lite
|
||||||
```
|
```
|
||||||
@ -231,6 +242,8 @@ root@8edea33c2239:/# cd /home/work/
|
|||||||
```
|
```
|
||||||
milkv-duo cv1800b_milkv_duo_sd
|
milkv-duo cv1800b_milkv_duo_sd
|
||||||
milkv-duo-lite cv1800b_milkv_duo_sd
|
milkv-duo-lite cv1800b_milkv_duo_sd
|
||||||
|
milkv-duo-spinand cv1800b_milkv_duo_spinand
|
||||||
|
milkv-duo-spinor cv1800b_milkv_duo_spinor
|
||||||
milkv-duo256m cv1812cp_milkv_duo256m_sd
|
milkv-duo256m cv1812cp_milkv_duo256m_sd
|
||||||
milkv-duo256m-lite cv1812cp_milkv_duo256m_sd
|
milkv-duo256m-lite cv1812cp_milkv_duo256m_sd
|
||||||
```
|
```
|
||||||
@ -259,6 +272,8 @@ pack_sd_image
|
|||||||
生成的固件位置:
|
生成的固件位置:
|
||||||
```
|
```
|
||||||
Duo: install/soc_cv1800b_milkv_duo_sd/[board].img
|
Duo: install/soc_cv1800b_milkv_duo_sd/[board].img
|
||||||
|
Duo(nor): install/soc_cv1800b_milkv_duo_sd/fip.bin、boot.spinor、rootfs.spinor
|
||||||
|
Duo(nand): install/soc_cv1800b_milkv_duo_sd/fip.bin、boot.spinand、rootfs.spinand、system.spinand、cfg.spinand
|
||||||
Duo256M: install/soc_cv1812cp_milkv_duo256m_sd/[board].img
|
Duo256M: install/soc_cv1812cp_milkv_duo256m_sd/[board].img
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -332,6 +347,14 @@ appendWindowsPath = false
|
|||||||
```bash
|
```bash
|
||||||
sudo dd if=milkv-duo-XXX.img of=/dev/sdX
|
sudo dd if=milkv-duo-XXX.img of=/dev/sdX
|
||||||
```
|
```
|
||||||
|
## IOB板FLASH烧录
|
||||||
|
|
||||||
|
- 需要IOB板FLASH位置处焊接上NOR或者NAND FLASH(需要用户后期自己动手)
|
||||||
|
- 准备一张没有烧录SD镜像的SD卡,将out下`milkv-duo-spinor-*-*`或者`milkv-duo-spinand-*-*`目录下全部文件拷贝至内存卡根目录
|
||||||
|
- 将拷贝好镜像的 TF 卡插入 Milk-V Duo 的 TF 卡槽中
|
||||||
|
- 接好串口线,可观察刻录进度
|
||||||
|
- 开机上电即开始刻录镜像到NOR或者NAND,等待uboot中自动刻录镜像完成
|
||||||
|
- 拔掉Milk-V Duo 的 TF 卡槽中的 TF 卡,重新上电即可从NOR或者NAND启动
|
||||||
|
|
||||||
## 开机
|
## 开机
|
||||||
|
|
||||||
|
|||||||
32
build.sh
32
build.sh
@ -111,6 +111,11 @@ function milkv_build()
|
|||||||
popd
|
popd
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# clean nor/nand img
|
||||||
|
if [ -f "${OUTPUT_DIR}/upgrade.zip" ]; then
|
||||||
|
rm -rf ${OUTPUT_DIR}/*
|
||||||
|
fi
|
||||||
|
|
||||||
clean_all
|
clean_all
|
||||||
build_all
|
build_all
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
@ -154,10 +159,37 @@ function milkv_pack_sd()
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function milkv_pack_nor_nand()
|
||||||
|
{
|
||||||
|
[ ! -d out ] && mkdir out
|
||||||
|
|
||||||
|
if [ -f "${OUTPUT_DIR}/upgrade.zip" ]; then
|
||||||
|
nor_out_name=${MILKV_BOARD}-`date +%Y%m%d-%H%M`
|
||||||
|
mkdir -p out/$nor_out_name
|
||||||
|
|
||||||
|
if [ "${STORAGE_TYPE}" == "spinor" ]; then
|
||||||
|
cp ${OUTPUT_DIR}/fip.bin out/$nor_out_name
|
||||||
|
cp ${OUTPUT_DIR}/*.spinor out/$nor_out_name
|
||||||
|
else
|
||||||
|
cp ${OUTPUT_DIR}/fip.bin out/$nor_out_name
|
||||||
|
cp ${OUTPUT_DIR}/*.spinand out/$nor_out_name
|
||||||
|
fi
|
||||||
|
|
||||||
|
touch ${OUTPUT_DIR}/how_to_download.txt
|
||||||
|
echo "Copy all to a blank tf card, power on and automatically download firmware to NOR or NAND in U-bOOT." >> out/$nor_out_name/how_to_download.txt
|
||||||
|
print_info "Create spinor img successful: ${nor_out_name}"
|
||||||
|
else
|
||||||
|
print_err "Create spinor img failed!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function milkv_pack()
|
function milkv_pack()
|
||||||
{
|
{
|
||||||
if [ "${STORAGE_TYPE}" == "sd" ]; then
|
if [ "${STORAGE_TYPE}" == "sd" ]; then
|
||||||
milkv_pack_sd
|
milkv_pack_sd
|
||||||
|
else
|
||||||
|
milkv_pack_nor_nand
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -562,11 +562,21 @@ br-rootfs-prepare:export CROSS_COMPILE_KERNEL=$(patsubst "%",%,$(CONFIG_CROSS_CO
|
|||||||
br-rootfs-prepare:export CROSS_COMPILE_SDK=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE_SDK))
|
br-rootfs-prepare:export CROSS_COMPILE_SDK=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE_SDK))
|
||||||
br-rootfs-prepare:
|
br-rootfs-prepare:
|
||||||
$(call print_target)
|
$(call print_target)
|
||||||
|
ifneq ($(STORAGE_TYPE), sd)
|
||||||
|
#${Q}cp -r ${RAMDISK_PATH}/rootfs/buildroot_fs/arm/* $(BR_ROOTFS_DIR)
|
||||||
|
$(call TARGET_PACKAGE_INSTALL_BR_ROOTFS)
|
||||||
|
${Q}mkdir -p $(BR_ROOTFS_DIR)/etc/init.d/
|
||||||
|
${Q}python3 $(COMMON_TOOLS_PATH)/image_tool/create_automount.py $(FLASH_PARTITION_XML) $(BR_ROOTFS_DIR)/etc/init.d/
|
||||||
|
# Generate /etc/fw_env.config
|
||||||
|
# ${Q}mkdir -p $(BR_ROOTFS_DIR)/etc
|
||||||
|
${Q}python3 $(COMMON_TOOLS_PATH)/image_tool/mkcvipart.py $(FLASH_PARTITION_XML) $(BR_ROOTFS_DIR)/etc --fw_env
|
||||||
|
endif
|
||||||
|
|
||||||
# copy ko and mmf libs
|
# copy ko and mmf libs
|
||||||
${Q}mkdir -p $(BR_ROOTFS_DIR)/mnt/system
|
${Q}mkdir -p $(BR_ROOTFS_DIR)/mnt/system
|
||||||
${Q}cp -arf ${SYSTEM_OUT_DIR}/* $(BR_ROOTFS_DIR)/mnt/system/
|
${Q}cp -arf ${SYSTEM_OUT_DIR}/* $(BR_ROOTFS_DIR)/mnt/system/
|
||||||
|
|
||||||
# copy milkv overlay files
|
# copy milkv overlay files
|
||||||
ifeq ($(MV_VENDOR), milkv)
|
ifeq ($(MV_VENDOR), milkv)
|
||||||
${Q}cp -arf $(TOP_DIR)/device/$(MV_BOARD)/overlay/* $(BR_ROOTFS_DIR)/
|
${Q}cp -arf $(TOP_DIR)/device/$(MV_BOARD)/overlay/* $(BR_ROOTFS_DIR)/
|
||||||
${Q}cp -arf $(TOP_DIR)/device/$(MV_BOARD)/br_overlay/* $(BR_ROOTFS_DIR)/
|
${Q}cp -arf $(TOP_DIR)/device/$(MV_BOARD)/br_overlay/* $(BR_ROOTFS_DIR)/
|
||||||
@ -579,6 +589,14 @@ endif
|
|||||||
${Q}mkdir -p $(BR_OVERLAY_DIR)
|
${Q}mkdir -p $(BR_OVERLAY_DIR)
|
||||||
${Q}cp -arf $(BR_ROOTFS_DIR)/* $(BR_OVERLAY_DIR)
|
${Q}cp -arf $(BR_ROOTFS_DIR)/* $(BR_OVERLAY_DIR)
|
||||||
|
|
||||||
|
# create partition mounting points and move sytems to read-write partitions
|
||||||
|
ifeq ($(STORAGE_TYPE), spinand)
|
||||||
|
${Q}mkdir -p $(BR_OVERLAY_DIR)/mnt/cfg
|
||||||
|
${Q}mkdir -p $(BR_OVERLAY_DIR)/mnt/data
|
||||||
|
${Q}mkdir -p $(OUTPUT_DIR)/system
|
||||||
|
${Q}cp -arf $(BR_OVERLAY_DIR)/mnt/system/* $(OUTPUT_DIR)/system
|
||||||
|
endif
|
||||||
|
|
||||||
br-rootfs-pack:export TARGET_OUTPUT_DIR=$(BR_DIR)/output/$(BR_BOARD)
|
br-rootfs-pack:export TARGET_OUTPUT_DIR=$(BR_DIR)/output/$(BR_BOARD)
|
||||||
br-rootfs-pack:
|
br-rootfs-pack:
|
||||||
$(call print_target)
|
$(call print_target)
|
||||||
@ -587,8 +605,16 @@ br-rootfs-pack:
|
|||||||
# ${Q}rm -rf $(BR_ROOTFS_DIR)/*
|
# ${Q}rm -rf $(BR_ROOTFS_DIR)/*
|
||||||
${Q}rm -rf $(BR_MV_VENDOR_DIR)
|
${Q}rm -rf $(BR_MV_VENDOR_DIR)
|
||||||
# copy rootfs to rawimg dir
|
# copy rootfs to rawimg dir
|
||||||
|
ifeq ($(STORAGE_TYPE), spinand)
|
||||||
|
${Q}python3 $(COMMON_TOOLS_PATH)/spinand_tool/mkubiimg.py --ubionly $(FLASH_PARTITION_XML) ROOTFS $(TARGET_OUTPUT_DIR)/images/rootfs.squashfs $(OUTPUT_DIR)/rawimages/rootfs.spinand -b $(CONFIG_NANDFLASH_BLOCKSIZE) -p $(CONFIG_NANDFLASH_PAGESIZE)
|
||||||
|
$(call raw2cimg ,rootfs.$(STORAGE_TYPE))
|
||||||
|
else ifeq ($(STORAGE_TYPE), spinor)
|
||||||
|
${Q}cp $(TARGET_OUTPUT_DIR)/images/rootfs.squashfs $(OUTPUT_DIR)/rawimages/rootfs.$(STORAGE_TYPE)
|
||||||
|
$(call raw2cimg ,rootfs.$(STORAGE_TYPE))
|
||||||
|
else
|
||||||
${Q}cp $(TARGET_OUTPUT_DIR)/images/rootfs.ext4 $(OUTPUT_DIR)/rawimages/rootfs_ext4.$(STORAGE_TYPE)
|
${Q}cp $(TARGET_OUTPUT_DIR)/images/rootfs.ext4 $(OUTPUT_DIR)/rawimages/rootfs_ext4.$(STORAGE_TYPE)
|
||||||
$(call raw2cimg ,rootfs_ext4.$(STORAGE_TYPE))
|
$(call raw2cimg ,rootfs_ext4.$(STORAGE_TYPE))
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_BUILDROOT_FS),y)
|
ifeq ($(CONFIG_BUILDROOT_FS),y)
|
||||||
rootfs:br-rootfs-prepare
|
rootfs:br-rootfs-prepare
|
||||||
|
|||||||
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"ddr_cfg_list": [
|
||||||
|
"ddr2_1333_x16"
|
||||||
|
],
|
||||||
|
"board_information": "C906B + SPINAND 128MB + QFN SIP 64MB"
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
CONFIG_CHIP_cv1800b=y
|
||||||
|
CONFIG_BOARD_milkv_duo_spinand=y
|
||||||
|
CONFIG_DDR_CFG_ddr2_1333_x16=y
|
||||||
|
CONFIG_ARCH="riscv"
|
||||||
|
CONFIG_CROSS_COMPILE="riscv64-unknown-linux-musl-"
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
CONFIG_KERNEL_ENTRY_HACK=y
|
||||||
|
CONFIG_KERNEL_ENTRY_HACK_ADDR="0x80200000"
|
||||||
|
CONFIG_TOOLCHAIN_MUSL_RISCV64=y
|
||||||
|
CONFIG_FLASH_SIZE_SHRINK=y
|
||||||
|
CONFIG_NO_FB=y
|
||||||
|
CONFIG_NO_TP=y
|
||||||
|
CONFIG_DDR_64MB_SIZE=y
|
||||||
|
CONFIG_BOOT_IMAGE_SINGLE_DTB=y
|
||||||
|
CONFIG_STORAGE_TYPE_spinand=y
|
||||||
|
CONFIG_SENSOR_TUNING_PARAM_cv180x_src_sms_sc200ai=y
|
||||||
|
CONFIG_SENSOR_SMS_SC200AI=y
|
||||||
|
CONFIG_SENSOR_GCORE_GC2053=y
|
||||||
|
CONFIG_SENSOR_GCORE_GC2083=y
|
||||||
|
CONFIG_SENSOR_SMS_SC035HGS=y
|
||||||
|
CONFIG_SENSOR_OV_OV5647=y
|
||||||
|
CONFIG_UBOOT_2021_10=y
|
||||||
|
CONFIG_KERNEL_SRC_5.10=y
|
||||||
|
CONFIG_KERNEL_LZMA=y
|
||||||
|
CONFIG_SKIP_RAMDISK=y
|
||||||
|
# CONFIG_ROOTFS_OVERLAYFS is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_CVITRACER is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_GDBSERVER is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_LIBCRYPTO is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_LIBZ is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_OTASERVER is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_RSYSLOG is not set
|
||||||
|
CONFIG_TARGET_PACKAGE_CRONTABS=y
|
||||||
|
# CONFIG_TARGET_PACKAGE_GATORD is not set
|
||||||
|
CONFIG_TARGET_PACKAGE_WIFI=y
|
||||||
|
CONFIG_TARGET_PACKAGE_DROPBEAR=y
|
||||||
|
CONFIG_TARGET_PACKAGE_NTP=y
|
||||||
|
CONFIG_ENABLE_FREERTOS=y
|
||||||
|
CONFIG_ENABLE_RTOS_DUMP_PRINT=y
|
||||||
|
CONFIG_DUMP_PRINT_SZ_IDX=17
|
||||||
|
CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2=y
|
||||||
|
CONFIG_USB_OSDRV_CVITEK_GADGET=n
|
||||||
|
CONFIG_BUILDROOT_FS=y
|
||||||
|
CONFIG_BUILD_FOR_DEBUG=y
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
/dts-v1/;
|
||||||
|
#include "cv180x_base_riscv.dtsi"
|
||||||
|
#include "cv180x_asic_qfn.dtsi"
|
||||||
|
#include "cv180x_asic_spinand.dtsi"
|
||||||
|
#include "cv180x_default_memmap.dtsi"
|
||||||
|
|
||||||
|
&mipi_rx{
|
||||||
|
snsr-reset = <&portc 8 GPIO_ACTIVE_LOW>, <&portc 8 GPIO_ACTIVE_LOW>, <&portc 8 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi0 {
|
||||||
|
status = "okay";
|
||||||
|
flash@0 {
|
||||||
|
compatible = "winbond,w25n01", "spi-nand";
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
&spi2 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart4 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
status = "okay";
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/ {
|
||||||
|
|
||||||
|
};
|
||||||
@ -0,0 +1,271 @@
|
|||||||
|
# CONFIG_SWAP is not set
|
||||||
|
CONFIG_SYSVIPC=y
|
||||||
|
CONFIG_POSIX_MQUEUE=y
|
||||||
|
CONFIG_NO_HZ_IDLE=y
|
||||||
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
|
CONFIG_PREEMPT=y
|
||||||
|
CONFIG_IKCONFIG=n
|
||||||
|
CONFIG_IKCONFIG_PROC=n
|
||||||
|
CONFIG_LOG_BUF_SHIFT=15
|
||||||
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
|
# CONFIG_FHANDLE is not set
|
||||||
|
# CONFIG_BUG is not set
|
||||||
|
# CONFIG_BASE_FULL is not set
|
||||||
|
# CONFIG_EPOLL is not set
|
||||||
|
# CONFIG_SIGNALFD is not set
|
||||||
|
# CONFIG_TIMERFD is not set
|
||||||
|
# CONFIG_AIO is not set
|
||||||
|
# CONFIG_IO_URING is not set
|
||||||
|
# CONFIG_ADVISE_SYSCALLS is not set
|
||||||
|
CONFIG_EMBEDDED=y
|
||||||
|
# CONFIG_SLUB_DEBUG is not set
|
||||||
|
CONFIG_FORCE_MAX_ZONEORDER=10
|
||||||
|
CONFIG_ARCH_CVITEK=y
|
||||||
|
CONFIG_SOC_THEAD=y
|
||||||
|
# CONFIG_RISCV_SWIOTLB is not set
|
||||||
|
CONFIG_VECTOR=y
|
||||||
|
CONFIG_VECTOR_0_7=y
|
||||||
|
# CONFIG_COMPAT is not set
|
||||||
|
CONFIG_ARCH_CV180X=y
|
||||||
|
CONFIG_ARCH_CVITEK_CHIP="cv180x"
|
||||||
|
CONFIG_ARCH_CV180X_ASIC=y
|
||||||
|
CONFIG_COMPAT_32BIT_TIME=y
|
||||||
|
# CONFIG_STRICT_KERNEL_RWX is not set
|
||||||
|
CONFIG_MODULES=y
|
||||||
|
CONFIG_MODULE_FORCE_LOAD=y
|
||||||
|
CONFIG_MODULE_UNLOAD=y
|
||||||
|
CONFIG_BLOCK=y
|
||||||
|
CONFIG_BLK_SCSI_REQUEST=y
|
||||||
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
# CONFIG_MQ_IOSCHED_DEADLINE is not set
|
||||||
|
# CONFIG_MQ_IOSCHED_KYBER is not set
|
||||||
|
# CONFIG_COREDUMP is not set
|
||||||
|
CONFIG_CMA=y
|
||||||
|
CONFIG_NET=y
|
||||||
|
CONFIG_PACKET=y
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_MULTICAST=y
|
||||||
|
CONFIG_IP_PNP=y
|
||||||
|
CONFIG_IP_PNP_DHCP=y
|
||||||
|
# CONFIG_INET_DIAG is not set
|
||||||
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
|
CONFIG_IPV6_ROUTE_INFO=y
|
||||||
|
CONFIG_IPV6_OPTIMISTIC_DAD=y
|
||||||
|
# CONFIG_IPV6_SIT is not set
|
||||||
|
CONFIG_IPV6_MROUTE=y
|
||||||
|
CONFIG_CFG80211=y
|
||||||
|
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||||
|
CONFIG_CFG80211_WEXT=y
|
||||||
|
CONFIG_MAC80211=y
|
||||||
|
CONFIG_RFKILL=y
|
||||||
|
CONFIG_UEVENT_HELPER=y
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
|
CONFIG_DEVTMPFS_MOUNT=y
|
||||||
|
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||||
|
CONFIG_MTD=y
|
||||||
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
|
# CONFIG_MTD_OF_PARTS is not set
|
||||||
|
CONFIG_MTD_BLOCK=y
|
||||||
|
CONFIG_MTD_RAW_NAND=y
|
||||||
|
CONFIG_MTD_NAND_CVSNFC=y
|
||||||
|
CONFIG_MTD_SPI_NOR=y
|
||||||
|
CONFIG_SPI_CVI_SPIF=y
|
||||||
|
CONFIG_SCSI=y
|
||||||
|
CONFIG_SCSI_DMA=y
|
||||||
|
CONFIG_SCSI_PROC_FS=y
|
||||||
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
CONFIG_SCSI_LOWLEVEL=y
|
||||||
|
CONFIG_MTD_UBI=y
|
||||||
|
CONFIG_MTD_UBI_BLOCK=y
|
||||||
|
CONFIG_NETDEVICES=y
|
||||||
|
# CONFIG_NET_CORE is not set
|
||||||
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
|
# CONFIG_NET_VENDOR_AURORA is not set
|
||||||
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
# CONFIG_NET_VENDOR_CADENCE is not set
|
||||||
|
# CONFIG_NET_VENDOR_CAVIUM is not set
|
||||||
|
# CONFIG_NET_VENDOR_CORTINA is not set
|
||||||
|
# CONFIG_NET_VENDOR_EZCHIP is not set
|
||||||
|
# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||||
|
# CONFIG_NET_VENDOR_INTEL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICREL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICROSEMI is not set
|
||||||
|
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||||
|
# CONFIG_NET_VENDOR_NETRONOME is not set
|
||||||
|
# CONFIG_NET_VENDOR_NI is not set
|
||||||
|
# CONFIG_NET_VENDOR_QUALCOMM is not set
|
||||||
|
# CONFIG_NET_VENDOR_RENESAS is not set
|
||||||
|
# CONFIG_NET_VENDOR_ROCKER is not set
|
||||||
|
# CONFIG_NET_VENDOR_SAMSUNG is not set
|
||||||
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
|
# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
||||||
|
CONFIG_STMMAC_ETH=y
|
||||||
|
# CONFIG_DWMAC_GENERIC is not set
|
||||||
|
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||||
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
|
# CONFIG_USB_NET_DRIVERS is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ATH is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_BROADCOM is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_CISCO is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_INTEL is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_INTERSIL is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_MARVELL is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_MICROCHIP is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_RALINK is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_REALTEK is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_RSI is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ST is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_TI is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ICOMMSEMI is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_AICSEMI is not set
|
||||||
|
# CONFIG_VT is not set
|
||||||
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
|
CONFIG_SERIAL_8250=y
|
||||||
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_SERIAL_8250_NR_UARTS=5
|
||||||
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=5
|
||||||
|
CONFIG_SERIAL_8250_DW=y
|
||||||
|
CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
|
||||||
|
CONFIG_HW_RANDOM=y
|
||||||
|
CONFIG_I2C=y
|
||||||
|
CONFIG_I2C_CHARDEV=y
|
||||||
|
CONFIG_I2C_MUX=y
|
||||||
|
CONFIG_I2C_DESIGNWARE_PLATFORM=y
|
||||||
|
CONFIG_SPI=y
|
||||||
|
# CONFIG_PTP_1588_CLOCK is not set
|
||||||
|
CONFIG_PINCTRL=y
|
||||||
|
CONFIG_CVITEK_PINCTRL_CV1835=y
|
||||||
|
CONFIG_GPIOLIB=y
|
||||||
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
CONFIG_GPIO_DWAPB=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_THERMAL=y
|
||||||
|
CONFIG_THERMAL_NETLINK=y
|
||||||
|
CONFIG_THERMAL_WRITABLE_TRIPS=y
|
||||||
|
CONFIG_THERMAL_EMULATION=y
|
||||||
|
CONFIG_CV180X_THERMAL=m
|
||||||
|
CONFIG_WATCHDOG=y
|
||||||
|
CONFIG_MEDIA_SUPPORT=n
|
||||||
|
CONFIG_VIDEO_V4L2_SUBDEV_API=n
|
||||||
|
# CONFIG_DVB_NET is not set
|
||||||
|
# CONFIG_DVB_DYNAMIC_MINORS is not set
|
||||||
|
CONFIG_V4L_PLATFORM_DRIVERS=n
|
||||||
|
CONFIG_V4L_MEM2MEM_DRIVERS=n
|
||||||
|
CONFIG_VIDEO_MEM2MEM_DEINTERLACE=n
|
||||||
|
CONFIG_VIDEO_CVITEK_CIF=m
|
||||||
|
CONFIG_VIDEO_CVITEK_SNS_I2C=m
|
||||||
|
CONFIG_FB=y
|
||||||
|
CONFIG_FB_CVITEK=m
|
||||||
|
CONFIG_FB_TFT=y
|
||||||
|
CONFIG_FB_TFT_SSD1306=m
|
||||||
|
CONFIG_SOUND=y
|
||||||
|
CONFIG_SND=y
|
||||||
|
# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||||
|
# CONFIG_SND_PROC_FS is not set
|
||||||
|
# CONFIG_SND_DRIVERS is not set
|
||||||
|
CONFIG_SND_HDA_PREALLOC_SIZE=1
|
||||||
|
# CONFIG_SND_SPI is not set
|
||||||
|
# CONFIG_SND_USB is not set
|
||||||
|
CONFIG_SND_SOC=y
|
||||||
|
CONFIG_SND_SOC_CV182XA_CV182XAADC=y
|
||||||
|
CONFIG_SND_SOC_CV182XA_CV182XADAC=y
|
||||||
|
CONFIG_SND_CV1835_I2S=y
|
||||||
|
CONFIG_SND_SOC_CV182XAADC=y
|
||||||
|
CONFIG_SND_SOC_CV182XADAC=y
|
||||||
|
CONFIG_SND_SOC_CV1835_USE_AUDIO_PLL=y
|
||||||
|
CONFIG_CV1835_I2S_SUBSYS=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_STORAGE=y
|
||||||
|
CONFIG_USB_DWC2=y
|
||||||
|
CONFIG_USB_GADGET=y
|
||||||
|
CONFIG_USB_LIBCOMPOSITE=y
|
||||||
|
CONFIG_USB_F_ACM=y
|
||||||
|
CONFIG_USB_U_SERIAL=y
|
||||||
|
CONFIG_USB_U_ETHER=y
|
||||||
|
CONFIG_USB_U_AUDIO=y
|
||||||
|
CONFIG_USB_F_SERIAL=y
|
||||||
|
CONFIG_USB_F_ECM=y
|
||||||
|
CONFIG_USB_F_EEM=y
|
||||||
|
CONFIG_USB_F_RNDIS=y
|
||||||
|
CONFIG_USB_F_MASS_STORAGE=y
|
||||||
|
CONFIG_USB_F_FS=y
|
||||||
|
CONFIG_USB_F_UAC1=y
|
||||||
|
CONFIG_USB_F_UVC=y
|
||||||
|
CONFIG_USB_CONFIGFS=y
|
||||||
|
CONFIG_USB_CONFIGFS_SERIAL=y
|
||||||
|
CONFIG_USB_CONFIGFS_RNDIS=y
|
||||||
|
CONFIG_USB_CONFIGFS_ACM=y
|
||||||
|
CONFIG_USB_ROLE_SWITCH=y
|
||||||
|
CONFIG_MMC=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_PLTFM=y
|
||||||
|
CONFIG_MMC_SDHCI_CVI=y
|
||||||
|
CONFIG_RTC_CLASS=y
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_DW_DMAC_CVITEK=y
|
||||||
|
# CONFIG_VIRTIO_MENU is not set
|
||||||
|
CONFIG_STAGING=y
|
||||||
|
CONFIG_ION=y
|
||||||
|
CONFIG_ION_SYSTEM_HEAP=y
|
||||||
|
CONFIG_ION_CARVEOUT_HEAP=y
|
||||||
|
CONFIG_ION_CMA_HEAP=y
|
||||||
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
|
CONFIG_CV1835_SYSDMA_REMAP=y
|
||||||
|
CONFIG_CVI_MAILBOX=y
|
||||||
|
CONFIG_PWM=y
|
||||||
|
CONFIG_SIFIVE_PLIC=y
|
||||||
|
CONFIG_ANDROID=y
|
||||||
|
CONFIG_EXT3_FS=y
|
||||||
|
CONFIG_EXT4_DEBUG=y
|
||||||
|
# CONFIG_MANDATORY_FILE_LOCKING is not set
|
||||||
|
CONFIG_VFAT_FS=y
|
||||||
|
# CONFIG_PROC_PAGE_MONITOR is not set
|
||||||
|
CONFIG_TMPFS=y
|
||||||
|
CONFIG_JFFS2_FS=y
|
||||||
|
CONFIG_JFFS2_FS_WBUF_VERIFY=y
|
||||||
|
CONFIG_UBIFS_FS=y
|
||||||
|
CONFIG_SQUASHFS=y
|
||||||
|
CONFIG_SQUASHFS_XZ=y
|
||||||
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V4=y
|
||||||
|
CONFIG_ROOT_NFS=y
|
||||||
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
|
CONFIG_NLS_ISO8859_1=y
|
||||||
|
CONFIG_NLS_ISO8859_2=y
|
||||||
|
CONFIG_NLS_ISO8859_3=y
|
||||||
|
CONFIG_CRYPTO_ECDH=y
|
||||||
|
CONFIG_CRYPTO_ECB=y
|
||||||
|
CONFIG_CRYPTO_SHA256=y
|
||||||
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
# CONFIG_XZ_DEC_X86 is not set
|
||||||
|
# CONFIG_XZ_DEC_POWERPC is not set
|
||||||
|
# CONFIG_XZ_DEC_IA64 is not set
|
||||||
|
# CONFIG_XZ_DEC_ARMTHUMB is not set
|
||||||
|
# CONFIG_XZ_DEC_SPARC is not set
|
||||||
|
CONFIG_DMA_CMA=y
|
||||||
|
CONFIG_CMA_SIZE_MBYTES=0
|
||||||
|
CONFIG_PRINTK_TIME=y
|
||||||
|
CONFIG_DYNAMIC_DEBUG=y
|
||||||
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
|
# CONFIG_FRAME_POINTER is not set
|
||||||
|
CONFIG_DEBUG_FS=y
|
||||||
|
# CONFIG_DEBUG_MISC is not set
|
||||||
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
# CONFIG_FTRACE is not set
|
||||||
|
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||||
82
build/boards/cv180x/cv1800b_milkv_duo_spinand/memmap.py
Normal file
82
build/boards/cv180x/cv1800b_milkv_duo_spinand/memmap.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
SIZE_1M = 0x100000
|
||||||
|
SIZE_1K = 1024
|
||||||
|
|
||||||
|
|
||||||
|
# Only attributes in class MemoryMap are generated to .h
|
||||||
|
class MemoryMap:
|
||||||
|
# No prefix "CVIMMAP_" for the items in _no_prefix[]
|
||||||
|
_no_prefix = [
|
||||||
|
"CONFIG_SYS_TEXT_BASE" # u-boot's CONFIG_SYS_TEXT_BASE is used without CPP.
|
||||||
|
]
|
||||||
|
|
||||||
|
DRAM_BASE = 0x80000000
|
||||||
|
DRAM_SIZE = 64 * SIZE_1M
|
||||||
|
|
||||||
|
# ==============
|
||||||
|
# C906L FreeRTOS
|
||||||
|
# ==============
|
||||||
|
FREERTOS_SIZE = 768 * SIZE_1K
|
||||||
|
# FreeRTOS is at the end of DRAM
|
||||||
|
FREERTOS_ADDR = DRAM_BASE + DRAM_SIZE - FREERTOS_SIZE
|
||||||
|
FSBL_C906L_START_ADDR = FREERTOS_ADDR
|
||||||
|
|
||||||
|
# ==============================
|
||||||
|
# OpenSBI | arm-trusted-firmware
|
||||||
|
# ==============================
|
||||||
|
# Monitor is at the begining of DRAM
|
||||||
|
MONITOR_ADDR = DRAM_BASE
|
||||||
|
|
||||||
|
ATF_SIZE = 512 * SIZE_1K
|
||||||
|
OPENSBI_SIZE = 512 * SIZE_1K
|
||||||
|
OPENSBI_FDT_ADDR = MONITOR_ADDR + OPENSBI_SIZE
|
||||||
|
|
||||||
|
# =========================
|
||||||
|
# memory@DRAM_BASE in .dts.
|
||||||
|
# =========================
|
||||||
|
# Ignore the area of FreeRTOS in u-boot and kernel
|
||||||
|
KERNEL_MEMORY_ADDR = DRAM_BASE
|
||||||
|
KERNEL_MEMORY_SIZE = DRAM_SIZE - FREERTOS_SIZE
|
||||||
|
|
||||||
|
# =================
|
||||||
|
# Multimedia buffer. Used by u-boot/kernel/FreeRTOS
|
||||||
|
# =================
|
||||||
|
ION_SIZE = 26.80078125 * SIZE_1M
|
||||||
|
H26X_BITSTREAM_SIZE = 0 * SIZE_1M
|
||||||
|
H26X_ENC_BUFF_SIZE = 0
|
||||||
|
ISP_MEM_BASE_SIZE = 0 * SIZE_1M
|
||||||
|
BOOTLOGO_SIZE = 0 * SIZE_1M
|
||||||
|
FREERTOS_RESERVED_ION_SIZE = H26X_BITSTREAM_SIZE + H26X_ENC_BUFF_SIZE + ISP_MEM_BASE_SIZE + BOOTLOGO_SIZE
|
||||||
|
|
||||||
|
# ION after FreeRTOS
|
||||||
|
ION_ADDR = FREERTOS_ADDR - ION_SIZE
|
||||||
|
|
||||||
|
# Buffers of the fast image are inside the ION buffer
|
||||||
|
H26X_BITSTREAM_ADDR = ION_ADDR
|
||||||
|
H26X_ENC_BUFF_ADDR = H26X_BITSTREAM_ADDR + H26X_BITSTREAM_SIZE
|
||||||
|
ISP_MEM_BASE_ADDR = H26X_ENC_BUFF_ADDR + H26X_ENC_BUFF_SIZE
|
||||||
|
|
||||||
|
# Boot logo is after ISP buffer and inside the ION buffer
|
||||||
|
BOOTLOGO_ADDR = ISP_MEM_BASE_ADDR + ISP_MEM_BASE_SIZE
|
||||||
|
|
||||||
|
assert BOOTLOGO_ADDR + BOOTLOGO_SIZE <= ION_ADDR + ION_SIZE
|
||||||
|
|
||||||
|
# ===================
|
||||||
|
# FSBL and u-boot-2021
|
||||||
|
# ===================
|
||||||
|
CVI_UPDATE_HEADER_SIZE = SIZE_1K
|
||||||
|
UIMAG_SIZE = 15 * SIZE_1M
|
||||||
|
|
||||||
|
# kernel image loading buffer
|
||||||
|
UIMAG_ADDR = DRAM_BASE + 20 * SIZE_1M
|
||||||
|
CVI_UPDATE_HEADER_ADDR = UIMAG_ADDR - CVI_UPDATE_HEADER_SIZE
|
||||||
|
|
||||||
|
# FSBL decompress buffer
|
||||||
|
FSBL_UNZIP_ADDR = UIMAG_ADDR
|
||||||
|
FSBL_UNZIP_SIZE = UIMAG_SIZE
|
||||||
|
|
||||||
|
assert UIMAG_ADDR + UIMAG_SIZE <= ION_ADDR
|
||||||
|
|
||||||
|
# u-boot's run address and entry point
|
||||||
|
CONFIG_SYS_TEXT_BASE = DRAM_BASE + 2 * SIZE_1M
|
||||||
|
# u-boot's init stack point is only used before board_init_f()
|
||||||
|
CONFIG_SYS_INIT_SP_ADDR = UIMAG_ADDR + UIMAG_SIZE
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
<physical_partition type="spinand">
|
||||||
|
<partition label="fip" size_in_kb="2560" file="fip.bin"/>
|
||||||
|
<partition label="BOOT" size_in_kb="6144" file="boot.spinand"/>
|
||||||
|
<partition label="ENV" size_in_kb="128" file="" />
|
||||||
|
<partition label="ENV_BAK" size_in_kb="128" file="" />
|
||||||
|
<partition label="ROOTFS" size_in_kb="40960" file="rootfs.spinand" />
|
||||||
|
<partition label="SYSTEM" size_in_kb="71680" file="system.spinand" mountpoint="/mnt/system" type="ubifs" />
|
||||||
|
<partition label="CFG" size_in_kb="4096" file="cfg.spinand" mountpoint="/mnt/cfg" type="ubifs" />
|
||||||
|
<partition label="DATA" file="" mountpoint="/mnt/data" type="ubifs" />
|
||||||
|
</physical_partition>
|
||||||
30
build/boards/cv180x/cv1800b_milkv_duo_spinand/rootfs_script/clean_rootfs.sh
Executable file
30
build/boards/cv180x/cv1800b_milkv_duo_spinand/rootfs_script/clean_rootfs.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SYSTEM_DIR=$1
|
||||||
|
rm -rf $SYSTEM_DIR/mnt/system/usr
|
||||||
|
rm -rf $SYSTEM_DIR/mnt/system/lib
|
||||||
|
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S01syslogd
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S02klogd
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S02sysctl
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S20urandom
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S40network
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S23ntp
|
||||||
|
|
||||||
|
rm -rf $SYSTEM_DIR/bin/ntpd
|
||||||
|
rm -rf $SYSTEM_DIR/mnt/cfg/secure.img
|
||||||
|
|
||||||
|
#del cv181x_mipi_tx.ko
|
||||||
|
rm -rf $SYSTEM_DIR/mnt/system/ko/cv181x_mipi_tx.ko
|
||||||
|
sed -i "/cv181x_mipi_tx.ko/d" $SYSTEM_DIR/mnt/system/ko/loadsystemko.sh
|
||||||
|
|
||||||
|
if [ $BUILD_FOR_DEBUG != "y" ]
|
||||||
|
then
|
||||||
|
#del dmesg cmd if CONFIG_PRINTK=n
|
||||||
|
#sed -i "/dmesg/d" $SYSTEM_DIR/mnt/system/ko/loadsystemko.sh
|
||||||
|
|
||||||
|
#del debugfs node
|
||||||
|
sed -i "/debugfs/d" $SYSTEM_DIR/etc/fstab
|
||||||
|
fi
|
||||||
|
|
||||||
|
du -sh $SYSTEM_DIR/* |sort -rh
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
int cvi_board_init(void)
|
||||||
|
{
|
||||||
|
// sensor mclk reset
|
||||||
|
PINMUX_CONFIG(PAD_MIPIRX0P, CAM_MCLK0); // Camera MCLK0
|
||||||
|
PINMUX_CONFIG(PAD_MIPIRX1N, XGPIOC_8); // Camera Reset
|
||||||
|
|
||||||
|
// all default gpio
|
||||||
|
PINMUX_CONFIG(SD0_PWR_EN, XGPIOA_14); // Duo Pin 19
|
||||||
|
PINMUX_CONFIG(SPK_EN, XGPIOA_15); // Duo Pin 20
|
||||||
|
//PINMUX_CONFIG(SPINOR_MISO, XGPIOA_23); // Duo Pin 21
|
||||||
|
//PINMUX_CONFIG(SPINOR_CS_X, XGPIOA_24); // Duo Pin 22
|
||||||
|
//PINMUX_CONFIG(SPINOR_SCK, XGPIOA_22); // Duo Pin 24
|
||||||
|
//PINMUX_CONFIG(SPINOR_MOSI, XGPIOA_25); // Duo Pin 25
|
||||||
|
//PINMUX_CONFIG(SPINOR_WP_X, XGPIOA_27); // Duo Pin 26
|
||||||
|
//PINMUX_CONFIG(SPINOR_HOLD_X, XGPIOA_26); // Duo Pin 27
|
||||||
|
PINMUX_CONFIG(PWR_SEQ2, PWR_GPIO_4); // Duo Pin 29
|
||||||
|
|
||||||
|
// ADC pins set to gpio
|
||||||
|
PINMUX_CONFIG(ADC1, XGPIOB_3); // ADC1
|
||||||
|
PINMUX_CONFIG(USB_VBUS_DET, XGPIOB_6); // ADC2
|
||||||
|
|
||||||
|
// I2C0
|
||||||
|
PINMUX_CONFIG(IIC0_SCL, IIC0_SCL);
|
||||||
|
PINMUX_CONFIG(IIC0_SDA, IIC0_SDA);
|
||||||
|
|
||||||
|
// I2C1
|
||||||
|
PINMUX_CONFIG(PAD_MIPIRX1P, IIC1_SDA);
|
||||||
|
PINMUX_CONFIG(PAD_MIPIRX0N, IIC1_SCL);
|
||||||
|
|
||||||
|
// PWM
|
||||||
|
PINMUX_CONFIG(SD1_D2, PWM_5);
|
||||||
|
PINMUX_CONFIG(SD1_D1, PWM_6);
|
||||||
|
|
||||||
|
// UART 4
|
||||||
|
PINMUX_CONFIG(SD1_GPIO1, UART4_TX);
|
||||||
|
PINMUX_CONFIG(SD1_GPIO0, UART4_RX);
|
||||||
|
|
||||||
|
// SPI
|
||||||
|
PINMUX_CONFIG(SD1_CLK, SPI2_SCK);
|
||||||
|
PINMUX_CONFIG(SD1_CMD, SPI2_SDO);
|
||||||
|
PINMUX_CONFIG(SD1_D0, SPI2_SDI);
|
||||||
|
PINMUX_CONFIG(SD1_D3, SPI2_CS_X);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
*VO control GPIOs
|
||||||
|
*/
|
||||||
|
#define VO_GPIO_RESET_PORT portb
|
||||||
|
#define VO_GPIO_RESET_INDEX 5
|
||||||
|
#define VO_GPIO_RESET_ACTIVE GPIO_ACTIVE_LOW
|
||||||
|
#define VO_GPIO_PWM_PORT portb
|
||||||
|
#define VO_GPIO_PWM_INDEX 4
|
||||||
|
#define VO_GPIO_PWM_ACTIVE GPIO_ACTIVE_HIGH
|
||||||
|
#define VO_GPIO_POWER_CT_PORT portb
|
||||||
|
#define VO_GPIO_POWER_CT_INDEX 3
|
||||||
|
#define VO_GPIO_POWER_CT_ACTIVE GPIO_ACTIVE_HIGH
|
||||||
|
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
CONFIG_RISCV=y
|
||||||
|
CONFIG_SYS_MALLOC_F_LEN=0x2000
|
||||||
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="cv180x_asic"
|
||||||
|
CONFIG_IDENT_STRING=" cvitek_cv180x"
|
||||||
|
CONFIG_ARCH_RV64I=y
|
||||||
|
CONFIG_RISCV_SMODE=y
|
||||||
|
CONFIG_TARGET_CVITEK_CV180X=y
|
||||||
|
CONFIG_DISTRO_DEFAULTS=y
|
||||||
|
CONFIG_FIT=y
|
||||||
|
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
|
||||||
|
CONFIG_BOOTDELAY=1
|
||||||
|
CONFIG_SYS_PROMPT="cv180x_c906# "
|
||||||
|
# CONFIG_CMD_CONSOLE is not set
|
||||||
|
# CONFIG_CMD_XIMG is not set
|
||||||
|
# CONFIG_CMD_EDITENV is not set
|
||||||
|
# CONFIG_CMD_CRC32 is not set
|
||||||
|
# CONFIG_CMD_LZMADEC is not set
|
||||||
|
# CONFIG_CMD_UNLZ4 is not set
|
||||||
|
# CONFIG_CMD_UNZIP is not set
|
||||||
|
# CONFIG_CMD_LOADS is not set
|
||||||
|
CONFIG_CMD_MMC=y
|
||||||
|
# CONFIG_CMD_ITEST is not set
|
||||||
|
CONFIG_CMD_CACHE=y
|
||||||
|
CONFIG_CMD_CVI_SD_UPDATE=y
|
||||||
|
# CONFIG_ISO_PARTITION is not set
|
||||||
|
# CONFIG_EFI_PARTITION is not set
|
||||||
|
CONFIG_NET_RANDOM_ETHADDR=y
|
||||||
|
CONFIG_MMC=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_SDMA=y
|
||||||
|
CONFIG_MMC_SDHCI_CVITEK=y
|
||||||
|
CONFIG_MTD=y
|
||||||
|
# CONFIG_SPI_FLASH is not set
|
||||||
|
# CONFIG_PHY_SMSC is not set
|
||||||
|
CONFIG_DM_ETH=y
|
||||||
|
CONFIG_ETH_DESIGNWARE=y
|
||||||
|
CONFIG_PHY_CVITEK=y
|
||||||
|
CONFIG_SYS_NS16550=y
|
||||||
|
CONFIG_SPI=y
|
||||||
|
CONFIG_LZ4=y
|
||||||
|
CONFIG_LZMA=y
|
||||||
|
# CONFIG_TOOLS_LIBCRYPTO is not set
|
||||||
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
|
CONFIG_NAND_BOOT=y
|
||||||
|
CONFIG_NAND_SUPPORT=y
|
||||||
|
CONFIG_MTD_RAW_NAND=y
|
||||||
|
CONFIG_NAND_FLASH_CVSNFC_V3=y
|
||||||
|
CONFIG_ENV_IS_IN_NAND=y
|
||||||
|
|
||||||
6
build/boards/cv180x/cv1800b_milkv_duo_spinor/config.json
Normal file
6
build/boards/cv180x/cv1800b_milkv_duo_spinor/config.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"ddr_cfg_list": [
|
||||||
|
"ddr2_1333_x16"
|
||||||
|
],
|
||||||
|
"board_information": "C906B + SPINOR 32MB + QFN SIP 64MB"
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
CONFIG_CHIP_cv1800b=y
|
||||||
|
CONFIG_BOARD_milkv_duo_spinor=y
|
||||||
|
CONFIG_DDR_CFG_ddr2_1333_x16=y
|
||||||
|
CONFIG_ARCH="riscv"
|
||||||
|
CONFIG_CROSS_COMPILE="riscv64-unknown-linux-musl-"
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
CONFIG_KERNEL_ENTRY_HACK=y
|
||||||
|
CONFIG_KERNEL_ENTRY_HACK_ADDR="0x80200000"
|
||||||
|
CONFIG_TOOLCHAIN_MUSL_RISCV64=y
|
||||||
|
CONFIG_FLASH_SIZE_SHRINK=y
|
||||||
|
CONFIG_NO_FB=y
|
||||||
|
CONFIG_NO_TP=y
|
||||||
|
CONFIG_DDR_64MB_SIZE=y
|
||||||
|
CONFIG_BOOT_IMAGE_SINGLE_DTB=y
|
||||||
|
CONFIG_STORAGE_TYPE_spinor=y
|
||||||
|
CONFIG_SENSOR_TUNING_PARAM_cv180x_src_sms_sc200ai=y
|
||||||
|
CONFIG_SENSOR_SMS_SC200AI=y
|
||||||
|
CONFIG_SENSOR_GCORE_GC2053=y
|
||||||
|
CONFIG_SENSOR_GCORE_GC2083=y
|
||||||
|
CONFIG_SENSOR_SMS_SC035HGS=y
|
||||||
|
CONFIG_SENSOR_OV_OV5647=y
|
||||||
|
CONFIG_UBOOT_2021_10=y
|
||||||
|
CONFIG_KERNEL_SRC_5.10=y
|
||||||
|
CONFIG_KERNEL_LZMA=y
|
||||||
|
CONFIG_SKIP_RAMDISK=y
|
||||||
|
# CONFIG_ROOTFS_OVERLAYFS is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_CVITRACER is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_GDBSERVER is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_LIBCRYPTO is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_LIBZ is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_OTASERVER is not set
|
||||||
|
# CONFIG_TARGET_PACKAGE_RSYSLOG is not set
|
||||||
|
CONFIG_TARGET_PACKAGE_CRONTABS=y
|
||||||
|
# CONFIG_TARGET_PACKAGE_GATORD is not set
|
||||||
|
CONFIG_TARGET_PACKAGE_WIFI=y
|
||||||
|
CONFIG_TARGET_PACKAGE_DROPBEAR=y
|
||||||
|
CONFIG_TARGET_PACKAGE_NTP=y
|
||||||
|
CONFIG_ENABLE_FREERTOS=y
|
||||||
|
CONFIG_ENABLE_RTOS_DUMP_PRINT=y
|
||||||
|
CONFIG_DUMP_PRINT_SZ_IDX=17
|
||||||
|
CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2=y
|
||||||
|
CONFIG_USB_OSDRV_CVITEK_GADGET=n
|
||||||
|
CONFIG_BUILDROOT_FS=y
|
||||||
|
CONFIG_BUILD_FOR_DEBUG=y
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
/dts-v1/;
|
||||||
|
#include "cv180x_base_riscv.dtsi"
|
||||||
|
#include "cv180x_asic_qfn.dtsi"
|
||||||
|
#include "cv180x_asic_sd.dtsi"
|
||||||
|
#include "cv180x_default_memmap.dtsi"
|
||||||
|
|
||||||
|
&mipi_rx{
|
||||||
|
snsr-reset = <&portc 8 GPIO_ACTIVE_LOW>, <&portc 8 GPIO_ACTIVE_LOW>, <&portc 8 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi0 {
|
||||||
|
status = "okay";
|
||||||
|
flash@0 {
|
||||||
|
compatible = "winbond,w25q256", "jedec,spi-nor";
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi2 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart4 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
status = "okay";
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/ {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,240 @@
|
|||||||
|
CONFIG_SYSVIPC=y
|
||||||
|
CONFIG_POSIX_MQUEUE=y
|
||||||
|
CONFIG_NO_HZ_IDLE=y
|
||||||
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
|
CONFIG_PREEMPT=y
|
||||||
|
CONFIG_LOG_BUF_SHIFT=15
|
||||||
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
|
# CONFIG_FHANDLE is not set
|
||||||
|
# CONFIG_BUG is not set
|
||||||
|
# CONFIG_BASE_FULL is not set
|
||||||
|
# CONFIG_EPOLL is not set
|
||||||
|
# CONFIG_SIGNALFD is not set
|
||||||
|
# CONFIG_TIMERFD is not set
|
||||||
|
# CONFIG_AIO is not set
|
||||||
|
# CONFIG_IO_URING is not set
|
||||||
|
# CONFIG_ADVISE_SYSCALLS is not set
|
||||||
|
CONFIG_EMBEDDED=y
|
||||||
|
# CONFIG_SLUB_DEBUG is not set
|
||||||
|
CONFIG_FORCE_MAX_ZONEORDER=10
|
||||||
|
CONFIG_ARCH_CVITEK=y
|
||||||
|
CONFIG_SOC_THEAD=y
|
||||||
|
# CONFIG_RISCV_SWIOTLB is not set
|
||||||
|
CONFIG_VECTOR=y
|
||||||
|
CONFIG_VECTOR_0_7=y
|
||||||
|
# CONFIG_COMPAT is not set
|
||||||
|
CONFIG_ARCH_CV180X=y
|
||||||
|
CONFIG_ARCH_CVITEK_CHIP="cv180x"
|
||||||
|
CONFIG_ARCH_CV180X_ASIC=y
|
||||||
|
CONFIG_COMPAT_32BIT_TIME=y
|
||||||
|
# CONFIG_STRICT_KERNEL_RWX is not set
|
||||||
|
CONFIG_MODULES=y
|
||||||
|
CONFIG_MODULE_FORCE_LOAD=y
|
||||||
|
CONFIG_MODULE_UNLOAD=y
|
||||||
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
# CONFIG_MQ_IOSCHED_DEADLINE is not set
|
||||||
|
# CONFIG_MQ_IOSCHED_KYBER is not set
|
||||||
|
# CONFIG_COREDUMP is not set
|
||||||
|
CONFIG_CMA=y
|
||||||
|
CONFIG_NET=y
|
||||||
|
CONFIG_PACKET=y
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_MULTICAST=y
|
||||||
|
CONFIG_IP_PNP=y
|
||||||
|
CONFIG_IP_PNP_DHCP=y
|
||||||
|
# CONFIG_INET_DIAG is not set
|
||||||
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
|
CONFIG_IPV6_ROUTE_INFO=y
|
||||||
|
CONFIG_IPV6_OPTIMISTIC_DAD=y
|
||||||
|
# CONFIG_IPV6_SIT is not set
|
||||||
|
CONFIG_IPV6_MROUTE=y
|
||||||
|
CONFIG_CFG80211=y
|
||||||
|
CONFIG_CFG80211_WEXT=y
|
||||||
|
CONFIG_MAC80211=y
|
||||||
|
CONFIG_RFKILL=y
|
||||||
|
CONFIG_RFKILL_INPUT=y
|
||||||
|
CONFIG_UEVENT_HELPER=y
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
|
CONFIG_DEVTMPFS_MOUNT=y
|
||||||
|
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||||
|
CONFIG_MTD=y
|
||||||
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
|
# CONFIG_MTD_OF_PARTS is not set
|
||||||
|
CONFIG_MTD_BLOCK=y
|
||||||
|
CONFIG_MTD_SPI_NOR=y
|
||||||
|
CONFIG_SPI_CVI_SPIF=y
|
||||||
|
CONFIG_EEPROM_93CX6=m
|
||||||
|
CONFIG_SCSI=y
|
||||||
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
CONFIG_NETDEVICES=y
|
||||||
|
# CONFIG_NET_CORE is not set
|
||||||
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
|
# CONFIG_NET_VENDOR_AURORA is not set
|
||||||
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
# CONFIG_NET_VENDOR_CADENCE is not set
|
||||||
|
# CONFIG_NET_VENDOR_CAVIUM is not set
|
||||||
|
# CONFIG_NET_VENDOR_CORTINA is not set
|
||||||
|
# CONFIG_NET_VENDOR_EZCHIP is not set
|
||||||
|
# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||||
|
# CONFIG_NET_VENDOR_INTEL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICREL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICROSEMI is not set
|
||||||
|
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||||
|
# CONFIG_NET_VENDOR_NETRONOME is not set
|
||||||
|
# CONFIG_NET_VENDOR_NI is not set
|
||||||
|
# CONFIG_NET_VENDOR_QUALCOMM is not set
|
||||||
|
# CONFIG_NET_VENDOR_RENESAS is not set
|
||||||
|
# CONFIG_NET_VENDOR_ROCKER is not set
|
||||||
|
# CONFIG_NET_VENDOR_SAMSUNG is not set
|
||||||
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
|
# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
||||||
|
CONFIG_STMMAC_ETH=y
|
||||||
|
# CONFIG_DWMAC_GENERIC is not set
|
||||||
|
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||||
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
|
# CONFIG_USB_NET_DRIVERS is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ATH is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_BROADCOM is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_CISCO is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_INTEL is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_INTERSIL is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_MARVELL is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_MICROCHIP is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_RALINK is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_REALTEK is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_RSI is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ST is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_TI is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_ICOMMSEMI is not set
|
||||||
|
# CONFIG_WLAN_VENDOR_AICSEMI is not set
|
||||||
|
# CONFIG_VT is not set
|
||||||
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
|
CONFIG_SERIAL_8250=y
|
||||||
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_SERIAL_8250_NR_UARTS=5
|
||||||
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=5
|
||||||
|
CONFIG_SERIAL_8250_DW=y
|
||||||
|
CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
|
||||||
|
CONFIG_HW_RANDOM=y
|
||||||
|
CONFIG_I2C=y
|
||||||
|
CONFIG_I2C_CHARDEV=y
|
||||||
|
CONFIG_I2C_MUX=y
|
||||||
|
CONFIG_I2C_DESIGNWARE_PLATFORM=y
|
||||||
|
CONFIG_SPI=y
|
||||||
|
CONFIG_SPI_DESIGNWARE=y
|
||||||
|
CONFIG_SPI_DW_MMIO=y
|
||||||
|
CONFIG_SPI_SPIDEV=y
|
||||||
|
# CONFIG_PTP_1588_CLOCK is not set
|
||||||
|
CONFIG_PINCTRL=y
|
||||||
|
CONFIG_CVITEK_PINCTRL_CV1835=y
|
||||||
|
CONFIG_GPIOLIB=y
|
||||||
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
CONFIG_GPIO_DWAPB=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_THERMAL=y
|
||||||
|
CONFIG_THERMAL_NETLINK=y
|
||||||
|
CONFIG_THERMAL_WRITABLE_TRIPS=y
|
||||||
|
CONFIG_THERMAL_EMULATION=y
|
||||||
|
CONFIG_CV180X_THERMAL=m
|
||||||
|
CONFIG_WATCHDOG=y
|
||||||
|
CONFIG_FB=y
|
||||||
|
CONFIG_FB_CVITEK=m
|
||||||
|
CONFIG_SOUND=y
|
||||||
|
CONFIG_SND=y
|
||||||
|
# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||||
|
# CONFIG_SND_PROC_FS is not set
|
||||||
|
# CONFIG_SND_DRIVERS is not set
|
||||||
|
CONFIG_SND_HDA_PREALLOC_SIZE=1
|
||||||
|
# CONFIG_SND_SPI is not set
|
||||||
|
# CONFIG_SND_USB is not set
|
||||||
|
CONFIG_SND_SOC=y
|
||||||
|
CONFIG_SND_SOC_CV182XA_CV182XAADC=y
|
||||||
|
CONFIG_SND_SOC_CV182XA_CV182XADAC=y
|
||||||
|
CONFIG_SND_CV1835_I2S=y
|
||||||
|
CONFIG_SND_SOC_CV182XAADC=y
|
||||||
|
CONFIG_SND_SOC_CV182XADAC=y
|
||||||
|
CONFIG_SND_SOC_CV1835_USE_AUDIO_PLL=y
|
||||||
|
CONFIG_CV1835_I2S_SUBSYS=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_STORAGE=y
|
||||||
|
CONFIG_USB_DWC2=y
|
||||||
|
CONFIG_USB_GADGET=y
|
||||||
|
CONFIG_USB_CONFIGFS=y
|
||||||
|
CONFIG_USB_CONFIGFS_SERIAL=y
|
||||||
|
CONFIG_USB_CONFIGFS_ACM=y
|
||||||
|
CONFIG_USB_CONFIGFS_RNDIS=y
|
||||||
|
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
|
||||||
|
CONFIG_USB_ROLE_SWITCH=y
|
||||||
|
CONFIG_MMC=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_PLTFM=y
|
||||||
|
CONFIG_MMC_SDHCI_CVI=y
|
||||||
|
CONFIG_RTC_CLASS=y
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_DW_DMAC_CVITEK=y
|
||||||
|
# CONFIG_VIRTIO_MENU is not set
|
||||||
|
CONFIG_STAGING=y
|
||||||
|
CONFIG_ION=y
|
||||||
|
CONFIG_ION_SYSTEM_HEAP=y
|
||||||
|
CONFIG_ION_CARVEOUT_HEAP=y
|
||||||
|
CONFIG_ION_CMA_HEAP=y
|
||||||
|
CONFIG_FB_TFT=y
|
||||||
|
CONFIG_FB_TFT_SSD1306=m
|
||||||
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
|
CONFIG_CV1835_SYSDMA_REMAP=y
|
||||||
|
CONFIG_PWM=y
|
||||||
|
CONFIG_SIFIVE_PLIC=y
|
||||||
|
CONFIG_ANDROID=y
|
||||||
|
CONFIG_EXT3_FS=y
|
||||||
|
CONFIG_EXT4_DEBUG=y
|
||||||
|
# CONFIG_MANDATORY_FILE_LOCKING is not set
|
||||||
|
CONFIG_VFAT_FS=y
|
||||||
|
# CONFIG_PROC_PAGE_MONITOR is not set
|
||||||
|
CONFIG_TMPFS=y
|
||||||
|
CONFIG_JFFS2_FS=y
|
||||||
|
CONFIG_JFFS2_FS_WBUF_VERIFY=y
|
||||||
|
CONFIG_SQUASHFS=y
|
||||||
|
# CONFIG_SQUASHFS_ZLIB is not set
|
||||||
|
CONFIG_SQUASHFS_XZ=y
|
||||||
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V4=y
|
||||||
|
CONFIG_ROOT_NFS=y
|
||||||
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
|
CONFIG_NLS_ISO8859_1=y
|
||||||
|
CONFIG_NLS_ISO8859_2=y
|
||||||
|
CONFIG_NLS_ISO8859_3=y
|
||||||
|
CONFIG_CRYPTO_ECDH=y
|
||||||
|
CONFIG_CRYPTO_ECB=y
|
||||||
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
# CONFIG_XZ_DEC_X86 is not set
|
||||||
|
# CONFIG_XZ_DEC_POWERPC is not set
|
||||||
|
# CONFIG_XZ_DEC_IA64 is not set
|
||||||
|
# CONFIG_XZ_DEC_ARMTHUMB is not set
|
||||||
|
# CONFIG_XZ_DEC_SPARC is not set
|
||||||
|
CONFIG_DMA_CMA=y
|
||||||
|
CONFIG_CMA_SIZE_MBYTES=0
|
||||||
|
CONFIG_PRINTK_TIME=y
|
||||||
|
CONFIG_DYNAMIC_DEBUG=y
|
||||||
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
|
# CONFIG_FRAME_POINTER is not set
|
||||||
|
CONFIG_DEBUG_FS=y
|
||||||
|
# CONFIG_DEBUG_MISC is not set
|
||||||
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
# CONFIG_FTRACE is not set
|
||||||
|
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||||
82
build/boards/cv180x/cv1800b_milkv_duo_spinor/memmap.py
Normal file
82
build/boards/cv180x/cv1800b_milkv_duo_spinor/memmap.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
SIZE_1M = 0x100000
|
||||||
|
SIZE_1K = 1024
|
||||||
|
|
||||||
|
|
||||||
|
# Only attributes in class MemoryMap are generated to .h
|
||||||
|
class MemoryMap:
|
||||||
|
# No prefix "CVIMMAP_" for the items in _no_prefix[]
|
||||||
|
_no_prefix = [
|
||||||
|
"CONFIG_SYS_TEXT_BASE" # u-boot's CONFIG_SYS_TEXT_BASE is used without CPP.
|
||||||
|
]
|
||||||
|
|
||||||
|
DRAM_BASE = 0x80000000
|
||||||
|
DRAM_SIZE = 64 * SIZE_1M
|
||||||
|
|
||||||
|
# ==============
|
||||||
|
# C906L FreeRTOS
|
||||||
|
# ==============
|
||||||
|
FREERTOS_SIZE = 768 * SIZE_1K
|
||||||
|
# FreeRTOS is at the end of DRAM
|
||||||
|
FREERTOS_ADDR = DRAM_BASE + DRAM_SIZE - FREERTOS_SIZE
|
||||||
|
FSBL_C906L_START_ADDR = FREERTOS_ADDR
|
||||||
|
|
||||||
|
# ==============================
|
||||||
|
# OpenSBI | arm-trusted-firmware
|
||||||
|
# ==============================
|
||||||
|
# Monitor is at the begining of DRAM
|
||||||
|
MONITOR_ADDR = DRAM_BASE
|
||||||
|
|
||||||
|
ATF_SIZE = 512 * SIZE_1K
|
||||||
|
OPENSBI_SIZE = 512 * SIZE_1K
|
||||||
|
OPENSBI_FDT_ADDR = MONITOR_ADDR + OPENSBI_SIZE
|
||||||
|
|
||||||
|
# =========================
|
||||||
|
# memory@DRAM_BASE in .dts.
|
||||||
|
# =========================
|
||||||
|
# Ignore the area of FreeRTOS in u-boot and kernel
|
||||||
|
KERNEL_MEMORY_ADDR = DRAM_BASE
|
||||||
|
KERNEL_MEMORY_SIZE = DRAM_SIZE - FREERTOS_SIZE
|
||||||
|
|
||||||
|
# =================
|
||||||
|
# Multimedia buffer. Used by u-boot/kernel/FreeRTOS
|
||||||
|
# =================
|
||||||
|
ION_SIZE = 26.80078125 * SIZE_1M
|
||||||
|
H26X_BITSTREAM_SIZE = 0 * SIZE_1M
|
||||||
|
H26X_ENC_BUFF_SIZE = 0
|
||||||
|
ISP_MEM_BASE_SIZE = 0 * SIZE_1M
|
||||||
|
BOOTLOGO_SIZE = 0 * SIZE_1M
|
||||||
|
FREERTOS_RESERVED_ION_SIZE = H26X_BITSTREAM_SIZE + H26X_ENC_BUFF_SIZE + ISP_MEM_BASE_SIZE + BOOTLOGO_SIZE
|
||||||
|
|
||||||
|
# ION after FreeRTOS
|
||||||
|
ION_ADDR = FREERTOS_ADDR - ION_SIZE
|
||||||
|
|
||||||
|
# Buffers of the fast image are inside the ION buffer
|
||||||
|
H26X_BITSTREAM_ADDR = ION_ADDR
|
||||||
|
H26X_ENC_BUFF_ADDR = H26X_BITSTREAM_ADDR + H26X_BITSTREAM_SIZE
|
||||||
|
ISP_MEM_BASE_ADDR = H26X_ENC_BUFF_ADDR + H26X_ENC_BUFF_SIZE
|
||||||
|
|
||||||
|
# Boot logo is after ISP buffer and inside the ION buffer
|
||||||
|
BOOTLOGO_ADDR = ISP_MEM_BASE_ADDR + ISP_MEM_BASE_SIZE
|
||||||
|
|
||||||
|
assert BOOTLOGO_ADDR + BOOTLOGO_SIZE <= ION_ADDR + ION_SIZE
|
||||||
|
|
||||||
|
# ===================
|
||||||
|
# FSBL and u-boot-2021
|
||||||
|
# ===================
|
||||||
|
CVI_UPDATE_HEADER_SIZE = SIZE_1K
|
||||||
|
UIMAG_SIZE = 15 * SIZE_1M
|
||||||
|
|
||||||
|
# kernel image loading buffer
|
||||||
|
UIMAG_ADDR = DRAM_BASE + 20 * SIZE_1M
|
||||||
|
CVI_UPDATE_HEADER_ADDR = UIMAG_ADDR - CVI_UPDATE_HEADER_SIZE
|
||||||
|
|
||||||
|
# FSBL decompress buffer
|
||||||
|
FSBL_UNZIP_ADDR = UIMAG_ADDR
|
||||||
|
FSBL_UNZIP_SIZE = UIMAG_SIZE
|
||||||
|
|
||||||
|
assert UIMAG_ADDR + UIMAG_SIZE <= ION_ADDR
|
||||||
|
|
||||||
|
# u-boot's run address and entry point
|
||||||
|
CONFIG_SYS_TEXT_BASE = DRAM_BASE + 2 * SIZE_1M
|
||||||
|
# u-boot's init stack point is only used before board_init_f()
|
||||||
|
CONFIG_SYS_INIT_SP_ADDR = UIMAG_ADDR + UIMAG_SIZE
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
<physical_partition type="spinor">
|
||||||
|
<partition label="fip" size_in_kb="640" readonly="false" file="fip.bin"/>
|
||||||
|
<partition label="BOOT" size_in_kb="4096" readonly="false" file="boot.spinor"/>
|
||||||
|
<partition label="ENV" size_in_kb="64" file="" />
|
||||||
|
<partition label="ROOTFS" size_in_kb="27968" readonly="true" file="rootfs.spinor" />
|
||||||
|
</physical_partition>
|
||||||
|
|
||||||
30
build/boards/cv180x/cv1800b_milkv_duo_spinor/rootfs_script/clean_rootfs.sh
Executable file
30
build/boards/cv180x/cv1800b_milkv_duo_spinor/rootfs_script/clean_rootfs.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SYSTEM_DIR=$1
|
||||||
|
rm -rf $SYSTEM_DIR/mnt/system/usr
|
||||||
|
rm -rf $SYSTEM_DIR/mnt/system/lib
|
||||||
|
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S01syslogd
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S02klogd
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S02sysctl
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S20urandom
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S40network
|
||||||
|
rm -rf $SYSTEM_DIR/etc/init.d/S23ntp
|
||||||
|
|
||||||
|
rm -rf $SYSTEM_DIR/bin/ntpd
|
||||||
|
rm -rf $SYSTEM_DIR/mnt/cfg/secure.img
|
||||||
|
|
||||||
|
#del cv181x_mipi_tx.ko
|
||||||
|
rm -rf $SYSTEM_DIR/mnt/system/ko/cv181x_mipi_tx.ko
|
||||||
|
sed -i "/cv181x_mipi_tx.ko/d" $SYSTEM_DIR/mnt/system/ko/loadsystemko.sh
|
||||||
|
|
||||||
|
if [ $BUILD_FOR_DEBUG != "y" ]
|
||||||
|
then
|
||||||
|
#del dmesg cmd if CONFIG_PRINTK=n
|
||||||
|
#sed -i "/dmesg/d" $SYSTEM_DIR/mnt/system/ko/loadsystemko.sh
|
||||||
|
|
||||||
|
#del debugfs node
|
||||||
|
sed -i "/debugfs/d" $SYSTEM_DIR/etc/fstab
|
||||||
|
fi
|
||||||
|
|
||||||
|
du -sh $SYSTEM_DIR/* |sort -rh
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
int cvi_board_init(void)
|
||||||
|
{
|
||||||
|
// sensor mclk reset
|
||||||
|
PINMUX_CONFIG(PAD_MIPIRX0P, CAM_MCLK0); // Camera MCLK0
|
||||||
|
PINMUX_CONFIG(PAD_MIPIRX1N, XGPIOC_8); // Camera Reset
|
||||||
|
|
||||||
|
// all default gpio
|
||||||
|
PINMUX_CONFIG(SD0_PWR_EN, XGPIOA_14); // Duo Pin 19
|
||||||
|
PINMUX_CONFIG(SPK_EN, XGPIOA_15); // Duo Pin 20
|
||||||
|
//PINMUX_CONFIG(SPINOR_MISO, XGPIOA_23); // Duo Pin 21
|
||||||
|
//PINMUX_CONFIG(SPINOR_CS_X, XGPIOA_24); // Duo Pin 22
|
||||||
|
//PINMUX_CONFIG(SPINOR_SCK, XGPIOA_22); // Duo Pin 24
|
||||||
|
//PINMUX_CONFIG(SPINOR_MOSI, XGPIOA_25); // Duo Pin 25
|
||||||
|
//PINMUX_CONFIG(SPINOR_WP_X, XGPIOA_27); // Duo Pin 26
|
||||||
|
//PINMUX_CONFIG(SPINOR_HOLD_X, XGPIOA_26); // Duo Pin 27
|
||||||
|
PINMUX_CONFIG(PWR_SEQ2, PWR_GPIO_4); // Duo Pin 29
|
||||||
|
|
||||||
|
// ADC pins set to gpio
|
||||||
|
PINMUX_CONFIG(ADC1, XGPIOB_3); // ADC1
|
||||||
|
PINMUX_CONFIG(USB_VBUS_DET, XGPIOB_6); // ADC2
|
||||||
|
|
||||||
|
// I2C0
|
||||||
|
PINMUX_CONFIG(IIC0_SCL, IIC0_SCL);
|
||||||
|
PINMUX_CONFIG(IIC0_SDA, IIC0_SDA);
|
||||||
|
|
||||||
|
// I2C1
|
||||||
|
PINMUX_CONFIG(PAD_MIPIRX1P, IIC1_SDA);
|
||||||
|
PINMUX_CONFIG(PAD_MIPIRX0N, IIC1_SCL);
|
||||||
|
|
||||||
|
// PWM
|
||||||
|
PINMUX_CONFIG(SD1_D2, PWM_5);
|
||||||
|
PINMUX_CONFIG(SD1_D1, PWM_6);
|
||||||
|
|
||||||
|
// UART 4
|
||||||
|
PINMUX_CONFIG(SD1_GPIO1, UART4_TX);
|
||||||
|
PINMUX_CONFIG(SD1_GPIO0, UART4_RX);
|
||||||
|
|
||||||
|
// SPI
|
||||||
|
PINMUX_CONFIG(SD1_CLK, SPI2_SCK);
|
||||||
|
PINMUX_CONFIG(SD1_CMD, SPI2_SDO);
|
||||||
|
PINMUX_CONFIG(SD1_D0, SPI2_SDI);
|
||||||
|
PINMUX_CONFIG(SD1_D3, SPI2_CS_X);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
13
build/boards/cv180x/cv1800b_milkv_duo_spinor/u-boot/cvitek.h
Normal file
13
build/boards/cv180x/cv1800b_milkv_duo_spinor/u-boot/cvitek.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
*VO control GPIOs
|
||||||
|
*/
|
||||||
|
#define VO_GPIO_RESET_PORT portb
|
||||||
|
#define VO_GPIO_RESET_INDEX 5
|
||||||
|
#define VO_GPIO_RESET_ACTIVE GPIO_ACTIVE_LOW
|
||||||
|
#define VO_GPIO_PWM_PORT portb
|
||||||
|
#define VO_GPIO_PWM_INDEX 4
|
||||||
|
#define VO_GPIO_PWM_ACTIVE GPIO_ACTIVE_HIGH
|
||||||
|
#define VO_GPIO_POWER_CT_PORT portb
|
||||||
|
#define VO_GPIO_POWER_CT_INDEX 3
|
||||||
|
#define VO_GPIO_POWER_CT_ACTIVE GPIO_ACTIVE_HIGH
|
||||||
|
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
CONFIG_RISCV=y
|
||||||
|
CONFIG_SYS_MALLOC_F_LEN=0x2000
|
||||||
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="cv180x_asic"
|
||||||
|
CONFIG_IDENT_STRING="cvitek_cv180x"
|
||||||
|
CONFIG_ARCH_RV64I=y
|
||||||
|
CONFIG_RISCV_SMODE=y
|
||||||
|
CONFIG_TARGET_CVITEK_CV180X=y
|
||||||
|
CONFIG_CVITEK_SPI_FLASH=y
|
||||||
|
CONFIG_DISTRO_DEFAULTS=y
|
||||||
|
CONFIG_FIT=y
|
||||||
|
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
|
||||||
|
CONFIG_BOOTDELAY=1
|
||||||
|
CONFIG_SYS_PROMPT="cv180x_c906# "
|
||||||
|
# CONFIG_CMD_CONSOLE is not set
|
||||||
|
# CONFIG_CMD_XIMG is not set
|
||||||
|
# CONFIG_CMD_EDITENV is not set
|
||||||
|
# CONFIG_CMD_CRC32 is not set
|
||||||
|
# CONFIG_CMD_LZMADEC is not set
|
||||||
|
# CONFIG_CMD_UNLZ4 is not set
|
||||||
|
# CONFIG_CMD_UNZIP is not set
|
||||||
|
# CONFIG_CMD_LOADS is not set
|
||||||
|
CONFIG_CMD_MMC=y
|
||||||
|
# CONFIG_CMD_ITEST is not set
|
||||||
|
CONFIG_CMD_CACHE=y
|
||||||
|
CONFIG_CMD_CVI_SD_UPDATE=y
|
||||||
|
# CONFIG_ISO_PARTITION is not set
|
||||||
|
# CONFIG_EFI_PARTITION is not set
|
||||||
|
CONFIG_NET_RANDOM_ETHADDR=y
|
||||||
|
CONFIG_MMC=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_SDMA=y
|
||||||
|
CONFIG_MMC_SDHCI_CVITEK=y
|
||||||
|
CONFIG_MTD=y
|
||||||
|
# CONFIG_PHY_SMSC is not set
|
||||||
|
CONFIG_DM_ETH=y
|
||||||
|
CONFIG_ETH_DESIGNWARE=y
|
||||||
|
CONFIG_PHY_CVITEK=y
|
||||||
|
CONFIG_SYS_NS16550=y
|
||||||
|
CONFIG_SPI=y
|
||||||
|
CONFIG_LZ4=y
|
||||||
|
CONFIG_LZMA=y
|
||||||
|
# CONFIG_TOOLS_LIBCRYPTO is not set
|
||||||
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
|
# CONFIG_NAND_BOOT is not set
|
||||||
|
# CONFIG_ONENAND_BOOT is not set
|
||||||
|
CONFIG_QSPI_BOOT=y
|
||||||
|
# CONFIG_SATA_BOOT is not set
|
||||||
|
CONFIG_SPI_BOOT=y
|
||||||
|
|
||||||
@ -529,19 +529,19 @@ function cvi_setup_env()
|
|||||||
# envs setup for specific ${SDK_VER}
|
# envs setup for specific ${SDK_VER}
|
||||||
envs_sdk_ver
|
envs_sdk_ver
|
||||||
|
|
||||||
if [ "${STORAGE_TYPE}" == "spinand" ]; then
|
# if [ "${STORAGE_TYPE}" == "spinand" ]; then
|
||||||
PAGE_SUFFIX=2k
|
# PAGE_SUFFIX=2k
|
||||||
if [ ${NANDFLASH_PAGESIZE} == 4096 ]; then
|
# if [ ${NANDFLASH_PAGESIZE} == 4096 ]; then
|
||||||
PAGE_SUFFIX=4k
|
# PAGE_SUFFIX=4k
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
if [[ "$ENABLE_ALIOS" != "y" ]]; then
|
# if [[ "$ENABLE_ALIOS" != "y" ]]; then
|
||||||
pushd "$BUILD_PATH"/boards/"${CHIP_ARCH,,}"/"$PROJECT_FULLNAME"/partition/
|
# pushd "$BUILD_PATH"/boards/"${CHIP_ARCH,,}"/"$PROJECT_FULLNAME"/partition/
|
||||||
ln -fs ../../../default/partition/partition_spinand_page_"$PAGE_SUFFIX".xml \
|
# ln -fs ../../../default/partition/partition_spinand_page_"$PAGE_SUFFIX".xml \
|
||||||
partition_"$STORAGE_TYPE".xml
|
# partition_"$STORAGE_TYPE".xml
|
||||||
popd
|
# popd
|
||||||
fi
|
# fi
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
# configure flash partition table
|
# configure flash partition table
|
||||||
if [ -z "${STORAGE_TYPE}" ]; then
|
if [ -z "${STORAGE_TYPE}" ]; then
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
BR2_riscv=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="riscv64-unknown-linux-musl"
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL_CXX=y
|
||||||
|
BR2_TARGET_LDFLAGS="-mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d"
|
||||||
|
BR2_TARGET_GENERIC_HOSTNAME="milkv-duo"
|
||||||
|
BR2_TARGET_GENERIC_ISSUE="Welcome to Milk-V Duo"
|
||||||
|
BR2_TARGET_GENERIC_ROOT_PASSWD="milkv"
|
||||||
|
BR2_ROOTFS_OVERLAY="board/milkv/milkv-duo-spinand/overlay"
|
||||||
|
BR2_PACKAGE_DUO_PINMUX=y
|
||||||
|
BR2_PACKAGE_SPIDEV_TEST=y
|
||||||
|
BR2_PACKAGE_STRACE=y
|
||||||
|
BR2_PACKAGE_E2FSPROGS=y
|
||||||
|
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||||
|
BR2_PACKAGE_MTD=y
|
||||||
|
BR2_PACKAGE_EVTEST=y
|
||||||
|
BR2_PACKAGE_OPENSSL=y
|
||||||
|
BR2_PACKAGE_FREETYPE=y
|
||||||
|
BR2_PACKAGE_EXPAT=y
|
||||||
|
BR2_PACKAGE_JSON_C=y
|
||||||
|
BR2_PACKAGE_LIBXSLT=y
|
||||||
|
BR2_PACKAGE_LIBNL=y
|
||||||
|
BR2_PACKAGE_LIBFFI=y
|
||||||
|
BR2_PACKAGE_DHCPCD=y
|
||||||
|
BR2_PACKAGE_DNSMASQ=y
|
||||||
|
BR2_PACKAGE_DROPBEAR=y
|
||||||
|
BR2_PACKAGE_ETHTOOL=y
|
||||||
|
BR2_PACKAGE_IPERF3=y
|
||||||
|
BR2_PACKAGE_NTP=y
|
||||||
|
BR2_PACKAGE_NTP_NTPDATE=y
|
||||||
|
BR2_PACKAGE_NTP_NTPTIME=y
|
||||||
|
BR2_PACKAGE_HTOP=y
|
||||||
|
BR2_PACKAGE_KMOD=y
|
||||||
|
BR2_PACKAGE_UTIL_LINUX_UUIDD=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
BR2_PACKAGE_HOST_E2FSPROGS=y
|
||||||
|
BR2_PACKAGE_HOST_GENIMAGE=y
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
BR2_riscv=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="riscv64-unknown-linux-musl"
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL_CXX=y
|
||||||
|
BR2_TARGET_LDFLAGS="-mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d"
|
||||||
|
BR2_TARGET_GENERIC_HOSTNAME="milkv-duo"
|
||||||
|
BR2_TARGET_GENERIC_ISSUE="Welcome to Milk-V Duo"
|
||||||
|
BR2_TARGET_GENERIC_ROOT_PASSWD="milkv"
|
||||||
|
BR2_ROOTFS_OVERLAY="board/milkv/milkv-duo-spinor/overlay"
|
||||||
|
BR2_PACKAGE_DUO_PINMUX=y
|
||||||
|
BR2_PACKAGE_SPIDEV_TEST=y
|
||||||
|
BR2_PACKAGE_STRACE=y
|
||||||
|
BR2_PACKAGE_E2FSPROGS=y
|
||||||
|
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||||
|
BR2_PACKAGE_MTD=y
|
||||||
|
BR2_PACKAGE_EVTEST=y
|
||||||
|
BR2_PACKAGE_OPENSSL=y
|
||||||
|
BR2_PACKAGE_FREETYPE=y
|
||||||
|
BR2_PACKAGE_EXPAT=y
|
||||||
|
BR2_PACKAGE_JSON_C=y
|
||||||
|
BR2_PACKAGE_LIBXSLT=y
|
||||||
|
BR2_PACKAGE_LIBNL=y
|
||||||
|
BR2_PACKAGE_LIBFFI=y
|
||||||
|
BR2_PACKAGE_DHCPCD=y
|
||||||
|
BR2_PACKAGE_DNSMASQ=y
|
||||||
|
BR2_PACKAGE_DROPBEAR=y
|
||||||
|
BR2_PACKAGE_ETHTOOL=y
|
||||||
|
BR2_PACKAGE_IPERF3=y
|
||||||
|
BR2_PACKAGE_NTP=y
|
||||||
|
BR2_PACKAGE_NTP_NTPDATE=y
|
||||||
|
BR2_PACKAGE_NTP_NTPTIME=y
|
||||||
|
BR2_PACKAGE_HTOP=y
|
||||||
|
BR2_PACKAGE_KMOD=y
|
||||||
|
BR2_PACKAGE_UTIL_LINUX_UUIDD=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
BR2_PACKAGE_HOST_E2FSPROGS=y
|
||||||
|
BR2_PACKAGE_HOST_GENIMAGE=y
|
||||||
0
buildroot-2021.05/dl/ethtool/.lock
Normal file
0
buildroot-2021.05/dl/ethtool/.lock
Normal file
BIN
buildroot-2021.05/dl/ethtool/ethtool-5.10.tar.xz
Normal file
BIN
buildroot-2021.05/dl/ethtool/ethtool-5.10.tar.xz
Normal file
Binary file not shown.
0
buildroot-2021.05/dl/lz4/.lock
Normal file
0
buildroot-2021.05/dl/lz4/.lock
Normal file
BIN
buildroot-2021.05/dl/lz4/lz4-1.9.3.tar.gz
Normal file
BIN
buildroot-2021.05/dl/lz4/lz4-1.9.3.tar.gz
Normal file
Binary file not shown.
0
buildroot-2021.05/dl/lzo/.lock
Normal file
0
buildroot-2021.05/dl/lzo/.lock
Normal file
BIN
buildroot-2021.05/dl/lzo/lzo-2.10.tar.gz
Normal file
BIN
buildroot-2021.05/dl/lzo/lzo-2.10.tar.gz
Normal file
Binary file not shown.
0
buildroot-2021.05/dl/mtd/.lock
Normal file
0
buildroot-2021.05/dl/mtd/.lock
Normal file
BIN
buildroot-2021.05/dl/mtd/mtd-utils-2.1.2.tar.bz2
Normal file
BIN
buildroot-2021.05/dl/mtd/mtd-utils-2.1.2.tar.bz2
Normal file
Binary file not shown.
0
buildroot-2021.05/dl/squashfs/.lock
Normal file
0
buildroot-2021.05/dl/squashfs/.lock
Normal file
BIN
buildroot-2021.05/dl/squashfs/squashfs-4.4.tar.gz
Normal file
BIN
buildroot-2021.05/dl/squashfs/squashfs-4.4.tar.gz
Normal file
Binary file not shown.
0
buildroot-2021.05/dl/zstd/.lock
Normal file
0
buildroot-2021.05/dl/zstd/.lock
Normal file
BIN
buildroot-2021.05/dl/zstd/zstd-1.4.9.tar.gz
Normal file
BIN
buildroot-2021.05/dl/zstd/zstd-1.4.9.tar.gz
Normal file
Binary file not shown.
8
device/milkv-duo-spinand/boardconfig.sh
Normal file
8
device/milkv-duo-spinand/boardconfig.sh
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export MV_BOARD=milkv-duo-spinand
|
||||||
|
export MV_BOARD_CPU=cv1800b
|
||||||
|
export MV_VENDOR=milkv
|
||||||
|
export MV_BUILD_ENV=milkvsetup.sh
|
||||||
|
export MV_BOARD_LINK=cv1800b_milkv_duo_spinand
|
||||||
|
|
||||||
6
device/milkv-duo-spinand/br_overlay/.gitignore
vendored
Normal file
6
device/milkv-duo-spinand/br_overlay/.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
mnt/system/
|
||||||
|
mnt/cfg/
|
||||||
|
mnt/data/
|
||||||
|
usr/bin
|
||||||
|
usr/share
|
||||||
|
usr/lib
|
||||||
4
device/milkv-duo-spinand/br_overlay/etc/dnsmasq.conf
Normal file
4
device/milkv-duo-spinand/br_overlay/etc/dnsmasq.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
interface=usb0
|
||||||
|
dhcp-range=192.168.42.2,192.168.42.242,1h
|
||||||
|
dhcp-option=3
|
||||||
|
dhcp-option=6
|
||||||
50
device/milkv-duo-spinand/br_overlay/etc/init.d/S99user
Executable file
50
device/milkv-duo-spinand/br_overlay/etc/init.d/S99user
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
${CVI_SHOPTS}
|
||||||
|
#
|
||||||
|
# Start firmware
|
||||||
|
#
|
||||||
|
export USERDATAPATH=/mnt/data/
|
||||||
|
export SYSTEMPATH=/mnt/system/
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo "init mpp system..."
|
||||||
|
if [ -d $SYSTEMPATH/ko ]; then
|
||||||
|
sh $SYSTEMPATH/ko/loadsystemko.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Starting app..."
|
||||||
|
|
||||||
|
if [ -f $SYSTEMPATH/duo-init.sh ]; then
|
||||||
|
. $SYSTEMPATH/duo-init.sh &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $SYSTEMPATH/blink.sh ]; then
|
||||||
|
. $SYSTEMPATH/blink.sh &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $SYSTEMPATH/usb.sh ]; then
|
||||||
|
. $SYSTEMPATH/usb.sh &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $USERDATAPATH/auto.sh ]; then
|
||||||
|
usleep 30000
|
||||||
|
. $USERDATAPATH/auto.sh &
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -f $SYSTEMPATH/auto.sh ]; then
|
||||||
|
usleep 30000
|
||||||
|
. $SYSTEMPATH/auto.sh &
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
;;
|
||||||
|
restart|reload)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {start|stop|restart}"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit $?
|
||||||
|
|
||||||
40
device/milkv-duo-spinand/br_overlay/etc/inittab
Normal file
40
device/milkv-duo-spinand/br_overlay/etc/inittab
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# /etc/inittab
|
||||||
|
#
|
||||||
|
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
|
||||||
|
#
|
||||||
|
# Note: BusyBox init doesn't support runlevels. The runlevels field is
|
||||||
|
# completely ignored by BusyBox init. If you want runlevels, use
|
||||||
|
# sysvinit.
|
||||||
|
#
|
||||||
|
# Format for each entry: <id>:<runlevels>:<action>:<process>
|
||||||
|
#
|
||||||
|
# id == tty to run on, or empty for /dev/console
|
||||||
|
# runlevels == ignored
|
||||||
|
# action == one of sysinit, respawn, askfirst, wait, and once
|
||||||
|
# process == program to run
|
||||||
|
|
||||||
|
# Startup the system
|
||||||
|
::sysinit:/bin/mount -t proc proc /proc
|
||||||
|
::sysinit:/bin/mount -o remount,rw /
|
||||||
|
::sysinit:/bin/mkdir -p /dev/pts /dev/shm
|
||||||
|
::sysinit:/bin/mount -a
|
||||||
|
::sysinit:/sbin/swapon -a
|
||||||
|
null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd
|
||||||
|
null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin
|
||||||
|
null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout
|
||||||
|
null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr
|
||||||
|
::sysinit:/bin/hostname -F /etc/hostname
|
||||||
|
# now run any rc scripts
|
||||||
|
::sysinit:/etc/init.d/rcS
|
||||||
|
|
||||||
|
# Put a getty on the serial port
|
||||||
|
# console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
|
||||||
|
console::respawn:/sbin/getty -L console 115200 vt100 -n -l /usr/local/bin/autologin
|
||||||
|
|
||||||
|
# Stuff to do for the 3-finger salute
|
||||||
|
#::ctrlaltdel:/sbin/reboot
|
||||||
|
|
||||||
|
# Stuff to do before rebooting
|
||||||
|
::shutdown:/etc/init.d/rcK
|
||||||
|
::shutdown:/sbin/swapoff -a
|
||||||
|
::shutdown:/bin/umount -a -r
|
||||||
37
device/milkv-duo-spinand/br_overlay/etc/profile
Normal file
37
device/milkv-duo-spinand/br_overlay/etc/profile
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"
|
||||||
|
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/mnt/system/usr/bin:/mnt/system/usr/sbin:/mnt/data/bin:/mnt/data/sbin"
|
||||||
|
|
||||||
|
if [ "$PS1" ]; then
|
||||||
|
if [ "`id -u`" -eq 0 ]; then
|
||||||
|
export PS1='# '
|
||||||
|
else
|
||||||
|
export PS1='$ '
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
export PAGER='/bin/more '
|
||||||
|
export EDITOR='/bin/vi'
|
||||||
|
|
||||||
|
# Source configuration files from /etc/profile.d
|
||||||
|
for i in /etc/profile.d/*.sh ; do
|
||||||
|
if [ -r "$i" ]; then
|
||||||
|
. $i
|
||||||
|
fi
|
||||||
|
unset i
|
||||||
|
done
|
||||||
|
|
||||||
|
export HOSTNAME="$(hostname)"
|
||||||
|
export OLDPWD=/root
|
||||||
|
|
||||||
|
if [ '$USER' == 'root' ]; then
|
||||||
|
export PS1='[\u@\h]\w\# '
|
||||||
|
else
|
||||||
|
export PS1='[\u@\h]\w\$ '
|
||||||
|
fi
|
||||||
|
|
||||||
|
alias ll='ls -alF'
|
||||||
|
alias la='ls -A'
|
||||||
|
alias l='ls -CF'
|
||||||
|
|
||||||
|
export TERM=vt100
|
||||||
|
export TERMINFO=/usr/share/terminfo
|
||||||
292
device/milkv-duo-spinand/br_overlay/etc/run_usb.sh
Executable file
292
device/milkv-duo-spinand/br_overlay/etc/run_usb.sh
Executable file
@ -0,0 +1,292 @@
|
|||||||
|
CLASS=acm
|
||||||
|
VID=0x3346
|
||||||
|
PID=0x1003
|
||||||
|
MSC_PID=0x1008
|
||||||
|
RNDIS_PID=0x1009
|
||||||
|
UVC_PID=0x100A
|
||||||
|
UAC_PID=0x100B
|
||||||
|
ADB_VID=0x18D1
|
||||||
|
ADB_PID=0x4EE0
|
||||||
|
ADB_PID_M1=0x4EE2
|
||||||
|
ADB_PID_M2=0x4EE4
|
||||||
|
MANUFACTURER="Cvitek"
|
||||||
|
PRODUCT="USB Com Port"
|
||||||
|
PRODUCT_RNDIS="RNDIS"
|
||||||
|
PRODUCT_UVC="UVC"
|
||||||
|
PRODUCT_UAC="UAC"
|
||||||
|
PRODUCT_ADB="ADB"
|
||||||
|
ADBD_PATH=/usr/bin/
|
||||||
|
SERIAL="0123456789"
|
||||||
|
MSC_FILE=$3
|
||||||
|
CVI_DIR=/tmp/usb
|
||||||
|
CVI_GADGET=$CVI_DIR/usb_gadget/cvitek
|
||||||
|
CVI_FUNC=$CVI_GADGET/functions
|
||||||
|
FUNC_NUM=0
|
||||||
|
MAX_EP_NUM=4
|
||||||
|
TMP_NUM=0
|
||||||
|
INTF_NUM=0
|
||||||
|
EP_IN=0
|
||||||
|
EP_OUT=0
|
||||||
|
|
||||||
|
case "$2" in
|
||||||
|
acm)
|
||||||
|
CLASS=acm
|
||||||
|
;;
|
||||||
|
msc)
|
||||||
|
CLASS=mass_storage
|
||||||
|
PID=$MSC_PID
|
||||||
|
;;
|
||||||
|
cvg)
|
||||||
|
CLASS=cvg
|
||||||
|
;;
|
||||||
|
rndis)
|
||||||
|
CLASS=rndis
|
||||||
|
PID=$RNDIS_PID
|
||||||
|
PRODUCT=$PRODUCT_RNDIS
|
||||||
|
;;
|
||||||
|
uvc)
|
||||||
|
CLASS=uvc
|
||||||
|
PID=$UVC_PID
|
||||||
|
PRODUCT=$PRODUCT_UVC
|
||||||
|
;;
|
||||||
|
uac1)
|
||||||
|
CLASS=uac1
|
||||||
|
PID=$UAC_PID
|
||||||
|
PRODUCT=$PRODUCT_UAC
|
||||||
|
;;
|
||||||
|
adb)
|
||||||
|
CLASS=ffs.adb
|
||||||
|
VID=$ADB_VID
|
||||||
|
PID=$ADB_PID
|
||||||
|
PRODUCT=$PRODUCT_ADB
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$1" = "probe" ] ; then
|
||||||
|
echo "Usage: $0 probe {acm|msc|cvg|rndis|uvc|uac1|adb}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
esac
|
||||||
|
|
||||||
|
calc_func() {
|
||||||
|
FUNC_NUM=$(ls $CVI_GADGET/functions -l | grep ^d | wc -l)
|
||||||
|
echo "$FUNC_NUM file(s)"
|
||||||
|
}
|
||||||
|
|
||||||
|
res_check() {
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "acm*" | wc -l)
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
TMP_NUM=$(($TMP_NUM * 2))
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "mass_storage*" | wc -l)
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "cvg*" | wc -l)
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "rndis*" | wc -l)
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
TMP_NUM=$(($TMP_NUM * 2))
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "uvc*" | wc -l)
|
||||||
|
TMP_NUM=$(($TMP_NUM * 2))
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "uac1*" | wc -l)
|
||||||
|
TMP_NUM=$(($TMP_NUM * 2))
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name ffs.adb | wc -l)
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
|
||||||
|
if [ "$CLASS" = "acm" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+2))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "mass_storage" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+1))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "cvg" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+1))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "rndis" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+2))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "uvc" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+2))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "uac1" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+1))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "ffs.adb" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+1))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
echo "$EP_IN in ep"
|
||||||
|
echo "$EP_OUT out ep"
|
||||||
|
if [ $EP_IN -gt $MAX_EP_NUM ]; then
|
||||||
|
echo "reach maximum resource"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ $EP_OUT -gt $MAX_EP_NUM ]; then
|
||||||
|
echo "reach maximum resource"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
probe() {
|
||||||
|
if [ ! -d $CVI_DIR ]; then
|
||||||
|
mkdir $CVI_DIR
|
||||||
|
fi
|
||||||
|
if [ ! -d $CVI_DIR/usb_gadget ]; then
|
||||||
|
# Enale USB ConfigFS
|
||||||
|
mount none $CVI_DIR -t configfs
|
||||||
|
# Create gadget dev
|
||||||
|
mkdir $CVI_GADGET
|
||||||
|
# Set the VID and PID
|
||||||
|
echo $VID >$CVI_GADGET/idVendor
|
||||||
|
echo $PID >$CVI_GADGET/idProduct
|
||||||
|
# Set the product information string
|
||||||
|
mkdir $CVI_GADGET/strings/0x409
|
||||||
|
echo $MANUFACTURER>$CVI_GADGET/strings/0x409/manufacturer
|
||||||
|
echo $PRODUCT>$CVI_GADGET/strings/0x409/product
|
||||||
|
echo $SERIAL>$CVI_GADGET/strings/0x409/serialnumber
|
||||||
|
# Set the USB configuration
|
||||||
|
mkdir $CVI_GADGET/configs/c.1
|
||||||
|
mkdir $CVI_GADGET/configs/c.1/strings/0x409
|
||||||
|
echo "config1">$CVI_GADGET/configs/c.1/strings/0x409/configuration
|
||||||
|
# Set the MaxPower of USB descriptor
|
||||||
|
echo 120 >$CVI_GADGET/configs/c.1/MaxPower
|
||||||
|
fi
|
||||||
|
# get current functions number
|
||||||
|
calc_func
|
||||||
|
# assign the class code for composite device
|
||||||
|
if [ ! $FUNC_NUM -eq 0 ]; then
|
||||||
|
echo 0xEF >$CVI_GADGET/bDeviceClass
|
||||||
|
echo 0x02 >$CVI_GADGET/bDeviceSubClass
|
||||||
|
echo 0x01 >$CVI_GADGET/bDeviceProtocol
|
||||||
|
fi
|
||||||
|
# resource check
|
||||||
|
res_check
|
||||||
|
# create the desired function
|
||||||
|
if [ "$CLASS" = "ffs.adb" ] ; then
|
||||||
|
# adb shall be the last function to probe. Override the pid/vid
|
||||||
|
echo $VID >$CVI_GADGET/idVendor
|
||||||
|
echo $PID >$CVI_GADGET/idProduct
|
||||||
|
# choose pid for different function number
|
||||||
|
if [ $INTF_NUM -eq 1 ]; then
|
||||||
|
echo $ADB_PID_M1 >$CVI_GADGET/idProduct
|
||||||
|
fi
|
||||||
|
if [ $INTF_NUM -eq 2 ]; then
|
||||||
|
echo $ADB_PID_M2 >$CVI_GADGET/idProduct
|
||||||
|
fi
|
||||||
|
mkdir $CVI_GADGET/functions/$CLASS
|
||||||
|
else
|
||||||
|
mkdir $CVI_GADGET/functions/$CLASS.usb$FUNC_NUM
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "mass_storage" ] ; then
|
||||||
|
echo $MSC_FILE >$CVI_GADGET/functions/$CLASS.usb$FUNC_NUM/lun.0/file
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "rndis" ] ; then
|
||||||
|
#OS STRING
|
||||||
|
echo 1 >$CVI_GADGET/os_desc/use
|
||||||
|
echo 0xcd >$CVI_GADGET/os_desc/b_vendor_code
|
||||||
|
echo MSFT100 >$CVI_GADGET/os_desc/qw_sign
|
||||||
|
#COMPATIBLE ID
|
||||||
|
echo RNDIS >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/compatible_id
|
||||||
|
#MAKE c.1 THE ONE ASSOCIATED WITH OS DESCRIPTORS
|
||||||
|
ln -s $CVI_GADGET/configs/c.1 $CVI_GADGET/os_desc
|
||||||
|
#MAKE "Icons" EXTENDED PROPERTY
|
||||||
|
mkdir $CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons
|
||||||
|
echo 2 >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons/type
|
||||||
|
echo "%SystemRoot%\\system32\\shell32.dll,-233" >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons/data
|
||||||
|
#MAKE "Label" EXTENDED PROPERTY
|
||||||
|
mkdir $CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label
|
||||||
|
echo 1 >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label/type
|
||||||
|
echo "XYZ Device" >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label/data
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
# link this function to the configuration
|
||||||
|
calc_func
|
||||||
|
if [ $FUNC_NUM -eq 0 ]; then
|
||||||
|
echo "Functions Empty!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -d $CVI_GADGET/functions/ffs.adb ]; then
|
||||||
|
FUNC_NUM=$(($FUNC_NUM-1))
|
||||||
|
fi
|
||||||
|
for i in `seq 0 $(($FUNC_NUM-1))`;
|
||||||
|
do
|
||||||
|
find $CVI_GADGET/functions/ -name "*.usb$i" | xargs -I % ln -s % $CVI_GADGET/configs/c.1
|
||||||
|
done
|
||||||
|
if [ -d $CVI_GADGET/functions/ffs.adb ]; then
|
||||||
|
ln -s $CVI_GADGET/functions/ffs.adb $CVI_GADGET/configs/c.1
|
||||||
|
mkdir /dev/usb-ffs/adb -p
|
||||||
|
mount -t functionfs adb /dev/usb-ffs/adb
|
||||||
|
if [ -f $ADBD_PATH/adbd ]; then
|
||||||
|
$ADBD_PATH/adbd &
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Start the gadget driver
|
||||||
|
UDC=`ls /sys/class/udc/ | awk '{print $1}'`
|
||||||
|
echo ${UDC} >$CVI_GADGET/UDC
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
if [ -d $CVI_GADGET/configs/c.1/ffs.adb ]; then
|
||||||
|
pkill adbd
|
||||||
|
rm $CVI_GADGET/configs/c.1/ffs.adb
|
||||||
|
else
|
||||||
|
echo "" >$CVI_GADGET/UDC
|
||||||
|
fi
|
||||||
|
find $CVI_GADGET/configs/ -name "*.usb*" | xargs rm -f
|
||||||
|
rmdir $CVI_GADGET/configs/c.*/strings/0x409/
|
||||||
|
tmp_dirs=$(find $CVI_GADGET/os_desc/c.* -type d)
|
||||||
|
if [ -n tmp_dirs ]; then
|
||||||
|
echo "remove os_desc!"
|
||||||
|
rm -rf $CVI_GADGET/os_desc/c.*/
|
||||||
|
find $CVI_GADGET/functions/ -name Icons | xargs rmdir
|
||||||
|
find $CVI_GADGET/functions/ -name Label | xargs rmdir
|
||||||
|
fi
|
||||||
|
rmdir $CVI_GADGET/configs/c.*/
|
||||||
|
rmdir $CVI_GADGET/functions/*
|
||||||
|
rmdir $CVI_GADGET/strings/0x409/
|
||||||
|
rmdir $CVI_GADGET
|
||||||
|
umount $CVI_DIR
|
||||||
|
rmdir $CVI_DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop
|
||||||
|
;;
|
||||||
|
probe)
|
||||||
|
probe
|
||||||
|
;;
|
||||||
|
UDC)
|
||||||
|
ls /sys/class/udc/ >$CVI_GADGET/UDC
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 probe {acm|msc|cvg|uvc|uac1} {file (msc)}"
|
||||||
|
echo "Usage: $0 start"
|
||||||
|
echo "Usage: $0 stop"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
exit $?
|
||||||
83
device/milkv-duo-spinand/br_overlay/etc/uhubon.sh
Executable file
83
device/milkv-duo-spinand/br_overlay/etc/uhubon.sh
Executable file
@ -0,0 +1,83 @@
|
|||||||
|
GPIO_HUBPORT_EN=449
|
||||||
|
GPIO_ROLESEL=450
|
||||||
|
GPIO_HUBRST=451
|
||||||
|
SYS_GPIO=/sys/class/gpio
|
||||||
|
|
||||||
|
hub_on() {
|
||||||
|
echo "turn on usb hub"
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_HUBPORT_EN ]; then
|
||||||
|
echo $GPIO_HUBPORT_EN >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_ROLESEL ]; then
|
||||||
|
echo $GPIO_ROLESEL >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_HUBRST ]; then
|
||||||
|
echo $GPIO_HUBRST >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_HUBPORT_EN/direction
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_ROLESEL/direction
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_HUBRST/direction
|
||||||
|
|
||||||
|
echo 1 >/sys/class/gpio/gpio$GPIO_HUBPORT_EN/value
|
||||||
|
echo 0 >/sys/class/gpio/gpio$GPIO_ROLESEL/value
|
||||||
|
echo 0 >/sys/class/gpio/gpio$GPIO_HUBRST/value
|
||||||
|
}
|
||||||
|
|
||||||
|
hub_off() {
|
||||||
|
echo "turn off usb hub"
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_HUBPORT_EN ]; then
|
||||||
|
echo $GPIO_HUBPORT_EN >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_ROLESEL ]; then
|
||||||
|
echo $GPIO_ROLESEL >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_HUBRST ]; then
|
||||||
|
echo $GPIO_HUBRST >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_HUBPORT_EN/direction
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_ROLESEL/direction
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_HUBRST/direction
|
||||||
|
|
||||||
|
echo 0 >/sys/class/gpio/gpio$GPIO_HUBPORT_EN/value
|
||||||
|
echo 1 >/sys/class/gpio/gpio$GPIO_ROLESEL/value
|
||||||
|
echo 1 >/sys/class/gpio/gpio$GPIO_HUBRST/value
|
||||||
|
}
|
||||||
|
|
||||||
|
inst_mod() {
|
||||||
|
insmod /mnt/system/ko/configfs.ko
|
||||||
|
insmod /mnt/system/ko/libcomposite.ko
|
||||||
|
insmod /mnt/system/ko/u_serial.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_acm.ko
|
||||||
|
insmod /mnt/system/ko/cvi_usb_f_cvg.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_uvc.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_fs.ko
|
||||||
|
insmod /mnt/system/ko/u_audio.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_uac1.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_serial.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_mass_storage.ko
|
||||||
|
insmod /mnt/system/ko/u_ether.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_ecm.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_eem.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_rndis.ko
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
host)
|
||||||
|
insmod /mnt/system/ko/dwc2.ko
|
||||||
|
echo host > /proc/cviusb/otg_role
|
||||||
|
;;
|
||||||
|
device)
|
||||||
|
echo device > /proc/cviusb/otg_role
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 host"
|
||||||
|
echo "Usage: $0 device"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
exit $?
|
||||||
@ -0,0 +1 @@
|
|||||||
|
../usr/lib64v0p7_xthead/lp64d/libc.so
|
||||||
BIN
device/milkv-duo-spinand/br_overlay/usr/lib64v0p7_xthead/lp64d/libc.so
Executable file
BIN
device/milkv-duo-spinand/br_overlay/usr/lib64v0p7_xthead/lp64d/libc.so
Executable file
Binary file not shown.
2
device/milkv-duo-spinand/br_overlay/usr/local/bin/autologin
Executable file
2
device/milkv-duo-spinand/br_overlay/usr/local/bin/autologin
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
exec /bin/login -f root
|
||||||
43
device/milkv-duo-spinand/genimage.cfg
Normal file
43
device/milkv-duo-spinand/genimage.cfg
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
flash nand-128M-2048 {
|
||||||
|
pebsize = 131072
|
||||||
|
numpebs = 1024
|
||||||
|
minimum-io-unit-size = 2048
|
||||||
|
}
|
||||||
|
|
||||||
|
image milkv-duospinand.img {
|
||||||
|
flash {
|
||||||
|
}
|
||||||
|
flashtype = "nand-128M-2048"
|
||||||
|
|
||||||
|
partition fip {
|
||||||
|
image = "fip.bin"
|
||||||
|
size = 2560k
|
||||||
|
}
|
||||||
|
|
||||||
|
partition boot {
|
||||||
|
image = "rawimages/boot.spinand"
|
||||||
|
size = 6144k
|
||||||
|
}
|
||||||
|
|
||||||
|
partition env {
|
||||||
|
size = 128k
|
||||||
|
}
|
||||||
|
|
||||||
|
partition env_bak {
|
||||||
|
size = 128k
|
||||||
|
}
|
||||||
|
|
||||||
|
partition rootfs {
|
||||||
|
image = "rootfs.spinand"
|
||||||
|
size = 40960k
|
||||||
|
}
|
||||||
|
|
||||||
|
partition system {
|
||||||
|
image = "rawimages/system.spinand"
|
||||||
|
size = 71680k
|
||||||
|
|
||||||
|
partition cfg {
|
||||||
|
image = "rawimages/cfg.spinand"
|
||||||
|
size = 4096k
|
||||||
|
}
|
||||||
|
}
|
||||||
21
device/milkv-duo-spinand/overlay/mnt/system/blink.sh
Executable file
21
device/milkv-duo-spinand/overlay/mnt/system/blink.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
LED_PIN=440
|
||||||
|
|
||||||
|
LED_GPIO=/sys/class/gpio/gpio${LED_PIN}
|
||||||
|
|
||||||
|
if test -d ${LED_GPIO}; then
|
||||||
|
echo "PIN ${LED_PIN} already exported"
|
||||||
|
else
|
||||||
|
echo ${LED_PIN} > /sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo out > ${LED_GPIO}/direction
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo 0 > ${LED_GPIO}/value
|
||||||
|
sleep 0.5
|
||||||
|
echo 1 > ${LED_GPIO}/value
|
||||||
|
sleep 0.5
|
||||||
|
done
|
||||||
|
|
||||||
11
device/milkv-duo-spinand/overlay/mnt/system/duo-init.sh
Executable file
11
device/milkv-duo-spinand/overlay/mnt/system/duo-init.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Set Pin-29(GP22) to GPIO
|
||||||
|
devmem 0x0502707c 32 0x111
|
||||||
|
devmem 0x03001068 32 0x3
|
||||||
|
|
||||||
|
# Set Pin-19(GP14) to GPIO
|
||||||
|
duo-pinmux -w GP14/GP14 > /dev/null
|
||||||
|
|
||||||
|
# insmod pwm module
|
||||||
|
insmod /mnt/system/ko/cv180x_pwm.ko
|
||||||
4
device/milkv-duo-spinand/overlay/mnt/system/usb-host.sh
Executable file
4
device/milkv-duo-spinand/overlay/mnt/system/usb-host.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo host > /proc/cviusb/otg_role >> /tmp/usb.log 2>&1
|
||||||
|
|
||||||
14
device/milkv-duo-spinand/overlay/mnt/system/usb-rndis.sh
Executable file
14
device/milkv-duo-spinand/overlay/mnt/system/usb-rndis.sh
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
/etc/uhubon.sh device >> /tmp/rndis.log 2>&1
|
||||||
|
/etc/run_usb.sh probe rndis >> /tmp/rndis.log 2>&1
|
||||||
|
/etc/run_usb.sh start rndis >> /tmp/rndis.log 2>&1
|
||||||
|
|
||||||
|
sleep 0.5
|
||||||
|
ifconfig usb0 192.168.42.1
|
||||||
|
|
||||||
|
count=`ps | grep dnsmasq | grep -v grep | wc -l`
|
||||||
|
if [ ${count} -lt 1 ] ;then
|
||||||
|
echo "/etc/init.d/S80dnsmasq start" >> /tmp/rndis.log 2>&1
|
||||||
|
/etc/init.d/S80dnsmasq start >> /tmp/rndis.log 2>&1
|
||||||
|
fi
|
||||||
1
device/milkv-duo-spinand/overlay/mnt/system/usb.sh
Symbolic link
1
device/milkv-duo-spinand/overlay/mnt/system/usb.sh
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
usb-host.sh
|
||||||
8
device/milkv-duo-spinor/boardconfig.sh
Normal file
8
device/milkv-duo-spinor/boardconfig.sh
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export MV_BOARD=milkv-duo-spinor
|
||||||
|
export MV_BOARD_CPU=cv1800b
|
||||||
|
export MV_VENDOR=milkv
|
||||||
|
export MV_BUILD_ENV=milkvsetup.sh
|
||||||
|
export MV_BOARD_LINK=cv1800b_milkv_duo_spinor
|
||||||
|
|
||||||
6
device/milkv-duo-spinor/br_overlay/.gitignore
vendored
Normal file
6
device/milkv-duo-spinor/br_overlay/.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
mnt/system/
|
||||||
|
mnt/cfg/
|
||||||
|
mnt/data/
|
||||||
|
usr/bin
|
||||||
|
usr/share
|
||||||
|
usr/lib
|
||||||
4
device/milkv-duo-spinor/br_overlay/etc/dnsmasq.conf
Normal file
4
device/milkv-duo-spinor/br_overlay/etc/dnsmasq.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
interface=usb0
|
||||||
|
dhcp-range=192.168.42.2,192.168.42.242,1h
|
||||||
|
dhcp-option=3
|
||||||
|
dhcp-option=6
|
||||||
50
device/milkv-duo-spinor/br_overlay/etc/init.d/S99user
Executable file
50
device/milkv-duo-spinor/br_overlay/etc/init.d/S99user
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
${CVI_SHOPTS}
|
||||||
|
#
|
||||||
|
# Start firmware
|
||||||
|
#
|
||||||
|
export USERDATAPATH=/mnt/data/
|
||||||
|
export SYSTEMPATH=/mnt/system/
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo "init mpp system..."
|
||||||
|
if [ -d $SYSTEMPATH/ko ]; then
|
||||||
|
sh $SYSTEMPATH/ko/loadsystemko.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Starting app..."
|
||||||
|
|
||||||
|
if [ -f $SYSTEMPATH/duo-init.sh ]; then
|
||||||
|
. $SYSTEMPATH/duo-init.sh &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $SYSTEMPATH/blink.sh ]; then
|
||||||
|
. $SYSTEMPATH/blink.sh &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $SYSTEMPATH/usb.sh ]; then
|
||||||
|
. $SYSTEMPATH/usb.sh &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $USERDATAPATH/auto.sh ]; then
|
||||||
|
usleep 30000
|
||||||
|
. $USERDATAPATH/auto.sh &
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -f $SYSTEMPATH/auto.sh ]; then
|
||||||
|
usleep 30000
|
||||||
|
. $SYSTEMPATH/auto.sh &
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
;;
|
||||||
|
restart|reload)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {start|stop|restart}"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit $?
|
||||||
|
|
||||||
40
device/milkv-duo-spinor/br_overlay/etc/inittab
Normal file
40
device/milkv-duo-spinor/br_overlay/etc/inittab
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# /etc/inittab
|
||||||
|
#
|
||||||
|
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
|
||||||
|
#
|
||||||
|
# Note: BusyBox init doesn't support runlevels. The runlevels field is
|
||||||
|
# completely ignored by BusyBox init. If you want runlevels, use
|
||||||
|
# sysvinit.
|
||||||
|
#
|
||||||
|
# Format for each entry: <id>:<runlevels>:<action>:<process>
|
||||||
|
#
|
||||||
|
# id == tty to run on, or empty for /dev/console
|
||||||
|
# runlevels == ignored
|
||||||
|
# action == one of sysinit, respawn, askfirst, wait, and once
|
||||||
|
# process == program to run
|
||||||
|
|
||||||
|
# Startup the system
|
||||||
|
::sysinit:/bin/mount -t proc proc /proc
|
||||||
|
::sysinit:/bin/mount -o remount,rw /
|
||||||
|
::sysinit:/bin/mkdir -p /dev/pts /dev/shm
|
||||||
|
::sysinit:/bin/mount -a
|
||||||
|
::sysinit:/sbin/swapon -a
|
||||||
|
null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd
|
||||||
|
null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin
|
||||||
|
null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout
|
||||||
|
null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr
|
||||||
|
::sysinit:/bin/hostname -F /etc/hostname
|
||||||
|
# now run any rc scripts
|
||||||
|
::sysinit:/etc/init.d/rcS
|
||||||
|
|
||||||
|
# Put a getty on the serial port
|
||||||
|
# console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
|
||||||
|
console::respawn:/sbin/getty -L console 115200 vt100 -n -l /usr/local/bin/autologin
|
||||||
|
|
||||||
|
# Stuff to do for the 3-finger salute
|
||||||
|
#::ctrlaltdel:/sbin/reboot
|
||||||
|
|
||||||
|
# Stuff to do before rebooting
|
||||||
|
::shutdown:/etc/init.d/rcK
|
||||||
|
::shutdown:/sbin/swapoff -a
|
||||||
|
::shutdown:/bin/umount -a -r
|
||||||
37
device/milkv-duo-spinor/br_overlay/etc/profile
Normal file
37
device/milkv-duo-spinor/br_overlay/etc/profile
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"
|
||||||
|
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/mnt/system/usr/bin:/mnt/system/usr/sbin:/mnt/data/bin:/mnt/data/sbin"
|
||||||
|
|
||||||
|
if [ "$PS1" ]; then
|
||||||
|
if [ "`id -u`" -eq 0 ]; then
|
||||||
|
export PS1='# '
|
||||||
|
else
|
||||||
|
export PS1='$ '
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
export PAGER='/bin/more '
|
||||||
|
export EDITOR='/bin/vi'
|
||||||
|
|
||||||
|
# Source configuration files from /etc/profile.d
|
||||||
|
for i in /etc/profile.d/*.sh ; do
|
||||||
|
if [ -r "$i" ]; then
|
||||||
|
. $i
|
||||||
|
fi
|
||||||
|
unset i
|
||||||
|
done
|
||||||
|
|
||||||
|
export HOSTNAME="$(hostname)"
|
||||||
|
export OLDPWD=/root
|
||||||
|
|
||||||
|
if [ '$USER' == 'root' ]; then
|
||||||
|
export PS1='[\u@\h]\w\# '
|
||||||
|
else
|
||||||
|
export PS1='[\u@\h]\w\$ '
|
||||||
|
fi
|
||||||
|
|
||||||
|
alias ll='ls -alF'
|
||||||
|
alias la='ls -A'
|
||||||
|
alias l='ls -CF'
|
||||||
|
|
||||||
|
export TERM=vt100
|
||||||
|
export TERMINFO=/usr/share/terminfo
|
||||||
292
device/milkv-duo-spinor/br_overlay/etc/run_usb.sh
Executable file
292
device/milkv-duo-spinor/br_overlay/etc/run_usb.sh
Executable file
@ -0,0 +1,292 @@
|
|||||||
|
CLASS=acm
|
||||||
|
VID=0x3346
|
||||||
|
PID=0x1003
|
||||||
|
MSC_PID=0x1008
|
||||||
|
RNDIS_PID=0x1009
|
||||||
|
UVC_PID=0x100A
|
||||||
|
UAC_PID=0x100B
|
||||||
|
ADB_VID=0x18D1
|
||||||
|
ADB_PID=0x4EE0
|
||||||
|
ADB_PID_M1=0x4EE2
|
||||||
|
ADB_PID_M2=0x4EE4
|
||||||
|
MANUFACTURER="Cvitek"
|
||||||
|
PRODUCT="USB Com Port"
|
||||||
|
PRODUCT_RNDIS="RNDIS"
|
||||||
|
PRODUCT_UVC="UVC"
|
||||||
|
PRODUCT_UAC="UAC"
|
||||||
|
PRODUCT_ADB="ADB"
|
||||||
|
ADBD_PATH=/usr/bin/
|
||||||
|
SERIAL="0123456789"
|
||||||
|
MSC_FILE=$3
|
||||||
|
CVI_DIR=/tmp/usb
|
||||||
|
CVI_GADGET=$CVI_DIR/usb_gadget/cvitek
|
||||||
|
CVI_FUNC=$CVI_GADGET/functions
|
||||||
|
FUNC_NUM=0
|
||||||
|
MAX_EP_NUM=4
|
||||||
|
TMP_NUM=0
|
||||||
|
INTF_NUM=0
|
||||||
|
EP_IN=0
|
||||||
|
EP_OUT=0
|
||||||
|
|
||||||
|
case "$2" in
|
||||||
|
acm)
|
||||||
|
CLASS=acm
|
||||||
|
;;
|
||||||
|
msc)
|
||||||
|
CLASS=mass_storage
|
||||||
|
PID=$MSC_PID
|
||||||
|
;;
|
||||||
|
cvg)
|
||||||
|
CLASS=cvg
|
||||||
|
;;
|
||||||
|
rndis)
|
||||||
|
CLASS=rndis
|
||||||
|
PID=$RNDIS_PID
|
||||||
|
PRODUCT=$PRODUCT_RNDIS
|
||||||
|
;;
|
||||||
|
uvc)
|
||||||
|
CLASS=uvc
|
||||||
|
PID=$UVC_PID
|
||||||
|
PRODUCT=$PRODUCT_UVC
|
||||||
|
;;
|
||||||
|
uac1)
|
||||||
|
CLASS=uac1
|
||||||
|
PID=$UAC_PID
|
||||||
|
PRODUCT=$PRODUCT_UAC
|
||||||
|
;;
|
||||||
|
adb)
|
||||||
|
CLASS=ffs.adb
|
||||||
|
VID=$ADB_VID
|
||||||
|
PID=$ADB_PID
|
||||||
|
PRODUCT=$PRODUCT_ADB
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$1" = "probe" ] ; then
|
||||||
|
echo "Usage: $0 probe {acm|msc|cvg|rndis|uvc|uac1|adb}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
esac
|
||||||
|
|
||||||
|
calc_func() {
|
||||||
|
FUNC_NUM=$(ls $CVI_GADGET/functions -l | grep ^d | wc -l)
|
||||||
|
echo "$FUNC_NUM file(s)"
|
||||||
|
}
|
||||||
|
|
||||||
|
res_check() {
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "acm*" | wc -l)
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
TMP_NUM=$(($TMP_NUM * 2))
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "mass_storage*" | wc -l)
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "cvg*" | wc -l)
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "rndis*" | wc -l)
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
TMP_NUM=$(($TMP_NUM * 2))
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "uvc*" | wc -l)
|
||||||
|
TMP_NUM=$(($TMP_NUM * 2))
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name "uac1*" | wc -l)
|
||||||
|
TMP_NUM=$(($TMP_NUM * 2))
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
TMP_NUM=$(find $CVI_GADGET/functions/ -name ffs.adb | wc -l)
|
||||||
|
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||||
|
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||||
|
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||||
|
|
||||||
|
if [ "$CLASS" = "acm" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+2))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "mass_storage" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+1))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "cvg" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+1))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "rndis" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+2))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "uvc" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+2))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "uac1" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+1))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "ffs.adb" ] ; then
|
||||||
|
EP_IN=$(($EP_IN+1))
|
||||||
|
EP_OUT=$(($EP_OUT+1))
|
||||||
|
fi
|
||||||
|
echo "$EP_IN in ep"
|
||||||
|
echo "$EP_OUT out ep"
|
||||||
|
if [ $EP_IN -gt $MAX_EP_NUM ]; then
|
||||||
|
echo "reach maximum resource"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ $EP_OUT -gt $MAX_EP_NUM ]; then
|
||||||
|
echo "reach maximum resource"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
probe() {
|
||||||
|
if [ ! -d $CVI_DIR ]; then
|
||||||
|
mkdir $CVI_DIR
|
||||||
|
fi
|
||||||
|
if [ ! -d $CVI_DIR/usb_gadget ]; then
|
||||||
|
# Enale USB ConfigFS
|
||||||
|
mount none $CVI_DIR -t configfs
|
||||||
|
# Create gadget dev
|
||||||
|
mkdir $CVI_GADGET
|
||||||
|
# Set the VID and PID
|
||||||
|
echo $VID >$CVI_GADGET/idVendor
|
||||||
|
echo $PID >$CVI_GADGET/idProduct
|
||||||
|
# Set the product information string
|
||||||
|
mkdir $CVI_GADGET/strings/0x409
|
||||||
|
echo $MANUFACTURER>$CVI_GADGET/strings/0x409/manufacturer
|
||||||
|
echo $PRODUCT>$CVI_GADGET/strings/0x409/product
|
||||||
|
echo $SERIAL>$CVI_GADGET/strings/0x409/serialnumber
|
||||||
|
# Set the USB configuration
|
||||||
|
mkdir $CVI_GADGET/configs/c.1
|
||||||
|
mkdir $CVI_GADGET/configs/c.1/strings/0x409
|
||||||
|
echo "config1">$CVI_GADGET/configs/c.1/strings/0x409/configuration
|
||||||
|
# Set the MaxPower of USB descriptor
|
||||||
|
echo 120 >$CVI_GADGET/configs/c.1/MaxPower
|
||||||
|
fi
|
||||||
|
# get current functions number
|
||||||
|
calc_func
|
||||||
|
# assign the class code for composite device
|
||||||
|
if [ ! $FUNC_NUM -eq 0 ]; then
|
||||||
|
echo 0xEF >$CVI_GADGET/bDeviceClass
|
||||||
|
echo 0x02 >$CVI_GADGET/bDeviceSubClass
|
||||||
|
echo 0x01 >$CVI_GADGET/bDeviceProtocol
|
||||||
|
fi
|
||||||
|
# resource check
|
||||||
|
res_check
|
||||||
|
# create the desired function
|
||||||
|
if [ "$CLASS" = "ffs.adb" ] ; then
|
||||||
|
# adb shall be the last function to probe. Override the pid/vid
|
||||||
|
echo $VID >$CVI_GADGET/idVendor
|
||||||
|
echo $PID >$CVI_GADGET/idProduct
|
||||||
|
# choose pid for different function number
|
||||||
|
if [ $INTF_NUM -eq 1 ]; then
|
||||||
|
echo $ADB_PID_M1 >$CVI_GADGET/idProduct
|
||||||
|
fi
|
||||||
|
if [ $INTF_NUM -eq 2 ]; then
|
||||||
|
echo $ADB_PID_M2 >$CVI_GADGET/idProduct
|
||||||
|
fi
|
||||||
|
mkdir $CVI_GADGET/functions/$CLASS
|
||||||
|
else
|
||||||
|
mkdir $CVI_GADGET/functions/$CLASS.usb$FUNC_NUM
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "mass_storage" ] ; then
|
||||||
|
echo $MSC_FILE >$CVI_GADGET/functions/$CLASS.usb$FUNC_NUM/lun.0/file
|
||||||
|
fi
|
||||||
|
if [ "$CLASS" = "rndis" ] ; then
|
||||||
|
#OS STRING
|
||||||
|
echo 1 >$CVI_GADGET/os_desc/use
|
||||||
|
echo 0xcd >$CVI_GADGET/os_desc/b_vendor_code
|
||||||
|
echo MSFT100 >$CVI_GADGET/os_desc/qw_sign
|
||||||
|
#COMPATIBLE ID
|
||||||
|
echo RNDIS >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/compatible_id
|
||||||
|
#MAKE c.1 THE ONE ASSOCIATED WITH OS DESCRIPTORS
|
||||||
|
ln -s $CVI_GADGET/configs/c.1 $CVI_GADGET/os_desc
|
||||||
|
#MAKE "Icons" EXTENDED PROPERTY
|
||||||
|
mkdir $CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons
|
||||||
|
echo 2 >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons/type
|
||||||
|
echo "%SystemRoot%\\system32\\shell32.dll,-233" >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons/data
|
||||||
|
#MAKE "Label" EXTENDED PROPERTY
|
||||||
|
mkdir $CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label
|
||||||
|
echo 1 >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label/type
|
||||||
|
echo "XYZ Device" >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label/data
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
# link this function to the configuration
|
||||||
|
calc_func
|
||||||
|
if [ $FUNC_NUM -eq 0 ]; then
|
||||||
|
echo "Functions Empty!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -d $CVI_GADGET/functions/ffs.adb ]; then
|
||||||
|
FUNC_NUM=$(($FUNC_NUM-1))
|
||||||
|
fi
|
||||||
|
for i in `seq 0 $(($FUNC_NUM-1))`;
|
||||||
|
do
|
||||||
|
find $CVI_GADGET/functions/ -name "*.usb$i" | xargs -I % ln -s % $CVI_GADGET/configs/c.1
|
||||||
|
done
|
||||||
|
if [ -d $CVI_GADGET/functions/ffs.adb ]; then
|
||||||
|
ln -s $CVI_GADGET/functions/ffs.adb $CVI_GADGET/configs/c.1
|
||||||
|
mkdir /dev/usb-ffs/adb -p
|
||||||
|
mount -t functionfs adb /dev/usb-ffs/adb
|
||||||
|
if [ -f $ADBD_PATH/adbd ]; then
|
||||||
|
$ADBD_PATH/adbd &
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Start the gadget driver
|
||||||
|
UDC=`ls /sys/class/udc/ | awk '{print $1}'`
|
||||||
|
echo ${UDC} >$CVI_GADGET/UDC
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
if [ -d $CVI_GADGET/configs/c.1/ffs.adb ]; then
|
||||||
|
pkill adbd
|
||||||
|
rm $CVI_GADGET/configs/c.1/ffs.adb
|
||||||
|
else
|
||||||
|
echo "" >$CVI_GADGET/UDC
|
||||||
|
fi
|
||||||
|
find $CVI_GADGET/configs/ -name "*.usb*" | xargs rm -f
|
||||||
|
rmdir $CVI_GADGET/configs/c.*/strings/0x409/
|
||||||
|
tmp_dirs=$(find $CVI_GADGET/os_desc/c.* -type d)
|
||||||
|
if [ -n tmp_dirs ]; then
|
||||||
|
echo "remove os_desc!"
|
||||||
|
rm -rf $CVI_GADGET/os_desc/c.*/
|
||||||
|
find $CVI_GADGET/functions/ -name Icons | xargs rmdir
|
||||||
|
find $CVI_GADGET/functions/ -name Label | xargs rmdir
|
||||||
|
fi
|
||||||
|
rmdir $CVI_GADGET/configs/c.*/
|
||||||
|
rmdir $CVI_GADGET/functions/*
|
||||||
|
rmdir $CVI_GADGET/strings/0x409/
|
||||||
|
rmdir $CVI_GADGET
|
||||||
|
umount $CVI_DIR
|
||||||
|
rmdir $CVI_DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop
|
||||||
|
;;
|
||||||
|
probe)
|
||||||
|
probe
|
||||||
|
;;
|
||||||
|
UDC)
|
||||||
|
ls /sys/class/udc/ >$CVI_GADGET/UDC
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 probe {acm|msc|cvg|uvc|uac1} {file (msc)}"
|
||||||
|
echo "Usage: $0 start"
|
||||||
|
echo "Usage: $0 stop"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
exit $?
|
||||||
83
device/milkv-duo-spinor/br_overlay/etc/uhubon.sh
Executable file
83
device/milkv-duo-spinor/br_overlay/etc/uhubon.sh
Executable file
@ -0,0 +1,83 @@
|
|||||||
|
GPIO_HUBPORT_EN=449
|
||||||
|
GPIO_ROLESEL=450
|
||||||
|
GPIO_HUBRST=451
|
||||||
|
SYS_GPIO=/sys/class/gpio
|
||||||
|
|
||||||
|
hub_on() {
|
||||||
|
echo "turn on usb hub"
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_HUBPORT_EN ]; then
|
||||||
|
echo $GPIO_HUBPORT_EN >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_ROLESEL ]; then
|
||||||
|
echo $GPIO_ROLESEL >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_HUBRST ]; then
|
||||||
|
echo $GPIO_HUBRST >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_HUBPORT_EN/direction
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_ROLESEL/direction
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_HUBRST/direction
|
||||||
|
|
||||||
|
echo 1 >/sys/class/gpio/gpio$GPIO_HUBPORT_EN/value
|
||||||
|
echo 0 >/sys/class/gpio/gpio$GPIO_ROLESEL/value
|
||||||
|
echo 0 >/sys/class/gpio/gpio$GPIO_HUBRST/value
|
||||||
|
}
|
||||||
|
|
||||||
|
hub_off() {
|
||||||
|
echo "turn off usb hub"
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_HUBPORT_EN ]; then
|
||||||
|
echo $GPIO_HUBPORT_EN >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_ROLESEL ]; then
|
||||||
|
echo $GPIO_ROLESEL >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SYS_GPIO/gpio$GPIO_HUBRST ]; then
|
||||||
|
echo $GPIO_HUBRST >/sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_HUBPORT_EN/direction
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_ROLESEL/direction
|
||||||
|
echo "out" >/sys/class/gpio/gpio$GPIO_HUBRST/direction
|
||||||
|
|
||||||
|
echo 0 >/sys/class/gpio/gpio$GPIO_HUBPORT_EN/value
|
||||||
|
echo 1 >/sys/class/gpio/gpio$GPIO_ROLESEL/value
|
||||||
|
echo 1 >/sys/class/gpio/gpio$GPIO_HUBRST/value
|
||||||
|
}
|
||||||
|
|
||||||
|
inst_mod() {
|
||||||
|
insmod /mnt/system/ko/configfs.ko
|
||||||
|
insmod /mnt/system/ko/libcomposite.ko
|
||||||
|
insmod /mnt/system/ko/u_serial.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_acm.ko
|
||||||
|
insmod /mnt/system/ko/cvi_usb_f_cvg.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_uvc.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_fs.ko
|
||||||
|
insmod /mnt/system/ko/u_audio.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_uac1.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_serial.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_mass_storage.ko
|
||||||
|
insmod /mnt/system/ko/u_ether.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_ecm.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_eem.ko
|
||||||
|
insmod /mnt/system/ko/usb_f_rndis.ko
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
host)
|
||||||
|
insmod /mnt/system/ko/dwc2.ko
|
||||||
|
echo host > /proc/cviusb/otg_role
|
||||||
|
;;
|
||||||
|
device)
|
||||||
|
echo device > /proc/cviusb/otg_role
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 host"
|
||||||
|
echo "Usage: $0 device"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
exit $?
|
||||||
@ -0,0 +1 @@
|
|||||||
|
../usr/lib64v0p7_xthead/lp64d/libc.so
|
||||||
BIN
device/milkv-duo-spinor/br_overlay/usr/lib64v0p7_xthead/lp64d/libc.so
Executable file
BIN
device/milkv-duo-spinor/br_overlay/usr/lib64v0p7_xthead/lp64d/libc.so
Executable file
Binary file not shown.
2
device/milkv-duo-spinor/br_overlay/usr/local/bin/autologin
Executable file
2
device/milkv-duo-spinor/br_overlay/usr/local/bin/autologin
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
exec /bin/login -f root
|
||||||
30
device/milkv-duo-spinor/genimage.cfg
Normal file
30
device/milkv-duo-spinor/genimage.cfg
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
flash nor-32M-256 {
|
||||||
|
pebsize = 4096
|
||||||
|
numpebs = 8192
|
||||||
|
minimum-io-unit-size = 256
|
||||||
|
}
|
||||||
|
|
||||||
|
image milkv-duospinor.img {
|
||||||
|
flash {
|
||||||
|
}
|
||||||
|
flashtype = "nor-32M-256"
|
||||||
|
|
||||||
|
partition fip {
|
||||||
|
image = "fip.bin"
|
||||||
|
size = 640k
|
||||||
|
}
|
||||||
|
|
||||||
|
partition boot {
|
||||||
|
image = "rawimages/boot.spinor"
|
||||||
|
size = 4096k
|
||||||
|
}
|
||||||
|
|
||||||
|
partition env {
|
||||||
|
size = 64k
|
||||||
|
}
|
||||||
|
|
||||||
|
partition rootfs {
|
||||||
|
image = "rawimages/rootfs.spinor"
|
||||||
|
size = 27968k
|
||||||
|
}
|
||||||
|
}
|
||||||
21
device/milkv-duo-spinor/overlay/mnt/system/blink.sh
Executable file
21
device/milkv-duo-spinor/overlay/mnt/system/blink.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
LED_PIN=440
|
||||||
|
|
||||||
|
LED_GPIO=/sys/class/gpio/gpio${LED_PIN}
|
||||||
|
|
||||||
|
if test -d ${LED_GPIO}; then
|
||||||
|
echo "PIN ${LED_PIN} already exported"
|
||||||
|
else
|
||||||
|
echo ${LED_PIN} > /sys/class/gpio/export
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo out > ${LED_GPIO}/direction
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo 0 > ${LED_GPIO}/value
|
||||||
|
sleep 0.5
|
||||||
|
echo 1 > ${LED_GPIO}/value
|
||||||
|
sleep 0.5
|
||||||
|
done
|
||||||
|
|
||||||
11
device/milkv-duo-spinor/overlay/mnt/system/duo-init.sh
Executable file
11
device/milkv-duo-spinor/overlay/mnt/system/duo-init.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Set Pin-29(GP22) to GPIO
|
||||||
|
devmem 0x0502707c 32 0x111
|
||||||
|
devmem 0x03001068 32 0x3
|
||||||
|
|
||||||
|
# Set Pin-19(GP14) to GPIO
|
||||||
|
duo-pinmux -w GP14/GP14 > /dev/null
|
||||||
|
|
||||||
|
# insmod pwm module
|
||||||
|
insmod /mnt/system/ko/cv180x_pwm.ko
|
||||||
4
device/milkv-duo-spinor/overlay/mnt/system/usb-host.sh
Executable file
4
device/milkv-duo-spinor/overlay/mnt/system/usb-host.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo host > /proc/cviusb/otg_role >> /tmp/usb.log 2>&1
|
||||||
|
|
||||||
14
device/milkv-duo-spinor/overlay/mnt/system/usb-rndis.sh
Executable file
14
device/milkv-duo-spinor/overlay/mnt/system/usb-rndis.sh
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
/etc/uhubon.sh device >> /tmp/rndis.log 2>&1
|
||||||
|
/etc/run_usb.sh probe rndis >> /tmp/rndis.log 2>&1
|
||||||
|
/etc/run_usb.sh start rndis >> /tmp/rndis.log 2>&1
|
||||||
|
|
||||||
|
sleep 0.5
|
||||||
|
ifconfig usb0 192.168.42.1
|
||||||
|
|
||||||
|
count=`ps | grep dnsmasq | grep -v grep | wc -l`
|
||||||
|
if [ ${count} -lt 1 ] ;then
|
||||||
|
echo "/etc/init.d/S80dnsmasq start" >> /tmp/rndis.log 2>&1
|
||||||
|
/etc/init.d/S80dnsmasq start >> /tmp/rndis.log 2>&1
|
||||||
|
fi
|
||||||
1
device/milkv-duo-spinor/overlay/mnt/system/usb.sh
Symbolic link
1
device/milkv-duo-spinor/overlay/mnt/system/usb.sh
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
usb-host.sh
|
||||||
1
fsbl/plat/cv180x/bl2_objs/cv1800b_milkv_duo_spinand
Symbolic link
1
fsbl/plat/cv180x/bl2_objs/cv1800b_milkv_duo_spinand
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
cv1800b_wdmb_0008a_spinor
|
||||||
1
fsbl/plat/cv180x/bl2_objs/cv1800b_milkv_duo_spinor
Symbolic link
1
fsbl/plat/cv180x/bl2_objs/cv1800b_milkv_duo_spinor
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
cv1800b_wdmb_0008a_spinor
|
||||||
@ -86,7 +86,8 @@ int _prgImage(char *file, uint32_t chunk_header_size, char *file_name)
|
|||||||
#elif defined(CONFIG_SPI_FLASH)
|
#elif defined(CONFIG_SPI_FLASH)
|
||||||
if (update_magic == SD_UPDATE_MAGIC && (!strcmp(file_name, "fip_spl.bin")
|
if (update_magic == SD_UPDATE_MAGIC && (!strcmp(file_name, "fip_spl.bin")
|
||||||
|| !strcmp(file_name, "fip.bin")
|
|| !strcmp(file_name, "fip.bin")
|
||||||
|| !strcmp(file_name, "boot.spinor"))) {
|
|| !strcmp(file_name, "boot.spinor")
|
||||||
|
|| !strcmp(file_name, "rootfs.spinor"))) {
|
||||||
snprintf(cmd, 255, "sf update %p 0x%x 0x%x",
|
snprintf(cmd, 255, "sf update %p 0x%x 0x%x",
|
||||||
(void *)file + chunk_header_size, offset, size);
|
(void *)file + chunk_header_size, offset, size);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user