diff --git a/DEVELOPERS b/DEVELOPERS index fc329fec27..2ed43a1c16 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -500,8 +500,10 @@ N: Cédric Chépied F: package/znc/ N: Cédric Le Goater +F: board/aspeed/ F: board/qemu/ppc-bamboo/ F: board/qemu/ppc64le-powernv8/readme.txt +F: configs/aspeed* F: configs/qemu_ppc_bamboo_defconfig F: configs/qemu_ppc64le_powernv8_defconfig @@ -1460,6 +1462,8 @@ F: board/qemu/ppc64le-pseries/ F: configs/qemu_ppc64le_pseries_defconfig F: board/qemu/ppc-mac99/ F: configs/qemu_ppc_mac99_defconfig +F: board/aspeed/ +F: configs/aspeed* N: Johan Derycke F: package/python-libconfig/ diff --git a/board/aspeed/ast2600-evb/genimage.cfg b/board/aspeed/ast2600-evb/genimage.cfg new file mode 100644 index 0000000000..56932d4787 --- /dev/null +++ b/board/aspeed/ast2600-evb/genimage.cfg @@ -0,0 +1,40 @@ +# +# This config reproduces the OpenBMC flash layout defined in Linux : +# +# arch/arm/boot/dts/openbmc-flash-layout-64.dtsi +# +# and included by aspeed-ast2600-evb.dts +# +flash nor-64M-256 { + pebsize = 4K + numpebs = 16K + minimum-io-unit-size = 256 +} + +image flash.img { + flash { + } + flashtype = "nor-64M-256" + + partition uboot { + image = "u-boot.bin" + size = 896K + } + + partition ubootenv { + /* TODO */ + offset = 896K + size = 128K + } + + partition fitimage { + image = "image.itb" + offset = 1M + size = 9M + } + + partition spare { + offset = 10M + size = 54M + } +} diff --git a/board/aspeed/ast2600-evb/readme.txt b/board/aspeed/ast2600-evb/readme.txt new file mode 100644 index 0000000000..1f7ba13d5d --- /dev/null +++ b/board/aspeed/ast2600-evb/readme.txt @@ -0,0 +1,80 @@ +Aspeed AST2600 EVB + +Introduction +============ + +The AST2600 EVB is an evaluation board for the AST2600 SoC, most +commonly used as a Server Management Processor. It includes a +Dual-core ARM Cortex A7 processor with DDR4 SDRAM (up to 2GB), SPI +flash memory devices for BMC and host firmwares and numerous +controllers to drive the server board. + + https://www.aspeedtech.com/server_ast2600/ + +How to build it +=============== + +Configure buildroot: + + $ make aspeed_ast2600evb_defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +=================== + +After building, the output/images directory contains: + + output/images/ + ├── aspeed-ast2600-evb.dtb + ├── flash.img + ├── image.itb + ├── rootfs.cpio + ├── rootfs.cpio.xz + ├── rootfs.tar + ├── u-boot.bin + └── zImage + +Flashing the image +================== + +To update the contents of the first flash device, copy flash.img : + + $ flashcp flash.img /dev/mtd0 + +or simply the boot loader: + + $ flashcp u-boot.bin /dev/mtd1 + +Preparing the board +=================== + + * Connect a serial line to the board + * Power-up the board + +Booting the board +================= + +The AST2600 EVB boots from the SPI flash device directly and loads a +first bootloader (usually U-Boot). U-Boot will attempt to load a Linux +kernel from the same flash device by default but other storage could +be used. + + * from U-Boot + + The FIT image image.itb can be used to boot the board from U-Boot + using tftp + + * with QEMU + + $ qemu-system-arm -M ast2600-evb \ + -drive file=output/images/flash.img,format=raw,if=mtd \ + -nographic + + $ qemu-system-arm -M ast2600-evb \ + -kernel output/images/zImage \ + -initrd output/images/rootfs.cpio \ + -dtb output/images/aspeed-ast2600-evb.dtb \ + -nographic diff --git a/board/aspeed/common/image.its.template b/board/aspeed/common/image.its.template new file mode 100644 index 0000000000..e3200e2407 --- /dev/null +++ b/board/aspeed/common/image.its.template @@ -0,0 +1,56 @@ +/dts-v1/; + +/ { + description = "Kernel and buildroot image"; + #address-cells = <1>; + + images { + kernel-1 { + description = "Linux kernel"; + data = /incbin/("zImage"); + type = "kernel"; + arch = "arm"; + os = "linux"; + compression = "none"; + load = <0x80001000>; + entry = <0x80001000>; + hash-1 { + algo = "sha256"; + }; + }; + fdt-1 { + description = "Flattened Device Tree blob"; + data = /incbin/("%BOARD_DTB%"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash-1 { + algo = "sha256"; + }; + }; + ramdisk-1 { + description = "ramdisk"; + data = /incbin/("rootfs.cpio.xz"); + type = "ramdisk"; + arch = "arm"; + os = "linux"; + compression = "none"; + hash-1 { + algo = "sha256"; + }; + }; + }; + + configurations { + default = "conf-1"; + conf-1 { + description = "Boot Linux kernel with FDT blob, ramdisk"; + kernel = "kernel-1"; + fdt = "fdt-1"; + ramdisk = "ramdisk-1"; + hash-1 { + algo = "sha256"; + }; + }; + }; +}; diff --git a/board/aspeed/common/post-image.sh b/board/aspeed/common/post-image.sh new file mode 100755 index 0000000000..ea65a49aff --- /dev/null +++ b/board/aspeed/common/post-image.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +BOARD_DIR="$(dirname $0)" +mkimage=$HOST_DIR/bin/mkimage + +BOARD_DT=$(sed -n \ + 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9\-]*\).*"$/\1/p' \ + ${BR2_CONFIG}) + +sed -e "s/%BOARD_DTB%/${BOARD_DT}.dtb/" \ + $BOARD_DIR/image.its.template > $BINARIES_DIR/image.its + +(cd $BINARIES_DIR && $mkimage -f image.its image.itb) + +GENIMAGE_CFG="board/aspeed/${BOARD_DT#aspeed-*}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +rm -f $BINARIES_DIR/image.its diff --git a/configs/aspeed_ast2600evb_defconfig b/configs/aspeed_ast2600evb_defconfig new file mode 100644 index 0000000000..cd058ad0ac --- /dev/null +++ b/configs/aspeed_ast2600evb_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="aspeed-evb" +BR2_TARGET_GENERIC_ISSUE="Aspeed EVB" +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_XZ=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/aspeed/common/post-image.sh" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_17=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.17.7" +BR2_LINUX_KERNEL_DEFCONFIG="aspeed_g5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="aspeed-ast2600-evb" + +# Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/openbmc/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="f2b82fa4ba17ed8091fe76c284220006645a293b" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="evb-ast2600" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=ast2600a1-evb" + +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_GENIMAGE=y + +# Target tools +BR2_PACKAGE_MTD=y