You've already forked LLM_buildroot-external-m5stack
mirror of
https://github.com/m5stack/LLM_buildroot-external-m5stack.git
synced 2026-05-20 11:34:12 -07:00
561 lines
23 KiB
Markdown
561 lines
23 KiB
Markdown
# Internal details
|
|
|
|
## Minimal configurations
|
|
|
|
In this section, we describe step by step the minimal Buildroot
|
|
configuration
|
|
[st_stm32mp157c_dk2_defconfig](/configs/st_stm32mp157c_dk2_defconfig)
|
|
which targets the STM32MP157C Discovery Kit 2 platform. The other
|
|
Buildroot configurations for the other platforms are very similar.
|
|
|
|
```
|
|
BR2_arm=y
|
|
BR2_cortex_a7=y
|
|
```
|
|
|
|
Obviously, this tells Buildroot to build a system for the ARM
|
|
architecture, and more precisely for a Cortex-A7 based processor. This
|
|
will ensure the cross-compilation toolchain targets the correct CPU
|
|
architecture and specific CPU core.
|
|
|
|
```
|
|
BR2_TOOLCHAIN_EXTERNAL=y
|
|
```
|
|
|
|
We decide to use external toolchain. This choice has been made to
|
|
reduce the build time of the overall system, and use a well-known
|
|
toolchain provided by ARM.
|
|
|
|
```
|
|
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/patches/"
|
|
```
|
|
|
|
We need to apply one patch to the Linux kernel, which is located in
|
|
`board/stmicroelectronics/stm32mp1/patches/`. This configuration
|
|
option tells Buildroot where to find the patches to apply.
|
|
|
|
```
|
|
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
|
|
```
|
|
|
|
This option enables *mdev* (a minimal re-implementation of *udev*
|
|
which is part of BusyBox) which takes care of automatically loading
|
|
kernel modules, adjusting `/dev` nodes permissions, and more.
|
|
|
|
```
|
|
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/overlay/"
|
|
```
|
|
|
|
This tells Buildroot to copy the contents of
|
|
[board/stmicroelectronics/stm32mp1/overlay](/board/stmicroelectronics/stm32mp1/overlay)
|
|
into the root filesystem. The important file that this copies to the
|
|
root filesystem is `/boot/extlinux.conf`, which tells the U-Boot
|
|
bootloader how to boot the Linux system (which Linux kernel image to
|
|
load, which Device Tree to use, which kernel arguments to pass). It
|
|
also adds the Wifi firmware and the sound configuration files but
|
|
these are only used in the *demo* configurations, not the minimal
|
|
ones.
|
|
|
|
```
|
|
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/post-build.sh"
|
|
```
|
|
|
|
This tells Buildroot to run
|
|
[board/stmicroelectronics/stm32mp1/post-build.sh](/board/stmicroelectronics/stm32mp1/post-build.sh)
|
|
at the end of the rootfs generation. This script update the
|
|
extlinux.conf of the overlay to use the correct Device Tree file at
|
|
boot.
|
|
|
|
```
|
|
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/post-image.sh"
|
|
```
|
|
|
|
This tells Buildroot to run
|
|
[board/stmicroelectronics/stm32mp1/post-image.sh](/board/stmicroelectronics/stm32mp1/post-image.sh)
|
|
at the end of the build. This script produces the final `sdcard.img`
|
|
file using a tool called `genimage` and deploys the `flash.tsv` file to
|
|
flash the board with STM32 Cube Programmer.
|
|
|
|
```
|
|
BR2_ROOTFS_POST_SCRIPT_ARGS="genimage.cfg"
|
|
```
|
|
|
|
This is an argument passed to the scripts. It is used by `post-image.sh`
|
|
to know which genimage config to use.
|
|
|
|
```
|
|
BR2_LINUX_KERNEL=y
|
|
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
|
|
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,STMicroelectronics,linux)v6.1-stm32mp-r1.1.tar.gz"
|
|
BR2_LINUX_KERNEL_DEFCONFIG="multi_v7"
|
|
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/fragment-01-multiv7_cleanup.config $(LINUX_DIR)/arch/arm/configs/fragment-02-multiv7_addons.config $(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/linux-disable-etnaviv.config $(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/linux-rauc.config"
|
|
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
|
BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32mp157c-dk2"
|
|
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
|
```
|
|
|
|
This set of options tells Buildroot to build a Linux kernel, with the
|
|
source code fetched using Git from the repository at
|
|
[https://github.com/STMicroelectronics/linux](https://github.com/STMicroelectronics/linux). The
|
|
Git tag `v6.1-stm32mp-r1` will be used as the kernel version. The
|
|
kernel will be configured using the configuration file
|
|
[multi_v7_defconfig](https://github.com/STMicroelectronics/linux/arch/arm/configs/multi_v7_defconfig)
|
|
extended with three configuration fragments:
|
|
|
|
1. [fragment-01-multiv7_cleanup.config](https://github.com/STMicroelectronics/linux/arch/arm/configs/fragment-01-multiv7_cleanup.config),
|
|
which comes from the ST kernel tree, and that disables a number of
|
|
kernel drivers/features that are not needed on STM32MP1
|
|
|
|
2. [fragment-02-multiv7_addons.config](https://github.com/STMicroelectronics/linux/arch/arm/configs/fragment-02-multiv7_addons.config),
|
|
which comes from the ST kernel tree, and which enables a few
|
|
additional kernel drivers/features taht are relevant on STM32MP1
|
|
|
|
3. [linux-disable-etnaviv.config](/board/stmicroelectronics/stm32mp1/linux-disable-etnaviv.config),
|
|
which comes from this `BR2_EXTERNAL`, and is in charge of disabling
|
|
the Etnaviv GPU kernel driver, as we use the proprietary GPU driver
|
|
provided by ST instead.
|
|
|
|
4. [linux-enable-rauc.config](/board/stmicroelectronics/stm32mp1/linux-enable-rauc.config),
|
|
which comes from this `BR2_EXTERNAL`, and is in charge of enabling
|
|
the requisite kernel drivers to use RAUC OTA tool.
|
|
|
|
The option `BR2_LINUX_KERNEL_INTREE_DTS_NAME` indicates that the
|
|
`stm32mp157c-dk2.dtb` Device Tree file will be produced and should be
|
|
used. Finally `BR2_LINUX_KERNEL_INSTALL_TARGET=y` tells that the
|
|
kernel image should be installed to the target root filesystem, in
|
|
`/boot`.
|
|
|
|
```
|
|
BR2_TARGET_ROOTFS_EXT2=y
|
|
BR2_TARGET_ROOTFS_EXT2_4=y
|
|
BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
|
|
# BR2_TARGET_ROOTFS_TAR is not set
|
|
```
|
|
|
|
This set of options tell Buildroot to generate an *ext4* filesystem
|
|
image for the root filesystem, and to not build the default filesystem
|
|
image, which is a tarball (`.tar`).
|
|
|
|
```
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,STMicroelectronics,arm-trusted-firmware)v2.8-stm32mp-r1.1.tar.gz"
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="stm32mp1"
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE="u-boot-nodtb.bin"
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=optee DTB_FILE_NAME=stm32mp157c-dk2.dtb BL33_CFG=$(BINARIES_DIR)/u-boot.dtb STM32MP_USB_PROGRAMMER=1 STM32MP1_OPTEE_IN_SYSRAM"
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="*.stm32 fip.bin"
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y
|
|
```
|
|
|
|
These options tell Buildroot how to build TF-A, the Trusted
|
|
Firmware. It is retrieved from the Git repository at
|
|
[https://github.com/STMicroelectronics/arm-trusted-firmware](https://github.com/STMicroelectronics/arm-trusted-firmware),
|
|
using version `v2.8-stm32mp-r1`. TF-A is configured for the `stm32mp1`
|
|
platform with OP-TEE as BL32, and we use the mechanism of
|
|
[FIP](https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/tools-build.html)
|
|
images. The Device Tree file being used in TF-A comes from the TF-A
|
|
source code, and is named `stm32mp157c-dk2.dtb`.
|
|
|
|
```
|
|
BR2_PACKAGE_OPTEE_CLIENT=y
|
|
...
|
|
BR2_TARGET_OPTEE_OS=y
|
|
BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL=y
|
|
BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION="$(call github,STMicroelectronics,optee_os)3.19.0-stm32mp-r1.1.tar.gz"
|
|
BR2_TARGET_OPTEE_OS_PLATFORM="stm32mp1"
|
|
BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR="157C_DK2"
|
|
BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES="CFG_STM32MP1_OPTEE_IN_SYSRAM=y"
|
|
```
|
|
|
|
These options configure the build of OP-TEE as a trusted execution
|
|
environment, as well as the user-space OP-TEE client programs.
|
|
It is fetched from the Git repository
|
|
[https://github.com/STMicroelectronics/optee_os](https://github.com/STMicroelectronics/optee_os),
|
|
in version `3.19.0-stm32mp-r1`. The platform is `stm32mp1` and its flavor
|
|
is `157C_DK2`
|
|
|
|
```
|
|
BR2_TARGET_UBOOT=y
|
|
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
|
|
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
|
|
BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,STMicroelectronics,u-boot)v2022.10-stm32mp-r1.1.tar.gz"
|
|
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15"
|
|
# BR2_TARGET_UBOOT_FORMAT_BIN is not set
|
|
BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
|
|
BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin u-boot.dtb"
|
|
BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157c-dk2"
|
|
```
|
|
|
|
These options tell Buildroot how to build U-Boot: it is fetched from
|
|
the Git repository at
|
|
[https://github.com/STMicroelectronics/u-boot](https://github.com/STMicroelectronics/u-boot),
|
|
in version `v2022.10-stm32mp-r1`. The configuration used is
|
|
`stm32mp15`, and we install both the `u-boot-nodtb.bin` and
|
|
`u-boot.dtb` images as both are used for the TF-A build. The Device
|
|
Tree file used comes from the U-Boot source code, and is named
|
|
`stm32mp157c-dk2`.
|
|
|
|
```
|
|
BR2_PACKAGE_HOST_BMAP_TOOLS=y
|
|
```
|
|
|
|
This option tells Buildroot to build the `bmap` utility for the host. This
|
|
is used to produce block map files alongside the image.
|
|
|
|
```
|
|
BR2_PACKAGE_HOST_GENIMAGE=y
|
|
```
|
|
|
|
This last option tells Buildroot to build the `genimage` utility for
|
|
the host, as it is used to produce the SD card image.
|
|
|
|
What is not visible in this configuration are all the defaults that
|
|
Buildroot has: it will by default integrate Busybox in the root
|
|
filesystem image, and use a number of sane defaults to build a basic
|
|
embedded Linux system.
|
|
|
|
## Demo configurations
|
|
|
|
In this section, we describe the demo configuration
|
|
[st_stm32mp157c_dk2_demo_defconfig](/configs/st_stm32mp157c_dk2_demo_defconfig)
|
|
for the STM32MP157C Discovery Kit 2. Here as well, all other *demo*
|
|
configurations for the other platforms are very similar.
|
|
|
|
```
|
|
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
|
|
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE=y
|
|
```
|
|
We use Bootlin toolchain instead of ARM toolchain because we need glibc
|
|
2.34 for the latest gcnano-binary libraries.
|
|
|
|
```
|
|
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/patches/ $(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/patches-demo/"
|
|
```
|
|
|
|
Add patches-demo folder in addition to global patch directory.
|
|
|
|
```
|
|
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
|
|
```
|
|
|
|
This option enables *eudev* instead of *mdev* selected by the basic
|
|
configuration. It manages devices node and handles all user space actions
|
|
when adding or removing devices.
|
|
|
|
```
|
|
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/post-build.sh $(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/post-build-demo.sh"
|
|
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/post-image.sh $(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/post-image-demo.sh"
|
|
BR2_ROOTFS_POST_SCRIPT_ARGS="genimage-demo.cfg"
|
|
```
|
|
|
|
Add demo post-build and post-image scripts in addition of basique scripts
|
|
alongside with genimage-demo args to tell which partition configuratoin
|
|
to use.
|
|
|
|
```
|
|
BR2_TARGET_GENERIC_ROOT_PASSWD="root"
|
|
```
|
|
|
|
This option sets the root password to `root`. The root password has to
|
|
be set to a non-empty value to connect to the board through SSH.
|
|
|
|
```
|
|
BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32mp157c-dk2-mx"
|
|
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/linux-dts/*"
|
|
BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
|
|
```
|
|
|
|
The demo configurations use a Linux kernel Device Tree file produced
|
|
by STM32 Cube MX. These two options tell Buildroot where to find these
|
|
Device Tree files, and which one to use. The last option enables the
|
|
`-@` Device Tree compiler build option, which produces Device Tree
|
|
files with slightly more information, making it possible for the
|
|
U-Boot bootloader to automatically tweak the Device Tree files passed
|
|
to the Linux kernel when booting.
|
|
|
|
```
|
|
BR2_PACKAGE_OPTEE_EXAMPLES=y
|
|
BR2_PACKAGE_OPTEE_TEST=y
|
|
```
|
|
|
|
These options enable OP-TEE tests and examples.
|
|
|
|
```
|
|
BR2_PACKAGE_ALSA_UTILS=y
|
|
BR2_PACKAGE_ALSA_UTILS_AMIXER=y
|
|
BR2_PACKAGE_ALSA_UTILS_APLAY=y
|
|
BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y
|
|
```
|
|
|
|
These options enable alsa-utils and examples.
|
|
|
|
```
|
|
BR2_PACKAGE_DEJAVU=y
|
|
BR2_PACKAGE_QT5=y
|
|
BR2_PACKAGE_QT5BASE_EXAMPLES=y
|
|
BR2_PACKAGE_QT5BASE_GUI=y
|
|
BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
|
|
BR2_PACKAGE_QT5BASE_EGLFS=y
|
|
BR2_PACKAGE_QT5BASE_FONTCONFIG=y
|
|
```
|
|
|
|
These options enable a font (*DejaVu*) and the QT5 graphical toolkit.
|
|
|
|
```
|
|
BR2_PACKAGE_DROPBEAR=y
|
|
```
|
|
|
|
This option enables the dropbear SSH server.
|
|
|
|
```
|
|
BR2_PACKAGE_LINUX_FIRMWARE=y
|
|
BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
|
|
BR2_PACKAGE_MURATA_CYW_FW=y
|
|
BR2_PACKAGE_MURATA_CYW_FW_CYW43430=y
|
|
```
|
|
|
|
These options enable the installation of the firmware file needed for
|
|
the WiFi and Bluetooth chips.
|
|
|
|
```
|
|
BR2_PACKAGE_GCNANO_BINARIES=y
|
|
```
|
|
|
|
This option enables the installation of the closed-source user-space
|
|
library that provide OpenGL support.
|
|
|
|
```
|
|
BR2_PACKAGE_LIBUBOOTENV=y
|
|
```
|
|
|
|
This option enable tools to read and write the U-boot environment from
|
|
Linux. It is requisite to have the [OTA](/docs/ota.md) working properly.
|
|
|
|
```
|
|
BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
|
|
```
|
|
|
|
This option, which implies `BR2_PACKAGE_LIBDRM=y` installs the
|
|
`modetest` utility that we use for [display testing](/docs/display.md).
|
|
|
|
```
|
|
BR2_PACKAGE_BLUEZ_TOOLS=y
|
|
BR2_PACKAGE_BLUEZ5_UTILS=y
|
|
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
|
|
```
|
|
|
|
These options install the user-space utilities to manage and configure
|
|
Bluetooth.
|
|
|
|
```
|
|
BR2_PACKAGE_IW=y
|
|
BR2_PACKAGE_WIRELESS_REGDB=y
|
|
BR2_PACKAGE_WPA_SUPPLICANT=y
|
|
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
|
|
BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
|
|
BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
|
|
BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
|
|
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
|
|
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
|
|
```
|
|
|
|
These options install the user-space utilities to manage and configure
|
|
WiFi, as well as the wireless regulatory database.
|
|
|
|
```
|
|
BR2_PACKAGE_RAUC=y
|
|
BR2_PACKAGE_RAUC_DBUS=y
|
|
BR2_PACKAGE_RAUC_GPT=y
|
|
BR2_PACKAGE_RAUC_NETWORK=y
|
|
BR2_PACKAGE_RAUC_STREAMING=y
|
|
BR2_PACKAGE_RAUC_JSON=y
|
|
```
|
|
|
|
These options install the rauc tool for [OTA](/docs/ota.md).
|
|
|
|
```
|
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
|
```
|
|
|
|
This options tell Buildroot to generate a *squashfs* read-only filesystem
|
|
image for the root filesystem;
|
|
|
|
```
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y
|
|
..
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/tfa-dts/*"
|
|
BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=optee DTB_FILE_NAME=stm32mp157c-dk2-mx.dtb STM32MP_USB_PROGRAMMER=1 STM32MP1_OPTEE_IN_SYSRAM=1"
|
|
```
|
|
|
|
These options customize the build of TF-A to load OP-TEE as a trusted
|
|
execution environment, and to use a Device Tree file produced by STM32
|
|
Cube MX, called `stm32mp157c-dk2-mx.dtb`.
|
|
|
|
```
|
|
BR2_TARGET_OPTEE_OS_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/optee-dts/*"
|
|
BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES="CFG_EMBED_DTB_SOURCE_FILE=stm32mp157c-dk2-mx.dts CFG_STM32MP15=y CFG_STM32MP1_OPTEE_IN_SYSRAM=y"
|
|
```
|
|
|
|
These options customize the build of OPTEE-OS to use a Device Tree file
|
|
produced by STM32 Cube MX, called `stm32mp157c-dk2-mx`. The option
|
|
`CFG_EMBED_DTB_SOURCE_FILE=stm32mp157c-dk2-mx.dts CFG_STM32MP15=y` has been
|
|
added to OPTEE-OS make options, to build the external devicetree.
|
|
|
|
```
|
|
BR2_TARGET_UBOOT_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_ST_PATH)/board/stmicroelectronics/stm32mp1/uboot-dts/*"
|
|
BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="dtb-y=stm32mp157c-dk2-mx.dtb DEVICE_TREE=stm32mp157c-dk2-mx"
|
|
```
|
|
|
|
These options customize the build of U-Boot to use a Device Tree file
|
|
produced by STM32 Cube MX, called `stm32mp157c-dk2-mx`. The option
|
|
`dtb-y=stm32mp157c-dk2-mx.dtb` has been added to U-boot make options, to
|
|
build the external devicetree.
|
|
|
|
```
|
|
BR2_PACKAGE_HOST_GENEXT2FS=y
|
|
```
|
|
|
|
This option enables `genext2fs` tool, to be able to generate *ext4*
|
|
partition with `genimage`.
|
|
|
|
```
|
|
BR2_PACKAGE_HOST_RAUC=y
|
|
```
|
|
|
|
This option enables `rauc` tool for the host to generate a RAUC update
|
|
bundle.
|
|
|
|
```
|
|
BR2_PACKAGE_M4PROJECTS=y
|
|
```
|
|
|
|
This option enables the installation of the Firmware examples for the Cortex
|
|
M4 from [STM32CubeMP1](https://github.com/STMicroelectronics/STM32CubeMP1.git).
|
|
|
|
## Organization of the `BR2_EXTERNAL` tree
|
|
|
|
* `board/`
|
|
* `stmicroelectronics/`
|
|
* `stm32mp1/`
|
|
* [`tfa-dts/`](/board/stmicroelectronics/stm32mp1/tfa-dts), Device
|
|
Tree files produced by STM32 Cube MX for TF-A. Only used by
|
|
the demo configurations.
|
|
* [`overlay/`](/board/stmicroelectronics/stm32mp1/overlay/),
|
|
the boot filesytem overlay for the basic configurations. It
|
|
contributes `/boot/extlinux.conf` to the root filesystem to select
|
|
the right devicetree name.
|
|
* [`overlay-demo/`](/board/stmicroelectronics/stm32mp1/overlay-demo/),
|
|
the boot filesytem overlay for the demo configurations. It
|
|
contributes `/boot/extlinux.conf` to the root filesystem to select
|
|
the right devicetree name. It also adds the Wifi firmware, the
|
|
sound configuration files and RAUC configuration files.
|
|
* [`linux-dts/`](/board/stmicroelectronics/stm32mp1/linux-dts),
|
|
Device Tree files produced by STM32 Cube MX for Linux. Only
|
|
used by the demo configurations.
|
|
* [`uboot-dts/`](/board/stmicroelectronics/stm32mp1/uboot-dts),
|
|
Device Tree files produced by STM32 Cube MX for U-Boot. Only
|
|
used by the demo configurations.
|
|
* [`optee-dts/`](/board/stmicroelectronics/stm32mp1/optee-dts),
|
|
Device Tree files produced by STM32 Cube MX for OPTEE-OS. Only
|
|
used by the demo configurations.
|
|
* [`flash.tsv`](/board/stmicroelectronics/stm32mp1/flash.tsv),
|
|
configuration file for the STM32 Cube Programmer. Only valid
|
|
for SD card flashing.
|
|
* [`genimage.cfg`](/board/stmicroelectronics/stm32mp1/genimage.cfg),
|
|
configuration file for the `genimage` utility, which produces
|
|
the final `sdcard.img` SD card image. It describes the
|
|
partition layout of the SD card. Only used by basic configurations.
|
|
* [`genimage-demo.cfg`](/board/stmicroelectronics/stm32mp1/genimage-demo.cfg),
|
|
configuration file for the `genimage` utility, which produces
|
|
the final `sdcard.img` SD card image. It describes the
|
|
partition layout of the SD card. Only used by demo configurations.
|
|
* [`post-build.sh`](/board/stmicroelectronics/stm32mp1/post-build.sh),
|
|
the script executed by Buildroot at the end of the rootfs generation
|
|
to produce update the `extlinux.conf` with the right devicetree name.
|
|
* [`post-build-demo.sh`](/board/stmicroelectronics/stm32mp1/post-build-demo.sh),
|
|
the script executed by Buildroot for demo configuration at the end
|
|
of the rootfs generation. It creates Wifi firmware links, update
|
|
RAUC configurations files and creates `/data` directory.
|
|
* [`post-image.sh`](/board/stmicroelectronics/stm32mp1/post-image.sh),
|
|
the script executed by Buildroot at the end of the build to
|
|
produce the SD card image and deploy the flash.tsv file.
|
|
* [`post-image.sh`](/board/stmicroelectronics/stm32mp1/post-image.sh),
|
|
the script executed by Buildroot for demo configurations at the end
|
|
of the build to produces the RAUC update bundle.
|
|
* [`linux-disable-etnaviv.config`](/board/stmicroelectronics/stm32mp1/linux-disable-etnaviv.config),
|
|
a Linux kernel configuration file fragment that disables the
|
|
Etnaviv GPU driver.
|
|
* [`linux-enable-fbdev-emul.config`](/board/stmicroelectronics/stm32mp1/linux-enable-fbdev-emul.config),
|
|
a Linux kernel configuration file fragment that enables the
|
|
*fbdev* emulation of the DRM subsystem, which is needed on the
|
|
STM32MP135 platform to be able to use the *linuxfb* backend of
|
|
Qt5, in the absence of GPU/OpenGL
|
|
* [`linux-enable-rauc.config`](/board/stmicroelectronics/stm32mp1/linux-enable-rauc.config),
|
|
a Linux kernel configuration file fragment that enables the
|
|
requisite kernel driver to use RAUC.
|
|
* [`patches`](/board/stmicroelectronics/stm32mp1/patches), which
|
|
contains one patch for the Linux kernel, fixing a module
|
|
loading issue for the audio codec driver.
|
|
* [`patches-demo`](/board/stmicroelectronics/stm32mp1/patches-demo),
|
|
which contains one patch for the U-boot Bootloader, adding OTA
|
|
special environment.
|
|
* [`package/m4projects`](/package/m4projects), a Buildroot package
|
|
that builds and installs all the Cortex-M4 examples of the
|
|
[STM32CubeMP1](https://github.com/STMicroelectronics/STM32CubeMP1.git)
|
|
sources. It uses a [python
|
|
script](/package/m4projects/parse_project_config.py) as a wrapper to
|
|
transform the .project and .cproject files readable by the dedicated
|
|
[Makefile](/package/m4projects/Makefile.stm32).
|
|
* `configs/`
|
|
* [`st_stm32mp157a_dk1_defconfig`](/configs/st_stm32mp157a_dk1_defconfig),
|
|
* [`st_stm32mp157d_dk1_defconfig`](/configs/st_stm32mp157d_dk1_defconfig),
|
|
minimal configurations for the DK1
|
|
* [`st_stm32mp157a_dk1_demo_defconfig`](/configs/st_stm32mp157a_dk1_demo_defconfig),
|
|
* [`st_stm32mp157d_dk1_demo_defconfig`](/configs/st_stm32mp157d_dk1_demo_defconfig),
|
|
demo configurations for the DK1
|
|
* [`st_stm32mp157c_dk2_defconfig`](/configs/st_stm32mp157c_dk2_defconfig),
|
|
* [`st_stm32mp157f_dk2_defconfig`](/configs/st_stm32mp157f_dk2_defconfig),
|
|
minimal configurations for the DK2
|
|
* [`st_stm32mp157c_dk2_demo_defconfig`](/configs/st_stm32mp157c_dk2_demo_defconfig),
|
|
* [`st_stm32mp157f_dk2_demo_defconfig`](/configs/st_stm32mp157f_dk2_demo_defconfig),
|
|
demo configurations for the DK2
|
|
* [`st_stm32mp135f_dk_defconfig`](/configs/st_stm32mp135f_dk_defconfig),
|
|
minimal configurations for the DK
|
|
* [`st_stm32mp135f_dk_demo_defconfig`](/configs/st_stm32mp135f_dk_demo_defconfig),
|
|
demo configurations for the DK
|
|
* `docs`, documentation
|
|
* `Config.in`, top-level Config.in file mandatory in all `BR2_EXTERNAL`
|
|
trees. Indicate the location of the Config.in file from our `m4projects`
|
|
package.
|
|
* `README.md`
|
|
* `external.desc`, mandatory in all `BR2_EXTERNAL` trees, gives a name
|
|
and description for the `BR2_EXTERNAL` tree
|
|
* `external.mk`, mandatory in all `BR2_EXTERNAL` trees, indicate the
|
|
location of `*.mk` file from new packages.
|
|
|
|
## Changes compared to upstream Buildroot
|
|
|
|
The `st/2023.02.10` branch of this `BR2_EXTERNAL` is designed to work
|
|
with Buildroot 2023.02.10 However, we needed a few changes compared to
|
|
upstream Buildroot 2023.02.10, which can be seen at
|
|
[https://github.com/bootlin/buildroot/commits/st/2023.02.10](https://github.com/bootlin/buildroot/commits/st/2023.02.10). We
|
|
have just 3 changes on top of Buildroot 2023.02.10, and they can easily
|
|
be rebased on top of the latest Buildroot 2023.02.x to continue to
|
|
benefit from the security fixes provided by the Buildroot community.
|
|
|
|
Here are the 3 changes:
|
|
|
|
* Update the `gcnano-binaries` package to a newer version. This
|
|
package contains the closed-source OpenGL user-space libraries,
|
|
which need to be in sync with the kernel side.
|
|
|
|
* Fix a regression in the `optee-test` package by backporting two
|
|
patches from upstream OP-TEE.
|
|
|
|
* Fix the build of TF-A fip tool in the `arm-trusted-firmware` package.
|
|
This patch has been cherry picked from Builroot mainline.
|