Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
271 changes: 271 additions & 0 deletions br-ext-chip-hisilicon/board/hi3516cv500/hi3516av300.neo.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@
#
# Seed kernel config for hi3516av300_neo (CV500 platform, modern kernel).
# Expand with: make ARCH=arm olddefconfig
#

# Architecture — Cortex-A7, dual-core
CONFIG_ARM=y
CONFIG_ARCH_MULTI_V7=y
CONFIG_SMP=y
CONFIG_NR_CPUS=2
CONFIG_THUMB2_KERNEL=y
CONFIG_VMSPLIT_2G=y
CONFIG_NEON=y
CONFIG_VFP=y
CONFIG_VFPv3=y
# CONFIG_CACHE_L2X0 is not set

# HiSilicon BVT platform — hi3516dv300 (used by hi3516av300 model)
CONFIG_ARCH_HISI_BVT=y
# CONFIG_ARCH_HI3516A is not set
CONFIG_ARCH_HI3516DV300=y
# CONFIG_ARCH_HI3516CV500 is not set
# CONFIG_ARCH_HI3516EV200 is not set
# CONFIG_ARCH_HI3516EV300 is not set
# CONFIG_ARCH_HI3518EV300 is not set
# CONFIG_ARCH_HI3516DV200 is not set
# CONFIG_ARCH_HI3556V200 is not set
# CONFIG_ARCH_HI3559V200 is not set
# CONFIG_ARCH_HI3536DV100 is not set
# CONFIG_ARCH_HI3521A is not set
# CONFIG_ARCH_HI3531A is not set
# CONFIG_ARCH_HI3556AV100 is not set
# CONFIG_ARCH_HI3519AV100 is not set
# CONFIG_HISI_MC is not set

# Disable other ARM platforms
# CONFIG_ARCH_HISI is not set

# Boot
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_CMDLINE="earlycon=pl011,0x120a0000"
CONFIG_CMDLINE_EXTEND=y
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0

# General setup
CONFIG_LOCALVERSION=""
CONFIG_DEFAULT_HOSTNAME="openipc"
CONFIG_SYSVIPC=y
# CONFIG_SWAP is not set
# CONFIG_USELIB is not set
# CONFIG_CROSS_MEMORY_ATTACH is not set
CONFIG_KERNEL_XZ=y

# Timers
CONFIG_HZ_PERIODIC=y
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_PREEMPT_NONE=y

# Memory
CONFIG_CMA=y
CONFIG_DMA_CMA=y
CONFIG_CMA_SIZE_MBYTES=32
CONFIG_CMA_AREAS=7
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_FLATMEM=y
CONFIG_COMPACTION=y

# Clocks and reset
CONFIG_COMMON_CLK_HI3516DV300=y
CONFIG_COMMON_CLK_HI3516CV500=y
CONFIG_RESET_HISI=y

# Block devices
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=65536

# MTD — SPI NOR flash
CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_SPI_NOR=y
CONFIG_SPI_HISI_SFC=y

# Network — stripped to minimum (following EV300 neo pattern)
CONFIG_NET=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_PNP is not set
# CONFIG_NETFILTER is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
CONFIG_NETDEVICES=y
CONFIG_ETHERNET=y
CONFIG_NET_VENDOR_HISILICON=y
CONFIG_HISI_FEMAC=m
CONFIG_MDIO_HISI_FEMAC=m
CONFIG_PHYLIB=y
CONFIG_FIXED_PHY=y
# Disable all other ethernet vendors
# 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_ASIX 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_CIRRUS is not set
# CONFIG_NET_VENDOR_CORTINA is not set
# CONFIG_NET_VENDOR_DAVICOM is not set
# CONFIG_NET_VENDOR_ENGLEDER is not set
# CONFIG_NET_VENDOR_EZCHIP is not set
# CONFIG_NET_VENDOR_FARADAY is not set
# CONFIG_NET_VENDOR_FREESCALE is not set
# CONFIG_NET_VENDOR_GOOGLE is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_LITEX is not set
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MEDIATEK is not set
# CONFIG_NET_VENDOR_MELLANOX 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_MSCC 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_PENSANDO is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
# CONFIG_NET_VENDOR_REALTEK 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_SMSC is not set
# CONFIG_NET_VENDOR_SOCIONEXT is not set
# CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_SYNOPSYS is not set
# CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VERTEXCOM is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
# CONFIG_NET_VENDOR_XILINX is not set
# CONFIG_WLAN is not set
# CONFIG_WIRELESS is not set
# CONFIG_IPV6 is not set

