configs/stm32f429_disco: new configuration for STM32F429 Discovery board

This commit adds a defconfig for the STM32F429 platform, which is
based on a Cortex-M4 core from ST Microelectronics. It is therefore
the first noMMU ARM platform supported in Buildroot.

This commit includes some files that will be common to several STM32
platforms (hence in board/stmicroelectronics) and some files that are
specific to the STM32F429 (hence in
board/stmicroelectronics/stm32f429-disco). More specifically, this
commit adds:

 - A minimal Busybox configuration, which is small enough to boot
   without causing OOM on such small noMMU platforms. The resulting
   Busybox, statically linked with uClibc-ng, weights around 220
   KB. For now, this file is located in board/stmicroelectronics/, but
   we might consider moving it to package/busybox/ in the future if
   needed.

 - A post-build script that removes the mounting of /dev/pts (not
   enabled in the kernel and not very useful for a system that has no
   network and no X), and removes the network related init script and
   configuration files (no network support).

 - A flash.sh script, to perform the right OpenOCD invocations to
   reflash the board.

 - One small kernel patch to adjust the kernel command line in the
   Device Tree, since it's the only way to do so.

 - The usual readme.txt file.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
[Thomas:
 - squashed multiple patches from Lee Jones together
 - added the minimal Busybox configuration
 - added the post-build script
 - improved the flashing script to not hardcode the location of the
   output directory
 - add the small kernel patch
 - improve the readme.txt file
 - test on HW the resulting image, after using the internal toolchain.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Lee Jones 2016-04-15 23:02:19 +02:00 committed by Peter Korsgaard
parent a354e3828d
commit c8ad46a1a7
6 changed files with 1165 additions and 0 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
#!/bin/sh
# Kernel is built without devpts support
sed -i '/^devpts/d' ${TARGET_DIR}/etc/fstab
# Kernel is built without network support
rm -f ${TARGET_DIR}/etc/init.d/S40network
rm -rf ${TARGET_DIR}/etc/network/

View file

@ -0,0 +1,20 @@
#!/bin/bash
OUTPUT_DIR=$1
if ! test -d "${OUTPUT_DIR}" ; then
echo "ERROR: no output directory specified."
echo "Usage: $0 OUTPUT_DIR"
exit 1
fi
${OUTPUT_DIR}/host/usr/bin/openocd -f board/stm32f429discovery.cfg \
-c "init" \
-c "reset init" \
-c "flash probe 0" \
-c "flash info 0" \
-c "flash write_image erase ${OUTPUT_DIR}/images/stm32f429i-disco.bin 0x08000000" \
-c "flash write_image erase ${OUTPUT_DIR}/images/stm32f429-disco.dtb 0x08004000" \
-c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x08008000" \
-c "reset run" \
-c "shutdown"

View file

@ -0,0 +1,32 @@
From ded9afa688184b3240a92c2b8f114c545a09bc3f Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 12 Mar 2016 23:14:41 +0100
Subject: [PATCH] ARM: stm32f249-disco: don't force init= in /chosen/bootargs
There is no reason to override the kernel's default init= value, as
this breaks userspace that assumes the kernel default of /init is
used. Since stm32 is often used with a minimal bootloader
(afboot-stm32) that doesn't provide any mechanism to override the DTB,
we need to adjust the kernel command line in the Device Tree source.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
arch/arm/boot/dts/stm32f429-disco.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/stm32f429-disco.dts b/arch/arm/boot/dts/stm32f429-disco.dts
index f0b731d..2bae81c 100644
--- a/arch/arm/boot/dts/stm32f429-disco.dts
+++ b/arch/arm/boot/dts/stm32f429-disco.dts
@@ -53,7 +53,7 @@
compatible = "st,stm32f429i-disco", "st,stm32f429";
chosen {
- bootargs = "root=/dev/ram rdinit=/linuxrc";
+ bootargs = "root=/dev/ram";
stdout-path = "serial0:115200n8";
};
--
2.6.4

View file

@ -0,0 +1,30 @@
STM32F429 Discovery
===================
This tutorial describes how to use the predefined Buildroot
configuration for the STM32F429 Discovery evaluation platform.
Building
--------
make stm32f429_disco_defconfig
make
Wire the UART
-------------
Use a USB to TTL adapter, and connect:
- RX to PA9
- TX to PA10
- GND to one of the GND available on the board
The UART is configured at 115200.
Flashing
--------
./board/stmicroelectronics/stm32f429-disco/flash.sh output/
It will flash the minimal bootloader, the Device Tree Blob, and the
kernel image which includes the root filesystem as initramfs.

View file

@ -0,0 +1,18 @@
BR2_arm=y
BR2_cortex_m4=y
BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f429-disco/patches/"
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_5=y
BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.5"
BR2_LINUX_KERNEL_DEFCONFIG="stm32"
BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f429-disco"
BR2_PACKAGE_BUSYBOX_CONFIG="board/stmicroelectronics/busybox-minimal.config"
BR2_TARGET_ROOTFS_INITRAMFS=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_AFBOOT_STM32=y
BR2_PACKAGE_HOST_OPENOCD=y