[Buildroot] [PATCH 1/2] configs/aspeed_ast2600evb: new defconfig
Cédric Le Goater
clg at kaod.org
Mon Jun 6 12:57:02 UTC 2022
On 6/6/22 08:14, Joel Stanley wrote:
> On Fri, 3 Jun 2022 at 06:27, Cédric Le Goater <clg at kaod.org> wrote:
>>
>> The kernel is from upstream and U-Boot is from the OpenBMC branch
>> where most of development is done. Mainline doesn't have the required
>> support for HW.
>>
>> The main resulting file from the build is a flash image. The partition
>> layout matches the OpenBMC one for 64M chips. It makes it easier to
>> update the different partitions from Linux. Intermediate files can be
>> used to boot from U-boot over the network or to boot QEMU using
>> -kernel/-initrd/-dtb.
>>
>> Signed-off-by: Cédric Le Goater <clg at kaod.org>
>
> Reviewed-by: Joel Stanley <joel at jms.id.au>
>
> Looks good. Some comments for potential improvements below.
>
>> ---
>> DEVELOPERS | 2 +
>> board/aspeed/ast2600-evb/genimage.cfg | 40 ++++++++++++
>> board/aspeed/ast2600-evb/linux.fragment | 3 +
>> board/aspeed/ast2600-evb/readme.txt | 81 +++++++++++++++++++++++++
>> board/aspeed/common/image.its.template | 56 +++++++++++++++++
>> board/aspeed/common/post-image.sh | 27 +++++++++
>> configs/aspeed_ast2600evb_defconfig | 56 +++++++++++++++++
>> 7 files changed, 265 insertions(+)
>> create mode 100644 board/aspeed/ast2600-evb/genimage.cfg
>> create mode 100644 board/aspeed/ast2600-evb/linux.fragment
>> create mode 100644 board/aspeed/ast2600-evb/readme.txt
>> create mode 100644 board/aspeed/common/image.its.template
>> create mode 100755 board/aspeed/common/post-image.sh
>> create mode 100644 configs/aspeed_ast2600evb_defconfig
>>
>> diff --git a/DEVELOPERS b/DEVELOPERS
>> index 71cc3da6d70b..d0018eae13a0 100644
>> --- a/DEVELOPERS
>> +++ b/DEVELOPERS
>> @@ -501,8 +501,10 @@ F: package/znc/
>> N: Cédric Le Goater <clg at kaod.org>
>> F: board/qemu/ppc-bamboo/
>> F: board/qemu/ppc64le-powernv8/readme.txt
>> +F: board/aspeed/
>> F: configs/qemu_ppc_bamboo_defconfig
>> F: configs/qemu_ppc64le_powernv8_defconfig
>> +F: configs/aspeed*
>
> Add me too please :)
sure. done.
>
>>
>> N: Charles Hardin <ckhardin at gmail.com>
>> F: package/alsa-plugins/
>> diff --git a/board/aspeed/ast2600-evb/genimage.cfg b/board/aspeed/ast2600-evb/genimage.cfg
>> new file mode 100644
>> index 000000000000..56932d478756
>> --- /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
>
> Nice, I like it.
>
>> +#
>> +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/linux.fragment b/board/aspeed/ast2600-evb/linux.fragment
>> new file mode 100644
>> index 000000000000..61bb934dddf3
>> --- /dev/null
>> +++ b/board/aspeed/ast2600-evb/linux.fragment
>> @@ -0,0 +1,3 @@
>> +CONFIG_I3C=y
>> +CONFIG_ASPEED_I3C_MASTER=y
>> +CONFIG_DW_I3C_MASTER=y
>
> Is this something you're working on? Those drivers don't exist in
> mainline or in the openbmc tree.
ah yes. This is not upstream yet. I will remove.
>
>> diff --git a/board/aspeed/ast2600-evb/readme.txt b/board/aspeed/ast2600-evb/readme.txt
>> new file mode 100644
>> index 000000000000..9f3ec6053b67
>> --- /dev/null
>> +++ b/board/aspeed/ast2600-evb/readme.txt
>> @@ -0,0 +1,81 @@
>> +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 \
>> + -net nic -net user -nographic -serial mon:stdio
>
> -net nic -net user -serial mon:stdio is the default, yeah?
yes.
>
>> +
>> + $ qemu-system-arm -M ast2600-evb \
>> + -kernel output/images/zImage \
>> + -append "console=ttyS4,115200n8 root=/dev/ram rw" \
>
> This shouldn't be required either.
indeed.
>> + -initrd output/images/rootfs.cpio \
>> + -dtb output/images/aspeed-ast2600-evb.dtb \
>> + -net nic -net user -nographic -serial mon:stdio
>
> As above.
Thanks,
C.
>
>> diff --git a/board/aspeed/common/image.its.template b/board/aspeed/common/image.its.template
>> new file mode 100644
>> index 000000000000..e3200e240709
>> --- /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 000000000000..ea65a49afff0
>> --- /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 000000000000..19e46a752f3c
>> --- /dev/null
>> +++ b/configs/aspeed_ast2600evb_defconfig
>> @@ -0,0 +1,56 @@
>> +# Architecture
>> +BR2_arm=y
>> +
>> +# System
>> +BR2_TARGET_GENERIC_HOSTNAME="aspeed-evb"
>> +BR2_TARGET_GENERIC_ISSUE="Aspeed EVB"
>> +BR2_TARGET_GENERIC_GETTY_PORT="ttyS4"
>> +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"
>> +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)"
>> +
>> +# 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_CONFIG_FRAGMENT_FILES="board/aspeed/ast2600-evb/linux.fragment"
>> +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
>> +BR2_PACKAGE_UBOOT_TOOLS=y
>> +BR2_PACKAGE_LIBGPIOD=y
>> +BR2_PACKAGE_LIBGPIOD_TOOLS=y
>> +BR2_PACKAGE_LIBCURL=y
>> +BR2_PACKAGE_LIBCURL_CURL=y
>> +BR2_PACKAGE_LIBCURL_VERBOSE=y
>> +BR2_PACKAGE_LIBFFI=y
>> +BR2_PACKAGE_DROPBEAR=y
>> +BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y
>> +BR2_PACKAGE_LRZSZ=y
>> +BR2_PACKAGE_HOST_MKPASSWD=y
>> --
>> 2.35.3
>>
More information about the buildroot
mailing list