@@ -445,6 +445,8 @@ menu "Firmware"
source "package/b43-firmware/Config.in"
source "package/brcmfmac_sdio-firmware-rpi/Config.in"
source "package/linux-firmware/Config.in"
+ source "package/milkv-duo-firmware-fsbl/Config.in"
+ source "package/milkv-duo-smallcore-freertos/Config.in"
source "package/murata-cyw-fw/Config.in"
source "package/odroidc2-firmware/Config.in"
source "package/qcom-db410c-firmware/Config.in"
@@ -560,6 +562,7 @@ endmenu
source "package/memtester/Config.in"
source "package/memtool/Config.in"
source "package/mhz/Config.in"
+ source "package/milkv-duo-pinmux/Config.in"
source "package/minicom/Config.in"
source "package/msr-tools/Config.in"
source "package/nanocom/Config.in"
new file mode 100644
@@ -0,0 +1,29 @@
+config BR2_PACKAGE_MILKV_DUO_FIRMWARE_FSBL
+ bool "milkv-duo-firmware-fsbl"
+ depends on BR2_riscv
+ select BR2_PACKAGE_HOST_MTOOLS
+ help
+ This package is obtained from
+ https://github.com/milkv-duo/duo-buildroot-sdk,
+ from which we download the first stage bootloader source and
+ compile it, generating the atf bl2.bin. At the mean time, we
+ will use the fiptool.py in this package to create the binary
+ file fip.bin to pack the opensbi, u-boot and so on.
+
+ If you are using Buildroot to generate the whole SD card
+ Image or the fip.bin, you must say Y to this package!
+
+ https://github.com/gtxzsxxk/milkv-duo-firmware-fsbl
+
+if BR2_PACKAGE_MILKV_DUO_FIRMWARE_FSBL
+
+config BR2_PACKAGE_MILKV_DUO_FIRMWARE_FSBL_64MB
+ bool "64 MiB Free RAM"
+ default n
+ help
+ Say Y to this will disable the ION in order to
+ have the all 64MiB Free memory. Note that this
+ is only an option for fsbl. You should also
+ set the u-boot repo version to v2021.10_64mb.
+
+endif
new file mode 100644
@@ -0,0 +1,34 @@
+################################################################################
+#
+# milkv-duo-firmware-fsbl
+#
+################################################################################
+
+MILKV_DUO_FIRMWARE_FSBL_VERSION = c0d279ad5f2432ad62a4da6b7f42f0e0aa389d5c
+MILKV_DUO_FIRMWARE_FSBL_SITE = $(call github,milkv-duo,milkv-duo-firmware-fsbl,$(MILKV_DUO_FIRMWARE_FSBL_VERSION))
+MILKV_DUO_FIRMWARE_FSBL_INSTALL_STAGING = YES
+MILKV_DUO_FIRMWARE_FSBL_DEPENDENCIES = host-python3 host-mtools
+MILKV_DUO_FIRMWARE_FSBL_64MB = ION
+
+ifeq ($(BR2_PACKAGE_MILKV_DUO_FIRMWARE_FSBL_64MB),y)
+ MILKV_DUO_FIRMWARE_FSBL_64MB = 64MB
+endif
+
+define MILKV_DUO_FIRMWARE_FSBL_BUILD_CMDS
+ $(MAKE) -C $(@D) \
+ ARCH=riscv BOOT_CPU=riscv CHIP_ARCH=cv180x \
+ PROJECT_FULLNAME=cv1800b_milkv_duo_sd \
+ CROSS_COMPILE=$(TARGET_CROSS) \
+ FREE_RAM_SIZE=$(MILKV_DUO_FIRMWARE_FSBL_64MB) \
+ bl2
+endef
+
+define MILKV_DUO_FIRMWARE_FSBL_INSTALL_STAGING_CMDS
+ $(INSTALL) -D -m 0755 $(@D)/build/cv180x/bl2.bin $(BINARIES_DIR)/bl2.bin
+ $(INSTALL) -D -m 0755 $(@D)/plat/cv180x/chip_conf.bin $(BINARIES_DIR)/chip_conf.bin
+ $(INSTALL) -D -m 0755 $(@D)/plat/cv180x/fiptool.py $(BINARIES_DIR)/fiptool.py
+ $(INSTALL) -D -m 0644 $(@D)/plat/cv180x/multi.its $(BINARIES_DIR)/multi.its
+ $(INSTALL) -D -m 0755 $(@D)/test/cv181x/ddr_param.bin $(BINARIES_DIR)/ddr_param.bin
+endef
+
+$(eval $(generic-package))
new file mode 100644
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_MILKV_DUO_PINMUX
+ bool "milkv-duo-pinmux"
+ help
+ This package is obtained from
+ https://github.com/milkv-duo/duo-buildroot-sdk
+ from which we download source code of duo-pinmux.
+ This tool can get or set function of any Milk-V Duo
+ GPIO pin. More info at
+
+ https://milkv.io/docs/duo/application-development/pinmux
+
+ https://github.com/shodan8192/milkv-duo-pinmux
new file mode 100644
@@ -0,0 +1,19 @@
+################################################################################
+#
+# milkv-duo-pinmux
+#
+################################################################################
+
+MILKV_DUO_PINMUX_VERSION = c0e32327aaf13490437f485a3fb04bbb4c60f00f
+MILKV_DUO_PINMUX_SITE = $(call github,milkv-duo,milkv-duo-pinmux,$(MILKV_DUO_PINMUX_VERSION))
+
+define MILKV_DUO_PINMUX_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \
+ -I $(@D)/include $(@D)/src/*.c -o $(@D)/duo-pinmux
+endef
+
+define MILKV_DUO_PINMUX_INSTALL_TARGET_CMDS
+ $(INSTALL) -D -m 0755 $(@D)/duo-pinmux $(TARGET_DIR)/usr/bin/
+endef
+
+$(eval $(generic-package))
new file mode 100644
@@ -0,0 +1,21 @@
+config BR2_PACKAGE_MILKV_DUO_SMALLCORE_FREERTOS
+ bool "milkv-duo-smallcore-freertos"
+ depends on BR2_PACKAGE_MILKV_DUO_FIRMWARE_FSBL
+ select BR2_PACKAGE_HOST_CMAKE
+ help
+ This package is obtained from
+ https://github.com/milkv-duo/duo-buildroot-sdk,
+ from which we download the FreeRTOS ported to Milk-V Duo
+ into the Buildroot. This FreeRTOS will run in the small core
+ and will not do anything because it is simply a template
+ with some basic UART demos. You can realize your own ideas
+ by adding code to
+
+ output/build/milkv-duo-smallcore-freertos-hash/cvitek/task
+ /comm/src/riscv64/comm_main.c
+
+ If you say Y, then every time you make Buildroot, it will
+ automatically compile and include the FreeRTOS into the
+ fip.bin, which will then be packed into sdcard.img
+
+ https://github.com/gtxzsxxk/milkv-duo-smallcore-freertos
new file mode 100644
@@ -0,0 +1,108 @@
+################################################################################
+#
+# milkv-duo-smallcore-freertos
+#
+################################################################################
+
+MILKV_DUO_SMALLCORE_FREERTOS_VERSION = 1dac21ade58b0f9a0a531cfe93ee319337a88d80
+MILKV_DUO_SMALLCORE_FREERTOS_SITE = $(call github,milkv-duo,milkv-duo-smallcore-freertos,$(MILKV_DUO_SMALLCORE_FREERTOS_VERSION))
+MILKV_DUO_SMALLCORE_FREERTOS_INSTALL_STAGING = YES
+MILKV_DUO_SMALLCORE_FREERTOS_DEPENDENCIES = host-cmake host-ninja
+MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV = CROSS_COMPILE=$(TARGET_CROSS)
+
+define MILKV_DUO_SMALLCORE_FREERTOS_BUILD_CMDS
+ if [ ! -d $(@D)/cvitek/build/arch ]; then \
+ mkdir -p $(@D)/cvitek/build/arch; \
+ fi
+
+ cd $(@D)/cvitek/build/arch && \
+ $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) -G Ninja -DCHIP=cv180x \
+ -DTOP_DIR=$(@D)/cvitek \
+ -DRUN_TYPE=CVIRTOS \
+ -DRUN_ARCH=riscv64 \
+ -DBUILD_ENV_PATH=$(@D)/cvitek/build \
+ -DCMAKE_TOOLCHAIN_FILE=$(@D)/cvitek/scripts/toolchain-riscv64-elf.cmake \
+ $(@D)/cvitek/arch
+ cd $(@D)/cvitek/build/arch && $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) --build . --target install -- -v
+
+ if [ ! -d $(@D)/cvitek/build/kernel ]; then \
+ mkdir -p $(@D)/cvitek/build/kernel; \
+ fi
+
+ cd $(@D)/cvitek/build/kernel && \
+ $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) -G Ninja -DCHIP=cv180x \
+ -DRUN_ARCH=riscv64 \
+ -DTOP_DIR=$(@D)/cvitek \
+ -DBUILD_ENV_PATH=$(@D)/cvitek/build \
+ -DCMAKE_TOOLCHAIN_FILE=$(@D)/cvitek/scripts/toolchain-riscv64-elf.cmake \
+ $(@D)/cvitek/kernel
+ cd $(@D)/cvitek/build/kernel && $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) --build . --target install -- -v
+
+ if [ ! -d $(@D)/cvitek/build/common ]; then \
+ mkdir -p $(@D)/cvitek/build/common; \
+ fi
+
+ cd $(@D)/cvitek/build/common && \
+ $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) -G Ninja -DCHIP=cv180x \
+ -DRUN_ARCH=riscv64 \
+ -DTOP_DIR=$(@D)/cvitek \
+ -DBUILD_ENV_PATH=$(@D)/cvitek/build \
+ -DCMAKE_TOOLCHAIN_FILE=$(@D)/cvitek/scripts/toolchain-riscv64-elf.cmake \
+ $(@D)/cvitek/common
+ cd $(@D)/cvitek/build/common && $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) --build . --target install -- -v
+
+ if [ ! -d $(@D)/cvitek/build/hal ]; then \
+ mkdir -p $(@D)/cvitek/build/hal; \
+ fi
+
+ cd $(@D)/cvitek/build/hal && \
+ $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) -G Ninja -DCHIP=cv180x \
+ -DRUN_ARCH=riscv64 \
+ -DTOP_DIR=$(@D)/cvitek \
+ -DRUN_TYPE=CVIRTOS \
+ -DBUILD_ENV_PATH=$(@D)/cvitek/build \
+ -DCMAKE_TOOLCHAIN_FILE=$(@D)/cvitek/scripts/toolchain-riscv64-elf.cmake \
+ -DBOARD_FPGA=n \
+ $(@D)/cvitek/hal/cv180x
+ cd $(@D)/cvitek/build/hal && $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) --build . --target install -- -v
+
+ if [ ! -d $(@D)/cvitek/build/driver ]; then \
+ mkdir -p $(@D)/cvitek/build/driver; \
+ fi
+
+ cd $(@D)/cvitek/build/driver && \
+ $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) -G Ninja -DCHIP=cv180x \
+ -DRUN_ARCH=riscv64 \
+ -DTOP_DIR=$(@D)/cvitek \
+ -DRUN_TYPE=CVIRTOS \
+ -DBUILD_ENV_PATH=$(@D)/cvitek/build \
+ -DBOARD_FPGA=n \
+ -DCMAKE_TOOLCHAIN_FILE=$(@D)/cvitek/scripts/toolchain-riscv64-elf.cmake \
+ $(@D)/cvitek/driver
+ cd $(@D)/cvitek/build/driver && $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) --build . --target install -- -v
+
+ if [ ! -d $(@D)/cvitek/build/task ]; then \
+ mkdir -p $(@D)/cvitek/build/task; \
+ fi
+
+ cd $(@D)/cvitek/build/task && \
+ $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) -G Ninja -DCHIP=cv180x \
+ -DRUN_ARCH=riscv64 \
+ -DRUN_TYPE=CVIRTOS \
+ -DTOP_DIR=$(@D)/cvitek \
+ -DBUILD_ENV_PATH=$(@D)/cvitek/build \
+ -DBOARD_FPGA=n \
+ -DCMAKE_TOOLCHAIN_FILE=$(@D)/cvitek/scripts/toolchain-riscv64-elf.cmake \
+ $(@D)/cvitek/task
+ cd $(@D)/cvitek/build/task && $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) --build . --target install -- -v
+ cd $(@D)/cvitek/build/task && $(TARGET_MAKE_ENV) $(MILKV_DUO_SMALLCORE_FREERTOS_CONF_ENV) $(BR2_CMAKE) --build . --target cvirtos.bin -- -v
+endef
+
+define MILKV_DUO_SMALLCORE_FREERTOS_INSTALL_STAGING_CMDS
+ $(INSTALL) -D -m 0755 $(@D)/cvitek/install/bin/cvirtos.bin $(BINARIES_DIR)/cvirtos.bin
+ if [ ! -e $(BINARIES_DIR)/empty.bin ]; then \
+ touch $(BINARIES_DIR)/empty.bin; \
+ fi
+endef
+
+$(eval $(generic-package))
This commit adds the packages that are necessary for milkv-duo image's generating and configurations. Co-authored-by: Emil S <emil.soltys@outlook.com> Signed-off-by: Hanyuan Zhao <hanyuan-z@qq.com> --- package/Config.in | 3 + package/milkv-duo-firmware-fsbl/Config.in | 29 +++++ .../milkv-duo-firmware-fsbl.mk | 34 ++++++ package/milkv-duo-pinmux/Config.in | 12 ++ package/milkv-duo-pinmux/milkv-duo-pinmux.mk | 19 +++ .../milkv-duo-smallcore-freertos/Config.in | 21 ++++ .../milkv-duo-smallcore-freertos.mk | 108 ++++++++++++++++++ 7 files changed, 226 insertions(+) create mode 100644 package/milkv-duo-firmware-fsbl/Config.in create mode 100644 package/milkv-duo-firmware-fsbl/milkv-duo-firmware-fsbl.mk create mode 100644 package/milkv-duo-pinmux/Config.in create mode 100644 package/milkv-duo-pinmux/milkv-duo-pinmux.mk create mode 100644 package/milkv-duo-smallcore-freertos/Config.in create mode 100644 package/milkv-duo-smallcore-freertos/milkv-duo-smallcore-freertos.mk