Message ID | 20170608204400.21287-1-oleks@arcturusnetworks.com |
---|---|
State | Changes Requested |
Headers | show |
Hello, Thanks for this new version! On Thu, 8 Jun 2017 16:44:00 -0400, Oleksandr Zhadan wrote: > Changes v2 -> v3: > - commit title is changed (from "Arcturus uCLS1012A-SOM support") > - new updates in readme.txt > - ls1012a network firmware moved into kernel What does this means? > diff --git a/board/arcturus/aarch64-ucls1012a/post-build.sh b/board/arcturus/aarch64-ucls1012a/post-build.sh > new file mode 100755 > index 000000000..e1bfd046c > --- /dev/null > +++ b/board/arcturus/aarch64-ucls1012a/post-build.sh > @@ -0,0 +1,5 @@ > +#!/bin/sh > + > +# Network Driver Firmware > +mkdir -p ${TARGET_DIR}/lib/firmware > +cp -f ${BUILD_DIR}/linux-custom/firmware/ppfe/* ${TARGET_DIR}/lib/firmware/ OK, you moved the firmware inside the kernel sources. Not really nice, because it means those files in the target filesystem are not associated with any license. Why aren't those firmware files contributed to the linux-firmware project instead? > diff --git a/board/arcturus/aarch64-ucls1012a/post-image.sh b/board/arcturus/aarch64-ucls1012a/post-image.sh > new file mode 100755 > index 000000000..d506724a3 > --- /dev/null > +++ b/board/arcturus/aarch64-ucls1012a/post-image.sh > @@ -0,0 +1,9 @@ > +#!/bin/sh > + > +echo ---------Making ITB partition image--------- We normally don't have such debug messages in post-image scripts. > +cp -f board/arcturus/aarch64-ucls1012a/ucls1012a.its ${BINARIES_DIR}/ > +MKIMAGE=${HOST_DIR}/usr/bin/mkimage > +MKIMAGE_IN=${BINARIES_DIR}/ucls1012a.its > +MKIMAGE_OUT=${BINARIES_DIR}/part0-000000.itb > +${MKIMAGE} -f $MKIMAGE_IN $MKIMAGE_OUT Why not use ${...} everywhere ? > diff --git a/configs/arcturus_ucls1012a_defconfig b/configs/arcturus_ucls1012a_defconfig > new file mode 100644 > index 000000000..64557fde7 > --- /dev/null > +++ b/configs/arcturus_ucls1012a_defconfig > @@ -0,0 +1,23 @@ > +BR2_aarch64=y > +BR2_TOOLCHAIN_EXTERNAL=y Still need to change this to the internal toolchain, as per our previous discussion. > +BR2_TARGET_GENERIC_HOSTNAME="ucls1012a" > +BR2_TARGET_GENERIC_ISSUE="Welcome to uCLS1012A-SOM" > +BR2_SYSTEM_DHCP="eth0" > +BR2_ROOTFS_OVERLAY="board/arcturus/aarch64-ucls1012a/rootfs_overlay" > +BR2_ROOTFS_POST_BUILD_SCRIPT="board/arcturus/aarch64-ucls1012a/post-build.sh" > +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arcturus/aarch64-ucls1012a/post-image.sh" > +BR2_LINUX_KERNEL=y > +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y > +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://www.arcturusnetworks.com/OSS/kernel-ucls1012a.tar.gz" I didn't see this before: there is no version in the name of this tarball, and its name hasn't changed since you added the firmware files. Which means that you apparently intend to change this tarball later on. This is *really* bad, as it means the build is not reproducible: what people will build one day may be different the next day or week, because you changed this tarball. Could you add tarballs with a version in their name, and not change existing tarballs, but instead upload new ones with a different version? Or better, use a Git repository, like everyone else :) > +BR2_LINUX_KERNEL_DEFCONFIG="ucls1012a" > +BR2_LINUX_KERNEL_DTS_SUPPORT=y > +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arcturus/arc-ucls1012a" > +BR2_TARGET_ROOTFS_CPIO=y > +BR2_TARGET_ROOTFS_CPIO_GZIP=y > +BR2_TARGET_UBOOT=y > +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y > +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y > +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://www.arcturusnetworks.com/OSS/u-boot-ucls1012a.tar.gz" Same comment here. Thanks, Thomas
On 06/08/2017 05:10 PM, Thomas Petazzoni wrote: > Hello, > > Thanks for this new version! > > On Thu, 8 Jun 2017 16:44:00 -0400, Oleksandr Zhadan wrote: > >> Changes v2 -> v3: >> - commit title is changed (from "Arcturus uCLS1012A-SOM support") >> - new updates in readme.txt >> - ls1012a network firmware moved into kernel > What does this means? > >> diff --git a/board/arcturus/aarch64-ucls1012a/post-build.sh b/board/arcturus/aarch64-ucls1012a/post-build.sh >> new file mode 100755 >> index 000000000..e1bfd046c >> --- /dev/null >> +++ b/board/arcturus/aarch64-ucls1012a/post-build.sh >> @@ -0,0 +1,5 @@ >> +#!/bin/sh >> + >> +# Network Driver Firmware >> +mkdir -p ${TARGET_DIR}/lib/firmware >> +cp -f ${BUILD_DIR}/linux-custom/firmware/ppfe/* ${TARGET_DIR}/lib/firmware/ > OK, you moved the firmware inside the kernel sources. Not really nice, > because it means those files in the target filesystem are not > associated with any license. The firmware is associated with Freescale-Binary-EULA licence and that license is included. I agree it's not really nice to move it inside kernel, but you asked to remove it from rootfs-overlay and I could not found any better place for now. Any suggestions welcome. > Why aren't those firmware files contributed to the linux-firmware > project instead? This firmware is came from Linux® SDK for QorIQ® Processors. SDKLINUX publicly available on NXP website. I really don't know when they going to publish it to any other places, but my personal preferences to use buildroot instead Yocto as build system on all our modules. BTW the NXP's SDK is using Linaro toolchain, even older version. > >> diff --git a/board/arcturus/aarch64-ucls1012a/post-image.sh b/board/arcturus/aarch64-ucls1012a/post-image.sh >> new file mode 100755 >> index 000000000..d506724a3 >> --- /dev/null >> +++ b/board/arcturus/aarch64-ucls1012a/post-image.sh >> @@ -0,0 +1,9 @@ >> +#!/bin/sh >> + >> +echo ---------Making ITB partition image--------- > We normally don't have such debug messages in post-image scripts. OK - removed. > >> +cp -f board/arcturus/aarch64-ucls1012a/ucls1012a.its ${BINARIES_DIR}/ >> +MKIMAGE=${HOST_DIR}/usr/bin/mkimage >> +MKIMAGE_IN=${BINARIES_DIR}/ucls1012a.its >> +MKIMAGE_OUT=${BINARIES_DIR}/part0-000000.itb >> +${MKIMAGE} -f $MKIMAGE_IN $MKIMAGE_OUT > Why not use ${...} everywhere ? OK - Changed. > >> diff --git a/configs/arcturus_ucls1012a_defconfig b/configs/arcturus_ucls1012a_defconfig >> new file mode 100644 >> index 000000000..64557fde7 >> --- /dev/null >> +++ b/configs/arcturus_ucls1012a_defconfig >> @@ -0,0 +1,23 @@ >> +BR2_aarch64=y >> +BR2_TOOLCHAIN_EXTERNAL=y > Still need to change this to the internal toolchain, as per our > previous discussion. Still requesting to keep external toolchain in this patch as "tested"&"trusted" on our module, plus suggested by NXP. Or please explain the reason why you try to avoid some options, like BR2_TOOLCHAIN_EXTERNAL, if it allowed choice, and even after my explanations that we did have an issue with internal one. I believe you should know the difference between QEMU and real CPU. > >> +BR2_TARGET_GENERIC_HOSTNAME="ucls1012a" >> +BR2_TARGET_GENERIC_ISSUE="Welcome to uCLS1012A-SOM" >> +BR2_SYSTEM_DHCP="eth0" >> +BR2_ROOTFS_OVERLAY="board/arcturus/aarch64-ucls1012a/rootfs_overlay" >> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/arcturus/aarch64-ucls1012a/post-build.sh" >> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arcturus/aarch64-ucls1012a/post-image.sh" >> +BR2_LINUX_KERNEL=y >> +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y >> +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://www.arcturusnetworks.com/OSS/kernel-ucls1012a.tar.gz" > I didn't see this before: there is no version in the name of this > tarball, and its name hasn't changed since you added the firmware files. > Which means that you apparently intend to change this tarball later on. > This is *really* bad, as it means the build is not reproducible: what > people will build one day may be different the next day or week, > because you changed this tarball. > > Could you add tarballs with a version in their name, and not change > existing tarballs, but instead upload new ones with a different version? > > Or better, use a Git repository, like everyone else :) Thanks, good point - will add version in the name. > >> +BR2_LINUX_KERNEL_DEFCONFIG="ucls1012a" >> +BR2_LINUX_KERNEL_DTS_SUPPORT=y >> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arcturus/arc-ucls1012a" >> +BR2_TARGET_ROOTFS_CPIO=y >> +BR2_TARGET_ROOTFS_CPIO_GZIP=y >> +BR2_TARGET_UBOOT=y >> +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y >> +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y >> +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://www.arcturusnetworks.com/OSS/u-boot-ucls1012a.tar.gz" > Same comment here. Got it. > > Thanks, > > Thomas
Hello, On Fri, 9 Jun 2017 11:37:11 -0400, Oleksandr G Zhadan wrote: > > OK, you moved the firmware inside the kernel sources. Not really nice, > > because it means those files in the target filesystem are not > > associated with any license. > The firmware is associated with Freescale-Binary-EULA licence and that > license is included. > I agree it's not really nice to move it inside kernel, but you asked to > remove it from rootfs-overlay and I could not found any better place for > now. Any suggestions welcome. Best option: Contribute the firmware to the linux-firmware project. Not as good, but still acceptable option: Separate Git repository with this firmware and its license file + a Buildroot package that downloads and installs this firmware. > > Why aren't those firmware files contributed to the linux-firmware > > project instead? > This firmware is came from Linux® SDK for QorIQ® Processors. SDKLINUX > publicly available on NXP website. > I really don't know when they going to publish it to any other places, > but my personal preferences to use buildroot instead Yocto as build > system on all our modules. > BTW the NXP's SDK is using Linaro toolchain, even older version. Can you point me to the Yocto recipe that installs this firmware ? Is their firmware bundled in their Yocto layer, or are they downloading it from some location ? > >> diff --git a/configs/arcturus_ucls1012a_defconfig b/configs/arcturus_ucls1012a_defconfig > >> new file mode 100644 > >> index 000000000..64557fde7 > >> --- /dev/null > >> +++ b/configs/arcturus_ucls1012a_defconfig > >> @@ -0,0 +1,23 @@ > >> +BR2_aarch64=y > >> +BR2_TOOLCHAIN_EXTERNAL=y > > Still need to change this to the internal toolchain, as per our > > previous discussion. > Still requesting to keep external toolchain in this patch as > "tested"&"trusted" on our module, plus suggested by NXP. > Or please explain the reason why you try to avoid some options, like > BR2_TOOLCHAIN_EXTERNAL, if it allowed choice, and even after my > explanations that we did have an issue with internal one. I believe you > should know the difference between QEMU and real CPU. The reasons are pretty simple: - Consistency between all defconfigs. None of them are using external toolchains, except csky_gx6605s_defconfig, because there is no support for building a CSKY toolchain in Buildroot yet. - The Buildroot toolchain should work. If it doesn't, we want to know and fix the problem. And yes, I know the difference between a real CPU and QEMU, but Buildroot toolchains should also work on real CPUs, not only in Qemu :-) Thanks, Thomas
On 06/09/2017 11:52 AM, Thomas Petazzoni wrote: > >>> OK, you moved the firmware inside the kernel sources. Not really nice, >>> because it means those files in the target filesystem are not >>> associated with any license. >> The firmware is associated with Freescale-Binary-EULA licence and that >> license is included. >> I agree it's not really nice to move it inside kernel, but you asked to >> remove it from rootfs-overlay and I could not found any better place for >> now. Any suggestions welcome. > Best option: > > Contribute the firmware to the linux-firmware project. > > Not as good, but still acceptable option: > > Separate Git repository with this firmware and its license file + a > Buildroot package that downloads and installs this firmware. > >>> Why aren't those firmware files contributed to the linux-firmware >>> project instead? >> This firmware is came from Linux® SDK for QorIQ® Processors. SDKLINUX >> publicly available on NXP website. >> I really don't know when they going to publish it to any other places, >> but my personal preferences to use buildroot instead Yocto as build >> system on all our modules. >> BTW the NXP's SDK is using Linaro toolchain, even older version. > Can you point me to the Yocto recipe that installs this firmware ? Is > their firmware bundled in their Yocto layer, or are they downloading it > from some location ? https://github.com/Freescale/meta-freescale/blob/master/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb Git repository of the package: git://git.freescale.com/ppc/sdk/engine-pfe-bin.git If you think that it is OK, I can add this (ls1012a only related) firmware as a Buildroot package. Please confirm. > >> Or please explain the reason why you try to avoid some options, like >> BR2_TOOLCHAIN_EXTERNA > The reasons are pretty simple: > > - Consistency between all defconfigs. None of them are using external > toolchains, except csky_gx6605s_defconfig, because there is no > support for building a CSKY toolchain in Buildroot yet. > > - The Buildroot toolchain should work. If it doesn't, we want to know > and fix the problem. OK, as we are not building any special projects, only BusyBox and I tested that it runs, I will change toolchain option to internal. Will prepare new revision of patches after your confirmation/suggestion where to put ls1012a ppfe-firmware.
diff --git a/board/arcturus/aarch64-ucls1012a/post-build.sh b/board/arcturus/aarch64-ucls1012a/post-build.sh new file mode 100755 index 000000000..e1bfd046c --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +# Network Driver Firmware +mkdir -p ${TARGET_DIR}/lib/firmware +cp -f ${BUILD_DIR}/linux-custom/firmware/ppfe/* ${TARGET_DIR}/lib/firmware/ diff --git a/board/arcturus/aarch64-ucls1012a/post-image.sh b/board/arcturus/aarch64-ucls1012a/post-image.sh new file mode 100755 index 000000000..d506724a3 --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/post-image.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +echo ---------Making ITB partition image--------- + +cp -f board/arcturus/aarch64-ucls1012a/ucls1012a.its ${BINARIES_DIR}/ +MKIMAGE=${HOST_DIR}/usr/bin/mkimage +MKIMAGE_IN=${BINARIES_DIR}/ucls1012a.its +MKIMAGE_OUT=${BINARIES_DIR}/part0-000000.itb +${MKIMAGE} -f $MKIMAGE_IN $MKIMAGE_OUT diff --git a/board/arcturus/aarch64-ucls1012a/readme.txt b/board/arcturus/aarch64-ucls1012a/readme.txt new file mode 100644 index 000000000..5cf420e9d --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/readme.txt @@ -0,0 +1,74 @@ +Arcturus uCLS1012A SoM +====================== + +This tutorial describes how to use the predefined Buildroot +configuration for the Arcturus uCLS101A SoM platform. + +Additional information about the uCLS1012A System on Module can be found at +https://www.arcturusnetworks.com/products/ucls1012a +and product support for registered users at +https://www.arcturusnetworks.com/support + +Building +-------- + +Return to the top directory <buildrootdir> and execute the following commands. + + make arcturus_ucls1012a_defconfig + make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- arc-ucls1012a.dtb + +-- Image + +-- part0-000000.itb + +-- rootfs.cpio + +-- rootfs.cpio.gx + +-- rootfs.tar + +-- u-boot.bin + +-- ucls1012a.its + +Flashing +-------- + +You'll need to program the image created by buildroot into the SPI NOR flash. + +1. Reboot your module and via the serial console press <escape> to enter the B$ +u-boot shell. + From the shell you will need to update four environment variables replacing the + IPv4 IP Address with ones that will work with your network and tftp server. + + B$ setenv ipaddr 192.168.1.81 + B$ setenv serverip 192.168.1.80 + B$ setenv gatewayip 192.168.1.1 + B$ setenv netmask 255.255.255.0 + B$ saveenv + +2. Enable tftp server to serve the <buildrootdir>/output/images/ folder. + +3. Program the new U-Boot binary (optional) + If you don't feel confident upgrading your bootloader then don't do it, + it's unnecessary most of the time. + + B$ tftp u-boot.bin + B$ run program_uboot + +4. Program the ITB image (includes Kernel, DTB and Ramdisk) + + B$ tftp part0-000000.itb + B$ run program0 + +5. Booting your new system + + Reboot your system by reset command + B$ reset + + or + + B$ run bootcmd + +Good Luck ! diff --git a/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload b/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload new file mode 100755 index 000000000..07d1d855a --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload @@ -0,0 +1,14 @@ +#!/bin/sh +# +case "$1" in + start) + modprobe pfe + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/board/arcturus/aarch64-ucls1012a/ucls1012a.its b/board/arcturus/aarch64-ucls1012a/ucls1012a.its new file mode 100644 index 000000000..2bac65884 --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/ucls1012a.its @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2017, Arcturus Networks Inc. + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +/dts-v1/; + +/ { + description = "Image file for the Arcturus uCLS1012A Linux Kernel"; + #address-cells = <1>; + + images { + kernel { + description = "Linux kernel"; + data = /incbin/("Image"); + type = "kernel"; + arch = "arm64"; + os = "linux"; + compression = "none"; + load = <0x80080000>; + entry = <0x80080000>; + }; + fdt { + description = "Flattened Device Tree Blob"; + data = /incbin/("arc-ucls1012a.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + load = <0x90000000>; + }; + ramdisk { + description = "Ramdisk"; + data = /incbin/("rootfs.cpio.gz"); + type = "ramdisk"; + arch = "arm64"; + os = "linux"; + compression = "gzip"; + }; + }; + + configurations { + default = "config"; + config { + kernel = "kernel"; + fdt = "fdt"; + ramdisk = "ramdisk"; + }; + }; +}; diff --git a/configs/arcturus_ucls1012a_defconfig b/configs/arcturus_ucls1012a_defconfig new file mode 100644 index 000000000..64557fde7 --- /dev/null +++ b/configs/arcturus_ucls1012a_defconfig @@ -0,0 +1,23 @@ +BR2_aarch64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TARGET_GENERIC_HOSTNAME="ucls1012a" +BR2_TARGET_GENERIC_ISSUE="Welcome to uCLS1012A-SOM" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/arcturus/aarch64-ucls1012a/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/arcturus/aarch64-ucls1012a/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arcturus/aarch64-ucls1012a/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://www.arcturusnetworks.com/OSS/kernel-ucls1012a.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ucls1012a" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arcturus/arc-ucls1012a" +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://www.arcturusnetworks.com/OSS/u-boot-ucls1012a.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="UCLS1012A_QSPI" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y