[Buildroot] [PATCH 1/1] Preliminary support for Raspberry Pi 3.
Benoît Allard
benoit.allard at greenbone.net
Fri Apr 22 15:01:14 UTC 2016
Hi Ubaldo,
I updated a bit your defconfig (see below), and I was able to boot the
generated image. Weirdly I get no getty on the HDMI, just the kernel
boot log. Have I done something wrong ?
Regards,
Ben.
On Wed, 20 Apr 2016 11:04:00 +0000
Ubaldo Porcheddu <ubaldo at eja.it> wrote:
> Signed-off-by: Ubaldo Porcheddu <ubaldo at eja.it>
> ---
> board/raspberrypi3/genimage-raspberrypi3.cfg | 30 +++++++++++++
> board/raspberrypi3/post-build.sh | 9 ++++
> board/raspberrypi3/post-image.sh | 22 ++++++++++
> board/raspberrypi3/readme.txt | 64
> ++++++++++++++++++++++++++++
> configs/raspberrypi3_defconfig | 36 ++++++++++++++++ 5
> files changed, 161 insertions(+) create mode 100644
> board/raspberrypi3/genimage-raspberrypi3.cfg create mode 100755
> board/raspberrypi3/post-build.sh create mode 100755
> board/raspberrypi3/post-image.sh create mode 100644
> board/raspberrypi3/readme.txt create mode 100644
> configs/raspberrypi3_defconfig
>
> diff --git a/board/raspberrypi3/genimage-raspberrypi3.cfg
> b/board/raspberrypi3/genimage-raspberrypi3.cfg new file mode 100644
> index 0000000..7ba89c5
> --- /dev/null
> +++ b/board/raspberrypi3/genimage-raspberrypi3.cfg
> @@ -0,0 +1,30 @@
> +image boot.vfat {
> + vfat {
> + files = {
> + "bcm2710-rpi-3-b.dtb",
> + "rpi-firmware/bootcode.bin",
> + "rpi-firmware/cmdline.txt",
> + "rpi-firmware/config.txt",
> + "rpi-firmware/fixup.dat",
> + "rpi-firmware/start.elf",
> + "kernel-marked/zImage"
> + }
> + }
> + size = 32M
> +}
> +
> +image sdcard.img {
> + hdimage {
> + }
> +
> + partition boot {
> + partition-type = 0xC
> + bootable = "true"
> + image = "boot.vfat"
> + }
> +
> + partition rootfs {
> + partition-type = 0x83
> + image = "rootfs.ext4"
> + }
> +}
> diff --git a/board/raspberrypi3/post-build.sh
> b/board/raspberrypi3/post-build.sh new file mode 100755
> index 0000000..7eae14a
> --- /dev/null
> +++ b/board/raspberrypi3/post-build.sh
> @@ -0,0 +1,9 @@
> +#!/bin/sh
> +
> +set -u
> +set -e
> +
> +# Add a console on tty1
> +grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \
> +sed -i '/GENERIC_SERIAL/a\
> +tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console'
> ${TARGET_DIR}/etc/inittab diff --git
> a/board/raspberrypi3/post-image.sh b/board/raspberrypi3/post-image.sh
> new file mode 100755 index 0000000..73ffd65
> --- /dev/null
> +++ b/board/raspberrypi3/post-image.sh
> @@ -0,0 +1,22 @@
> +#!/bin/sh
> +
> +BOARD_DIR="$(dirname $0)"
> +BOARD_NAME="$(basename ${BOARD_DIR})"
> +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg"
> +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
> +
> +# Mark the kernel as DT-enabled
> +mkdir -p "${BINARIES_DIR}/kernel-marked"
> +${HOST_DIR}/usr/bin/mkknlimg "${BINARIES_DIR}/zImage" \
> + "${BINARIES_DIR}/kernel-marked/zImage"
> +
> +rm -rf "${GENIMAGE_TMP}"
> +
> +genimage \
> + --rootpath "${TARGET_DIR}" \
> + --tmppath "${GENIMAGE_TMP}" \
> + --inputpath "${BINARIES_DIR}" \
> + --outputpath "${BINARIES_DIR}" \
> + --config "${GENIMAGE_CFG}"
> +
> +exit $?
> diff --git a/board/raspberrypi3/readme.txt
> b/board/raspberrypi3/readme.txt new file mode 100644
> index 0000000..dcbcffd
> --- /dev/null
> +++ b/board/raspberrypi3/readme.txt
> @@ -0,0 +1,64 @@
> +Raspberry Pi
> +
> +Intro
> +=====
> +
> +These instructions apply to Raspberry Pi 3 version B.
> +
> +How to build it
> +===============
> +
> +Configure Buildroot
> +-------------------
> +
> +
> + $ make raspberrypi3_defconfig
> +
> +
> +Build the rootfs
> +----------------
> +
> +Note: you will need to have access to the network, since Buildroot
> will +download the packages' sources.
> +
> +You may now build your rootfs with:
> +
> + $ make
> +
> +(This may take a while, consider getting yourself a coffee ;-) )
> +
> +Result of the build
> +-------------------
> +
> +After building, you should obtain this tree:
> +
> + output/images/
> + +-- bcm2710-rpi-3-b.dtb
> + +-- boot.vfat
> + +-- kernel-marked/zImage [1]
> + +-- rootfs.ext4
> + +-- rpi-firmware/
> + | +-- bootcode.bin
> + | +-- cmdline.txt
> + | +-- config.txt
> + | +-- fixup.dat
> + | `-- start.elf
> + +-- sdcard.img
> + `-- zImage
> +
> +[1] This is the mkknlimg DT-marked kernel.
> +
> +How to write the SD card
> +========================
> +
> +Once the build process is finished you will have an image called
> "sdcard.img" +in the output/images/ directory.
> +
> +Copy the bootable "sdcard.img" onto an SD card with "dd":
> +
> + $ sudo dd if=output/images/sdcard.img of=/dev/sdX
> +
> +Insert the SDcard into your Raspberry Pi, and power it up. Your new
> system +should come up now and start two consoles: one on the serial
> port on +the P1 header, one on the HDMI output where you can login
> using a USB +keyboard.
> diff --git a/configs/raspberrypi3_defconfig
> b/configs/raspberrypi3_defconfig new file mode 100644
> index 0000000..80ce908
> --- /dev/null
> +++ b/configs/raspberrypi3_defconfig
> @@ -0,0 +1,36 @@
> +BR2_arm=y
> +BR2_cortex_a7=y
Raspberry3 are using A8 processors.
> +BR2_ARM_EABIHF=y
> +BR2_ARM_FPU_NEON_VFPV4=y
> +
> +BR2_TOOLCHAIN_BUILDROOT_CXX=y
> +
> +BR2_SYSTEM_DHCP="eth0"
> +
> +# Linux headers same as kernel, a 4.1 series
> +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y
> +
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_GIT=y
> +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git"
> +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="20fe468af4bb40fec0f81753da4b20a8bfc259c9"
Better use the branch name to allow shallow clones. in this case:
"rpi-4.1.y"
Why don't you use a more recent branch ?
> +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
If using the 4.4 branch, there is a defconfig for bcm2710.
> +
> +# Build the DTB from the kernel sources
> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b"
> +
> +BR2_PACKAGE_RPI_FIRMWARE=y
> +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
> +
> +# Required tools to create the SD image
> +BR2_PACKAGE_HOST_DOSFSTOOLS=y
> +BR2_PACKAGE_HOST_GENIMAGE=y
> +BR2_PACKAGE_HOST_MTOOLS=y
> +
> +# Filesystem / image
> +BR2_TARGET_ROOTFS_EXT2=y
> +BR2_TARGET_ROOTFS_EXT2_4=y
> +# BR2_TARGET_ROOTFS_TAR is not set
> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh"
> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160422/dc37e902/attachment-0002.asc>
More information about the buildroot
mailing list