Skip to content

Commit 9b43cb9

Browse files
committed
Add OrangePi RV2 support with RISC-V KY platform
Implements complete board support for OrangePi RV2 including: - New KY family configuration for RISC-V platform - Custom U-Boot sources from OrangePi (v2022.10-ky branch) - Custom kernel sources (orange-pi-6.6-ky branch) - SPI NOR flash boot support with MTD partitioning - Hardware support for WiFi (AP6256), Bluetooth, CAN, V4L - BSP packages and platform-specific configurations - Boot scripts and environment files Board boots from SPI flash with specialized bootloader layout. Based on OrangePi BSP adapted for current Armbian architecture. https://github.com/orangepi-xunlong/orangepi-build.git Tested: - board booted from SPI (Bootloader updated by the OrangePi BSP) -> SD (image generated by Armbian) - board booted from SPI -> NVMe SSD in the back slot (image generate by Armbian and dd-transfered to the SSD) - ethernet and WiFi works
1 parent 5c273e2 commit 9b43cb9

File tree

24 files changed

+22183
-0
lines changed

24 files changed

+22183
-0
lines changed

config/boards/orangepirv2.conf

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# OrangePi RV2 - RISC-V SoC with SPI flash boot
2+
BOARD_NAME="Orange Pi RV2"
3+
BOARDFAMILY="ky"
4+
BOARD_MAINTAINER="tmshlvck"
5+
KERNEL_TARGET="current,edge"
6+
BOOT_FDT_FILE="ky/x1_orangepi-rv2.dtb"
7+
BOOTDELAY=1
8+
SRC_EXTLINUX="yes"
9+
SRC_CMDLINE="console=ttyS0,115200 earlycon=sbi clk_ignore_unused swiotlb=65536"
10+
PACKAGE_LIST_BOARD="rfkill bluetooth bluez bluez-tools can-utils v4l-utils"
11+
#SKIP_BOOTSPLASH="yes" # Skip boot splash patch, conflicts with CONFIG_VT=yes
12+
13+
function post_config_uboot_target__extra_configs_for_orangepi_rv2() {
14+
display_alert "u-boot for ${BOARD}" "u-boot: enabling extra configs for SPI flash boot" "info"
15+
run_host_command_logged scripts/config --enable CONFIG_SD_BOOT
16+
run_host_command_logged scripts/config --enable CONFIG_EXT4_WRITE
17+
run_host_command_logged scripts/config --enable CONFIG_FS_BTRFS
18+
run_host_command_logged scripts/config --enable CONFIG_CMD_BTRFS
19+
run_host_command_logged scripts/config --enable CONFIG_CMD_SF
20+
run_host_command_logged scripts/config --enable CONFIG_SPI_FLASH
21+
run_host_command_logged scripts/config --enable CONFIG_SPI_FLASH_MTD
22+
run_host_command_logged scripts/config --enable CONFIG_CMD_MTD
23+
}
24+
25+
function post_family_tweaks_bsp__orangepi_rv2_extras() {
26+
display_alert "$BOARD" "Installing OrangePi RV2 specific configuration" "info"
27+
28+
if [[ -d "$SRC/packages/blobs/riscv64/ky" ]]; then
29+
run_host_command_logged mkdir -pv "${destination}"/lib/firmware
30+
display_alert "$BOARD" "Installing boot firmware" "info"
31+
run_host_command_logged cp -fv $SRC/packages/blobs/riscv64/ky/esos.elf "${destination}"/lib/firmware
32+
fi
33+
34+
# Force load wireless module if available
35+
if [[ -f "${destination}"/etc/modules-load.d/${BOARD}.conf ]]; then
36+
run_host_command_logged rm -f "${destination}"/etc/modules-load.d/${BOARD}.conf
37+
fi
38+
run_host_command_logged mkdir -pv "${destination}"/etc/modules-load.d
39+
40+
# Add wireless module for AP6256 if present
41+
if [[ "${BOARD}x" == "orangepirv2x" ]]; then
42+
echo "bcmdhd" > "${destination}"/etc/modules-load.d/${BOARD}.conf
43+
44+
# Copy WiFi firmware if available
45+
if [[ -f "${SRC}/packages/blobs/ky/nvram_ap6256.txt" ]]; then
46+
run_host_command_logged mkdir -pv "${destination}"/lib/firmware
47+
run_host_command_logged cp -v "${SRC}/packages/blobs/ky/nvram_ap6256.txt" "${destination}"/lib/firmware/
48+
fi
49+
fi
50+
}

config/bootenv/ky.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
verbosity=1
2+
bootlogo=false

config/bootscripts/boot-ky.cmd

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# DO NOT EDIT THIS FILE
2+
#
3+
# Please edit /boot/orangepiEnv.txt to set supported parameters
4+
#
5+
6+
setenv load_addr "0x9000000"
7+
setenv overlay_error "false"
8+
# default values
9+
setenv verbosity "1"
10+
setenv console "both"
11+
setenv bootlogo "false"
12+
setenv rootfstype "ext4"
13+
setenv docker_optimizations "on"
14+
setenv earlycon "on"
15+
16+
echo "Boot script loaded from ${devtype} ${devnum}"
17+
18+
#if test -e ${devtype} ${devnum} ${prefix}orangepiEnv.txt; then
19+
load ${devtype} ${devnum} ${load_addr} ${prefix}orangepiEnv.txt
20+
env import -t ${load_addr} ${filesize}
21+
#fi
22+
23+
if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi
24+
25+
if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi
26+
if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "console=ttyS0,115200 ${consoleargs}"; fi
27+
if test "${earlycon}" = "on"; then setenv consoleargs "earlycon=sbi ${consoleargs}"; fi
28+
if test "${bootlogo}" = "true"; then setenv consoleargs "bootsplash.bootfile=bootsplash.orangepi ${consoleargs}"; fi
29+
30+
setenv bootargs "mtdparts=${mtdparts} root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} clk_ignore_unused swiotlb=65536 workqueue.default_affinity_scope=system usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
31+
32+
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1"; fi
33+
34+
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
35+
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}Image
36+
37+
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
38+
fdt addr ${fdt_addr_r}
39+
fdt rm /soc/lcd_backlight phandle
40+
fdt resize 65536
41+
for overlay_file in ${overlays}; do
42+
if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/ky/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
43+
echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
44+
fdt apply ${load_addr} || setenv overlay_error "true"
45+
fi
46+
done
47+
for overlay_file in ${user_overlays}; do
48+
if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
49+
echo "Applying user provided DT overlay ${overlay_file}.dtbo"
50+
fdt apply ${load_addr} || setenv overlay_error "true"
51+
fi
52+
done
53+
54+
booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
55+
56+
# Recompile with:
57+
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr

0 commit comments

Comments
 (0)