[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