Message ID | 866e1f31-97ad-0df3-42e7-521a4a2ad60e@wanadoo.fr |
---|---|
State | Superseded |
Headers | show |
Series | [1/1] Add LicheePi Zero support | expand |
Hello, Thanks for this contribution! On Tue, 20 Mar 2018 19:27:35 +0100, Michel Stempin wrote: > From b27c30f03f0355f8401ecedacd8f5378c3a6cf02 Mon Sep 17 00:00:00 2001 > From: Michel Stempin <michel.stempin@wanadoo.fr> > Date: Tue, 20 Mar 2018 19:23:13 +0100 > Subject: [PATCH 1/1] Add LicheePi Zero support This looks odd. Could you use "git send-email" to send your patches ? More comments below. > diff --git a/board/licheepi/post-build.sh b/board/licheepi/post-build.sh > new file mode 100755 > index 0000000..dda2987 > --- /dev/null > +++ b/board/licheepi/post-build.sh > @@ -0,0 +1,13 @@ > +#!/bin/sh > +BOARD_DIR="$( dirname "${0}" )" > +MKIMAGE="${HOST_DIR}/bin/mkimage" > +MKSWAP="${HOST_DIR}/sbin/mkswap" > +BOOT_CMD="${BOARD_DIR}/boot.cmd" > +BOOT_CMD_H="${BINARIES_DIR}/boot.scr" > + > +# U-Boot script > +"${MKIMAGE}" -C none -A arm -T script -d "${BOOT_CMD}" "${BOOT_CMD_H}" This should be done using BR2_TARGET_UBOOT_BOOT_SCRIPT. > + > +# Swap > +sed -i '/^\/swap/d' "${TARGET_DIR}/etc/fstab" > +echo "/swap none swap defaults 0 0" >> "${TARGET_DIR}/etc/fstab" Why do you need to tweak this in the fstab ? > diff --git a/board/licheepi/post-image.sh b/board/licheepi/post-image.sh You can use support/scripts/genimage.sh instead. > diff --git a/configs/licheepi_zero_defconfig b/configs/licheepi_zero_defconfig > new file mode 100644 > index 0000000..4b7e7ac > --- /dev/null > +++ b/configs/licheepi_zero_defconfig > @@ -0,0 +1,75 @@ > +# Target options > +BR2_arm=y > +BR2_cortex_a7=y > +BR2_ARM_FPU_VFPV4=y > + > +# Toolchain > +# External Linaro ARM 2017.11 toolchain > +BR2_TOOLCHAIN_EXTERNAL=y Please use the internal toolchain in the defconfig, like we do in all other defconfigs. > +# System configuration > +BR2_TARGET_GENERIC_HOSTNAME="licheepi-zero" > +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the LicheePi Zero" > +BR2_TARGET_GENERIC_ROOT_PASSWD="licheepi" > +# Run a getty (login prompt) after boot on ttyS0 @ 115200 bps > +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" > +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y > +# Custom scripts for image creation > +BR2_ROOTFS_POST_BUILD_SCRIPT="board/licheepi/post-build.sh" > +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/licheepi/post-image.sh" > + > +# Kernel > +# Custom 4.14.14 kernel based on stable linux.4.14.y from Lichee-Pi Github repository > +BR2_LINUX_KERNEL=y > +BR2_LINUX_KERNEL_CUSTOM_GIT=y > +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Lichee-Pi/linux" > +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="zero-4.14.y" This looks like a branch and not a tag or commit. You should use a tag or commit so that the build is reproducible. > +# In-tree kernel configuration > +BR2_LINUX_KERNEL_DEFCONFIG="licheepi_zero" > +# AllWinner V3s-based DTS > +BR2_LINUX_KERNEL_DTS_SUPPORT=y > +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-v3s-licheepi-zero sun8i-v3s-licheepi-zero-dock" > + > +# Target packages > + > +# E2fsprogs package for resize2fs > +BR2_PACKAGE_E2FSPROGS=y > +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y We don't install this package in most defconfigs, so I think you should remove it. > + > +# Hardware handling > +# Firmare > +# Linux-firmware > +BR2_PACKAGE_LINUX_FIRMWARE=y > +# Wifi firmware > +# Realtek 87xx for rtl8723bs support > +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y > + > +# Dhcpcd package DHCP client for Wi-Fi > +BR2_PACKAGE_DHCPCD=y > + > +# WPA_supplicant package for Wi-Fi Authentication > +BR2_PACKAGE_WPA_SUPPLICANT=y > +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y > + > +# Filesystem images > +BR2_TARGET_ROOTFS_EXT2=y > +BR2_TARGET_ROOTFS_EXT2_4=y > + > +# Bootloaders > +# Custom U-Boot from Lichee-Pi Github repository > +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/Lichee-Pi/u-boot" > +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="v3s-current" Same question: is this a branch or a tag name ? > +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="LicheePi_Zero" > +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y > +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" > + > +# Host utilities > +# Required host utilities for building an SDCard image > +BR2_PACKAGE_HOST_DOSFSTOOLS=y > +BR2_PACKAGE_HOST_DTC=y DTC is not needed. It might be needed by U-Boot, but in this case, you should use BR2_TARGET_UBOOT_NEEDS_DTC=y. > +BR2_PACKAGE_HOST_GENIMAGE=y > +BR2_PACKAGE_HOST_MTOOLS=y > +BR2_PACKAGE_HOST_UBOOT_TOOLS=y This last line will no longer be needed once you use BR2_TARGET_UBOOT_BOOT_SCRIPT. Thanks! Thomas
Hello Thomas, Thank you for reviewing my patch! Le 21/03/2018 à 15:55, Thomas Petazzoni a écrit : > Hello, > > Thanks for this contribution! > > On Tue, 20 Mar 2018 19:27:35 +0100, Michel Stempin wrote: >> From b27c30f03f0355f8401ecedacd8f5378c3a6cf02 Mon Sep 17 00:00:00 2001 >> From: Michel Stempin <michel.stempin@wanadoo.fr> >> Date: Tue, 20 Mar 2018 19:23:13 +0100 >> Subject: [PATCH 1/1] Add LicheePi Zero support > > This looks odd. Could you use "git send-email" to send your patches ? Ok, I will configure it. > > More comments below. > > >> diff --git a/board/licheepi/post-build.sh b/board/licheepi/post-build.sh >> new file mode 100755 >> index 0000000..dda2987 >> --- /dev/null >> +++ b/board/licheepi/post-build.sh >> @@ -0,0 +1,13 @@ >> +#!/bin/sh >> +BOARD_DIR="$( dirname "${0}" )" >> +MKIMAGE="${HOST_DIR}/bin/mkimage" >> +MKSWAP="${HOST_DIR}/sbin/mkswap" >> +BOOT_CMD="${BOARD_DIR}/boot.cmd" >> +BOOT_CMD_H="${BINARIES_DIR}/boot.scr" >> + >> +# U-Boot script >> +"${MKIMAGE}" -C none -A arm -T script -d "${BOOT_CMD}" "${BOOT_CMD_H}" > > This should be done using BR2_TARGET_UBOOT_BOOT_SCRIPT. I didn't know how to use it. I have it working now, thanks. > >> + >> +# Swap >> +sed -i '/^\/swap/d' "${TARGET_DIR}/etc/fstab" >> +echo "/swap none swap defaults 0 0" >> "${TARGET_DIR}/etc/fstab" > > Why do you need to tweak this in the fstab ? The LicheePi Zero is booting on SDCard by default, and has only limited (64MiB) SDRAM, so I tried to make it a turnkey solution by providing all the tools to resize the partition and filesystem and add swap. I understand now that you try to keep the defconfig changes to the bare minimum, so I will remove all these extra tools. > >> diff --git a/board/licheepi/post-image.sh b/board/licheepi/post-image.sh > > You can use support/scripts/genimage.sh instead. Ok, done. > > >> diff --git a/configs/licheepi_zero_defconfig b/configs/licheepi_zero_defconfig >> new file mode 100644 >> index 0000000..4b7e7ac >> --- /dev/null >> +++ b/configs/licheepi_zero_defconfig >> @@ -0,0 +1,75 @@ >> +# Target options >> +BR2_arm=y >> +BR2_cortex_a7=y >> +BR2_ARM_FPU_VFPV4=y >> + >> +# Toolchain >> +# External Linaro ARM 2017.11 toolchain >> +BR2_TOOLCHAIN_EXTERNAL=y > > Please use the internal toolchain in the defconfig, like we do in all > other defconfigs. Ok, done. > >> +# System configuration >> +BR2_TARGET_GENERIC_HOSTNAME="licheepi-zero" >> +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the LicheePi Zero" >> +BR2_TARGET_GENERIC_ROOT_PASSWD="licheepi" >> +# Run a getty (login prompt) after boot on ttyS0 @ 115200 bps >> +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" >> +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y >> +# Custom scripts for image creation >> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/licheepi/post-build.sh" >> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/licheepi/post-image.sh" >> + >> +# Kernel >> +# Custom 4.14.14 kernel based on stable linux.4.14.y from Lichee-Pi Github repository >> +BR2_LINUX_KERNEL=y >> +BR2_LINUX_KERNEL_CUSTOM_GIT=y >> +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Lichee-Pi/linux" >> +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="zero-4.14.y" > > This looks like a branch and not a tag or commit. You should use a tag > or commit so that the build is reproducible. OK, I will take an exact commit hash. > >> +# In-tree kernel configuration >> +BR2_LINUX_KERNEL_DEFCONFIG="licheepi_zero" >> +# AllWinner V3s-based DTS >> +BR2_LINUX_KERNEL_DTS_SUPPORT=y >> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-v3s-licheepi-zero sun8i-v3s-licheepi-zero-dock" >> + >> +# Target packages >> + >> +# E2fsprogs package for resize2fs >> +BR2_PACKAGE_E2FSPROGS=y >> +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y > > We don't install this package in most defconfigs, so I think you should > remove it. Ok, removed, see above. > >> + >> +# Hardware handling >> +# Firmare >> +# Linux-firmware >> +BR2_PACKAGE_LINUX_FIRMWARE=y >> +# Wifi firmware >> +# Realtek 87xx for rtl8723bs support >> +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y >> + >> +# Dhcpcd package DHCP client for Wi-Fi >> +BR2_PACKAGE_DHCPCD=y >> + >> +# WPA_supplicant package for Wi-Fi Authentication >> +BR2_PACKAGE_WPA_SUPPLICANT=y >> +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y >> + >> +# Filesystem images >> +BR2_TARGET_ROOTFS_EXT2=y >> +BR2_TARGET_ROOTFS_EXT2_4=y >> + >> +# Bootloaders >> +# Custom U-Boot from Lichee-Pi Github repository >> +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/Lichee-Pi/u-boot" >> +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="v3s-current" > > Same question: is this a branch or a tag name ? I will take an exact commit hash as above. > >> +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="LicheePi_Zero" >> +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y >> +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" >> + >> +# Host utilities >> +# Required host utilities for building an SDCard image >> +BR2_PACKAGE_HOST_DOSFSTOOLS=y >> +BR2_PACKAGE_HOST_DTC=y > > DTC is not needed. It might be needed by U-Boot, but in this case, you > should use BR2_TARGET_UBOOT_NEEDS_DTC=y. OK, didn't know about this one, I tested it, it works! > >> +BR2_PACKAGE_HOST_GENIMAGE=y >> +BR2_PACKAGE_HOST_MTOOLS=y >> +BR2_PACKAGE_HOST_UBOOT_TOOLS=y > > This last line will no longer be needed once you use > BR2_TARGET_UBOOT_BOOT_SCRIPT. Yes, I remove it. > > Thanks! > > Thomas > I will create a v2 patch and resubmit it for review, Thanks! Michel
diff --git a/board/licheepi/boot.cmd b/board/licheepi/boot.cmd new file mode 100644 index 0000000..383b347 --- /dev/null +++ b/board/licheepi/boot.cmd @@ -0,0 +1,4 @@ +setenv bootargs console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p2 earlyprintk rw +load mmc 0:1 0x41000000 zImage +load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb +bootz 0x41000000 - 0x41800000 diff --git a/board/licheepi/genimage-licheepi.cfg b/board/licheepi/genimage-licheepi.cfg new file mode 100644 index 0000000..0d8540f --- /dev/null +++ b/board/licheepi/genimage-licheepi.cfg @@ -0,0 +1,35 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-v3s-licheepi-zero-dock.dtb", + "sun8i-v3s-licheepi-zero.dtb", + "boot.scr" + } + } + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 516096 # 512KB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 0 + } +} diff --git a/board/licheepi/post-build.sh b/board/licheepi/post-build.sh new file mode 100755 index 0000000..dda2987 --- /dev/null +++ b/board/licheepi/post-build.sh @@ -0,0 +1,13 @@ +#!/bin/sh +BOARD_DIR="$( dirname "${0}" )" +MKIMAGE="${HOST_DIR}/bin/mkimage" +MKSWAP="${HOST_DIR}/sbin/mkswap" +BOOT_CMD="${BOARD_DIR}/boot.cmd" +BOOT_CMD_H="${BINARIES_DIR}/boot.scr" + +# U-Boot script +"${MKIMAGE}" -C none -A arm -T script -d "${BOOT_CMD}" "${BOOT_CMD_H}" + +# Swap +sed -i '/^\/swap/d' "${TARGET_DIR}/etc/fstab" +echo "/swap none swap defaults 0 0" >> "${TARGET_DIR}/etc/fstab" diff --git a/board/licheepi/post-image.sh b/board/licheepi/post-image.sh new file mode 100755 index 0000000..93a7ddd --- /dev/null +++ b/board/licheepi/post-image.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +BOARD_DIR="$(dirname $0)" +BOARD_NAME="$(basename ${BOARD_DIR})" +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.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}" + +exit $? diff --git a/board/licheepi/readme.txt b/board/licheepi/readme.txt new file mode 100644 index 0000000..3f39bd0 --- /dev/null +++ b/board/licheepi/readme.txt @@ -0,0 +1,66 @@ +# LicheePi Zero + +Intro +===== + +This directory contains a buildroot configuration for building a +LicheePi Zero. + +How to build it +=============== + +Configure Buildroot +------------------- + +There is only one LicheePi Zero defconfig files in Buildroot: + + $ make licheepi_zero_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/ + +-- boot.scr + +-- boot.vfat + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- rootfs.tar + +-- sdcard.img + +-- sun8i-v3s-licheepi-zero-dock.dtb + +-- sun8i-v3s-licheepi-zero.dtb + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + +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 + +Alternatively, you can use the Etcher graphical tool to burn the image +to the SD card safely and on any platform: + +https://etcher.io/ + +Once the SD card is burned, insert it into your LicheePi Zero board, +and power it up. Your new system should come up now and start a +console on the UART0 serial port. diff --git a/configs/licheepi_zero_defconfig b/configs/licheepi_zero_defconfig new file mode 100644 index 0000000..4b7e7ac --- /dev/null +++ b/configs/licheepi_zero_defconfig @@ -0,0 +1,75 @@ +# Target options +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Toolchain +# External Linaro ARM 2017.11 toolchain +BR2_TOOLCHAIN_EXTERNAL=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="licheepi-zero" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the LicheePi Zero" +BR2_TARGET_GENERIC_ROOT_PASSWD="licheepi" +# Run a getty (login prompt) after boot on ttyS0 @ 115200 bps +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +# Custom scripts for image creation +BR2_ROOTFS_POST_BUILD_SCRIPT="board/licheepi/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/licheepi/post-image.sh" + +# Kernel +# Custom 4.14.14 kernel based on stable linux.4.14.y from Lichee-Pi Github repository +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Lichee-Pi/linux" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="zero-4.14.y" +# In-tree kernel configuration +BR2_LINUX_KERNEL_DEFCONFIG="licheepi_zero" +# AllWinner V3s-based DTS +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-v3s-licheepi-zero sun8i-v3s-licheepi-zero-dock" + +# Target packages + +# E2fsprogs package for resize2fs +BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y + +# Hardware handling +# Firmare +# Linux-firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +# Wifi firmware +# Realtek 87xx for rtl8723bs support +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y + +# Dhcpcd package DHCP client for Wi-Fi +BR2_PACKAGE_DHCPCD=y + +# WPA_supplicant package for Wi-Fi Authentication +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y + +# Filesystem images +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +# Custom U-Boot from Lichee-Pi Github repository +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/Lichee-Pi/u-boot" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="v3s-current" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="LicheePi_Zero" +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Host utilities +# Required host utilities for building an SDCard image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_DTC=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y