# I2C
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HIBVT=y

# SPI
CONFIG_SPI=y
CONFIG_SPI_PL022=y

# GPIO
CONFIG_GPIOLIB=y
CONFIG_GPIO_PL061=y

# Serial / UART
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y

# Watchdog
CONFIG_WATCHDOG=y
CONFIG_ARM_SP805_WATCHDOG=y

# Power
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_HISI=y
CONFIG_POWER_RESET_SYSCON=y

# MMC/SD
CONFIG_MMC=m

# USB
CONFIG_USB_SUPPORT=y
CONFIG_USB=m
CONFIG_USB_XHCI_HCD=m

# Filesystems
CONFIG_TMPFS=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_XZ=y
CONFIG_JFFS2_FS=y
CONFIG_CRAMFS=y
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y

# Initrd / initramfs
CONFIG_BLK_DEV_INITRD=y
CONFIG_RD_XZ=y
# CONFIG_RD_GZIP is not set
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
# CONFIG_RD_ZSTD is not set

# WireGuard (built into 6.6+ kernel)
CONFIG_WIREGUARD=m

# Debug — earlycon for boot debugging
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_LL=y
CONFIG_DEBUG_HISI_BVT_UART=y
CONFIG_EARLY_PRINTK=y

# Disable unnecessary features to save kernel size (following EV300 neo)
# CONFIG_COREDUMP is not set
# CONFIG_ETHTOOL_NETLINK is not set
# CONFIG_BPF_SYSCALL is not set
# CONFIG_AUDIT is not set
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
# CONFIG_FTRACE is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_KALLSYMS is not set
# CONFIG_PRINTK_TIME is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y

# Disable subsystems not needed on IP cameras
# CONFIG_INPUT is not set
# CONFIG_VT is not set
# CONFIG_SOUND is not set
# CONFIG_FB is not set
# CONFIG_SCSI is not set
# CONFIG_F2FS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_CONFIGFS_FS is not set
# CONFIG_CGROUPS is not set
# CONFIG_NAMESPACES is not set

# Disable ARM crypto accelerators (save ~15KB, software fallback used)
# CONFIG_CRYPTO_SHA256_ARM is not set
# CONFIG_CRYPTO_SHA512_ARM is not set
# CONFIG_CRYPTO_SHA1_ARM is not set
# CONFIG_CRYPTO_AES_ARM is not set
# CONFIG_CRYPTO_CHACHA20_NEON is not set
# CONFIG_CRYPTO_POLY1305_ARM is not set
# CONFIG_CRYPTO_BLAKE2S_ARM is not set
# CONFIG_CRYPTO_ZSTD is not set
# CONFIG_KERNEL_MODE_NEON is not set
# CONFIG_NET_VENDOR_FUNGIBLE is not set
# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_ADI is not set
# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICROSOFT is not set
# CONFIG_NET_VENDOR_MUCSE is not set
# CONFIG_NET_VENDOR_SOLARFLARE is not set
# CONFIG_NET_VENDOR_WANGXUN is not set
# CONFIG_USB_NET_DRIVERS is not set
# Cut ~60KB: disable features not needed for boot
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_WATCHDOG is not set
# CONFIG_POWER_RESET_SYSCON is not set
# Disable built-in femac — hangs during port_init on CV500.
# Ethernet is brought up by vendor OSAL modules via load_hisilicon.
# CONFIG_HISI_FEMAC is not set
# CONFIG_MDIO_HISI_FEMAC is not set
39 changes: 39 additions & 0 deletions br-ext-chip-hisilicon/board/hi3516cv500/neo-post-image.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/sh
# Post-image: append DTB to zImage and wrap as uImage for hi3516av300_neo.
# Needed because 7.0+ kernel can't build uImage via buildroot's old mkimage.
IMAGES_DIR="${BINARIES_DIR:-$1}"
BUILD_DIR="${BUILD_DIR:-$(dirname $IMAGES_DIR)/build}"
HOST_DIR="${HOST_DIR:-$(dirname $IMAGES_DIR)/host}"
KDIR="$BUILD_DIR/linux-custom"
ZIMAGE="$IMAGES_DIR/zImage"
DTB="$KDIR/arch/arm/boot/dts/hisilicon/hi3516dv300-demb.dtb"
LOADADDR=0x80008000
# Find mkimage: try buildroot host dir, per-package dir, then system PATH
MKIMAGE=""
for p in \
"${HOST_DIR}/bin/mkimage" \
"$(dirname $IMAGES_DIR)/host/bin/mkimage" \
"$(find $(dirname $IMAGES_DIR)/per-package -name mkimage -type f 2>/dev/null | head -1)" \
"$(which mkimage 2>/dev/null)"; do
[ -x "$p" ] && MKIMAGE="$p" && break
done
[ -z "$MKIMAGE" ] && echo "neo-post-image: ERROR: mkimage not found" >&2 && exit 1

[ -f "$ZIMAGE" ] || exit 0
[ -f "$DTB" ] || exit 0

# Remove dashes from version so sysupgrade SoC parsing works
KREL=$(sed 's/-//g' "$KDIR/include/config/kernel.release")

cat "$ZIMAGE" "$DTB" > "${IMAGES_DIR}/zImage-dtb"
$MKIMAGE -A arm -O linux -T kernel -C none \
-a $LOADADDR -e $LOADADDR \
-n "Linux-${KREL}-hi3516av300" \
-d "${IMAGES_DIR}/zImage-dtb" "${IMAGES_DIR}/uImage"
rm -f "${IMAGES_DIR}/zImage-dtb"
if [ -f "${IMAGES_DIR}/uImage" ]; then
echo "neo-post-image: uImage $(( $(stat -c%s ${IMAGES_DIR}/uImage) / 1024 ))KB"
else
echo "neo-post-image: ERROR: mkimage failed" >&2
exit 1
fi
71 changes: 71 additions & 0 deletions br-ext-chip-hisilicon/configs/hi3516av300_neo_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Architecture
BR2_arm=y
BR2_cortex_a7=y
BR2_ARM_EABI=y
BR2_ARM_FPU_NEON_VFPV4=y

# Toolchain
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/openipc/firmware/releases/download/$(OPENIPC_TOOLCHAIN).tgz"
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-openipc-linux-gnueabi"
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
# BR2_TOOLCHAIN_EXTERNAL_INET_RPC is not set
BR2_TOOLCHAIN_EXTERNAL_CXX=y

# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/openipc/linux/archive/upstream-patches.tar.gz"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(EXTERNAL_VENDOR)/board/$(OPENIPC_SOC_FAMILY)/hi3516av300.neo.config"
BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage"
BR2_LINUX_KERNEL_XZ=y

# Skip legacy kernel patches (4.9-era GCC compat, not needed for 6.6+)
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL)/package/all-patches-neo"

# Filesystem
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config"
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_ZLIB=y
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
# WireGuard is built into Linux 6.6 — no compat module needed
# BR2_PACKAGE_WIREGUARD_LINUX_COMPAT is not set
BR2_PACKAGE_WIREGUARD_TOOLS=y
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y

# OpenIPC
BR2_OPENIPC_SOC_VENDOR="hisilicon"
BR2_OPENIPC_SOC_MODEL="hi3516av300"
BR2_OPENIPC_SOC_FAMILY="hi3516cv500"
BR2_OPENIPC_VARIANT="neo"
BR2_OPENIPC_FLASH_SIZE="16"

# Packages
BR2_PACKAGE_DROPBEAR_OPENIPC=y
BR2_PACKAGE_HISILICON_OPENSDK=y
BR2_PACKAGE_HISILICON_OSDRV_HI3516CV500=y
BR2_PACKAGE_IPCTOOL=y
BR2_PACKAGE_JSONFILTER=y
BR2_PACKAGE_LIBCURL_OPENIPC=y
BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y
# BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set
BR2_PACKAGE_LIBEVENT_OPENIPC=y
BR2_PACKAGE_LIBOGG_OPENIPC=y
BR2_PACKAGE_MAJESTIC_FONTS=y
BR2_PACKAGE_MAJESTIC_WEBUI=y
BR2_PACKAGE_MAJESTIC=y
BR2_PACKAGE_MBEDTLS_OPENIPC=y
BR2_PACKAGE_MOTORS=y
BR2_PACKAGE_OPUS_OPENIPC=y
BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y
BR2_PACKAGE_VTUND_OPENIPC=y
BR2_PACKAGE_YAML_CLI=y
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(EXTERNAL_VENDOR)/board/$(OPENIPC_SOC_FAMILY)/neo-post-image.sh"
Loading