From patchwork Wed Jun 7 18:50:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Oleksandr G Zhadan X-Patchwork-Id: 772659 X-Patchwork-Delegate: thomas.petazzoni@free-electrons.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wjd214KM2z9s8N for ; Thu, 8 Jun 2017 04:51:36 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id A32F6888C1; Wed, 7 Jun 2017 18:51:33 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XHiqVQ+rZf2M; Wed, 7 Jun 2017 18:51:26 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 9C9F1888CA; Wed, 7 Jun 2017 18:51:25 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 74C7C1C0496 for ; Wed, 7 Jun 2017 18:51:24 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 67DB9868A1 for ; Wed, 7 Jun 2017 18:51:24 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4zkjuU9zftzJ for ; Wed, 7 Jun 2017 18:51:17 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from ivymike.arcturusnetworks.com (gw.arcturusgroup.net [66.11.68.6]) by fraxinus.osuosl.org (Postfix) with ESMTP id 79B3D8683F for ; Wed, 7 Jun 2017 18:51:09 +0000 (UTC) Received: by ivymike.arcturusnetworks.com (Postfix, from userid 525) id 9B58B440E78; Wed, 7 Jun 2017 14:51:07 -0400 (EDT) From: Oleksandr Zhadan To: buildroot@buildroot.org Date: Wed, 7 Jun 2017 14:50:10 -0400 Message-Id: <20170607185010.4652-1-oleks@arcturusnetworks.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Cc: Michael Durrant Subject: [Buildroot] [PATCH V2 1/1] Arcturus uCLS1012A-SOM support X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" The uCLS1012A-SOM product family (ucls1012a) is an Arcturus Networks Inc. 64bit ARM Cortex-A53 class System on Module powered by a NXP QorIQ LS1012A Low Power Communication Processor. This 314 pin MXM3.0/SMARC module card contains DDR3, QSPI NOR Flash, eMMC NAND Flash, optional Audio CODEC and is available with 1 or 2 Gig-Ethernet PHYs. Signed-off-by: Oleksandr Zhadan Signed-off-by: Michael Durrant --- V2: - updated readme.txt - fixed post-image.sh (Do not have to remove Image and *.dtb files) --- board/arcturus/aarch64-ucls1012a/post-image.sh | 17 +++++ board/arcturus/aarch64-ucls1012a/readme.txt | 79 ++++++++++++++++++++ .../aarch64-ucls1012a/rootfs/etc/init.d/S09modload | 14 ++++ .../rootfs/lib/firmware/Freescale-Binary-EULA | 80 +++++++++++++++++++++ .../rootfs/lib/firmware/ppfe_class_ls1012a.elf | Bin 0 -> 53016 bytes .../rootfs/lib/firmware/ppfe_tmu_ls1012a.elf | Bin 0 -> 11492 bytes board/arcturus/aarch64-ucls1012a/ucls1012a.its | 52 ++++++++++++++ configs/arcturus_ucls1012a_defconfig | 22 ++++++ 8 files changed, 264 insertions(+) create mode 100755 board/arcturus/aarch64-ucls1012a/post-image.sh create mode 100644 board/arcturus/aarch64-ucls1012a/readme.txt create mode 100755 board/arcturus/aarch64-ucls1012a/rootfs/etc/init.d/S09modload create mode 100644 board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/Freescale-Binary-EULA create mode 100755 board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/ppfe_class_ls1012a.elf create mode 100755 board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/ppfe_tmu_ls1012a.elf create mode 100644 board/arcturus/aarch64-ucls1012a/ucls1012a.its create mode 100644 configs/arcturus_ucls1012a_defconfig diff --git a/board/arcturus/aarch64-ucls1012a/post-image.sh b/board/arcturus/aarch64-ucls1012a/post-image.sh new file mode 100755 index 000000000..bc2d52505 --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/post-image.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +echo ---------Making ITB partition image--------- + +MKIMAGE=${HOST_DIR}/usr/bin/mkimage +MKIMAGE_IN=board/arcturus/aarch64-ucls1012a/ucls1012a.its +MKIMAGE_OUT=output/images/part0-000000.itb + +${MKIMAGE} -f $MKIMAGE_IN $MKIMAGE_OUT + +# Remove intermediate files +rm -f output/images/rootfs.cpio +rm -f output/images/rootfs.cpio.gz + +echo Done + +exit 0 diff --git a/board/arcturus/aarch64-ucls1012a/readme.txt b/board/arcturus/aarch64-ucls1012a/readme.txt new file mode 100644 index 000000000..cf9d592ef --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/readme.txt @@ -0,0 +1,79 @@ +Arcturus uCLS1012A SoM +====================== + +This file was located /board/arcturus/aarch64-ucls1012a/readme.txt + +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 and execute the following commands. + + make arcturus_ucls1012a_defconfig + make + +nb: Any errors thrown by build root may be associated with missing host compilers +and build tools required by buildroot such as bison, awk, cmake, g++. + + +Result of the build +------------------- + +After compilation and linking is complete, your image should be located +/output/images/ + + cd output/images/ + ls + + Image + arc-ucls1012a.dtb + part0-000000.itb + rootfs.tar + u-boot.bin + +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 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 /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/etc/init.d/S09modload b/board/arcturus/aarch64-ucls1012a/rootfs/etc/init.d/S09modload new file mode 100755 index 000000000..07d1d855a --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/rootfs/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/rootfs/lib/firmware/Freescale-Binary-EULA b/board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/Freescale-Binary-EULA new file mode 100644 index 000000000..8145c144a --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/Freescale-Binary-EULA @@ -0,0 +1,80 @@ +Copyright © 2016, Freescale Semiconductor, Inc. All rights reserved. + +Software License Agreement (“Agreement”) + +ANY USE, REPRODUCTION, OR DISTRIBUTION OF THE ACCOMPANYING BINARY SOFTWARE +CONSTITUTES LICENSEE'S ACCEPTANCE OF THE TERMS AND CONDITIONS OF THIS +AGREEMENT. + +Licensed Software. “Binary Software” means software in binary form specified +in ANNEX A Subject to the terms and conditions of this Agreement, Freescale +Semiconductor, Inc., a 100% affiliated company of NXP Semiconductors N.V. +which will be renamed in due course ("NXP"), grants to Licensee a worldwide, +non-exclusive, and royalty-free license to use, reproduce, and distribute the +Binary Software in its complete and unmodified binary form as provided by NXP. + +Restrictions. Licensee must reproduce the NXP copyright notice above with each +binary copy of the Binary Software. Licensee must not reverse engineer, +decompile, disassemble or modify in any way the Binary Software. Licensee must +not use the Binary Software in violation of any applicable law or regulation. +This Agreement shall automatically terminate upon Licensee's breach of any +term or condition of this Agreement in which case, Licensee shall destroy all +copies of the Binary Software. + +Warranty Disclaimer. TO THE MAXIMUM EXTENT PERMITTED BY LAW, NXP EXPRESSLY +DISCLAIMS ANY WARRANTY FOR THE BINARY SOFTWARE. THE BINARY SOFTWARE IS +PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, +INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. LICENSEE ASSUMES +THE ENTIRE RISK ARISING OUT OF THE USE OR PERFORMANCE OF THE BINARY SOFTWARE, +OR ANY SYSTEMS LICENSEE DESIGNS USING THE BINARY SOFTWARE (IF ANY). WITHOUT +LIMITING THE GENERALITY OF THE FOREGOING, NXP DOES NOT WARRANT THAT THE BINARY +SOFTWARE IS ERROR-FREE OR WILL OPERATE WITHOUT INTERRUPTION, AND NXP GRANTS +NO WARRANTY REGARDING ITS USE OR THE RESULTS THEREFROM, INCLUDING ITS +CORRECTNESS, ACCURACY, OR RELIABILITY. + +Limitation of Liability. IN NO EVENT WILL NXP, OR ANY OF NXP'S LICENSORS HAVE +ANY LIABILITY HEREUNDER FOR ANY INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES, +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER FOR BREACH OF CONTRACT, +TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, ARISING OUT OF THIS AGREEMENT, + INCLUDING DAMAGES FOR LOSS OF PROFITS, OR THE COST OF PROCUREMENT OF + SUBSTITUTE GOODS, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. NXP’S TOTAL LIABILITY FOR ALL COSTS, DAMAGES, CLAIMS, OR LOSSES + WHATSOEVER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT OR THE BINARY + SOFTWARE SUPPLIED UNDER THIS AGREEMENT IS LIMITED TO THE AGGREGATE AMOUNT PAID + BY LICENSEE TO NXP IN CONNECTION WITH THE BINARY SOFTWARE TO WHICH LOSSES OR + DAMAGES ARE CLAIMED. + +Trade Compliance. Licensee shall comply with all applicable export and import + control laws and regulations including but not limited to the US Export + Administration Regulation (including prohibited party lists issued by other + federal governments), Catch-all regulations and all national and international + embargoes. Licensee will not knowingly transfer, divert, export or re-export, + directly or indirectly, any product, software, including software source code, + or technology restricted by such regulations or by other applicable national + regulations, received from the other party under this Agreement, or any direct + product of such software or technical data to any person, firm, entity, country + or destination to which such transfer, diversion, export or re-export is + restricted or prohibited, without obtaining prior written authorization from + the applicable competent government authorities to the extent required by + those laws. + +Restrictions, Warranty Disclaimer, Limitation of Liability, Trade Compliance, + and Governing Law shall survive termination or expiration of this Agreement. + +Governing Law. This Agreement will be governed by, construed, and enforced in + accordance with the laws of the State of Texas, USA, without regard to + conflicts of laws principles, will apply to all matters relating to this + Agreement or the binary software, and Licensee agrees that any litigation will + be subject to the exclusive jurisdiction of the state or federal courts Texas, + USA. The United Nations Convention on Contracts for the International Sale of + Goods will not apply to this Agreement. + + +  +ANNEX A +BINARY SOFTWARE +Only software in binary form may be provided under this Agreement +Here is a list of software covered by this Agreement: +ppfe_class_ls1012a.elf +ppfe_tmu_ls1012a.elf diff --git a/board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/ppfe_class_ls1012a.elf b/board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/ppfe_class_ls1012a.elf new file mode 100755 index 0000000000000000000000000000000000000000..887fc879075d6bebc092fcf703621362b74d3992 GIT binary patch literal 53016 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 OwB``o8@S`Dm-}BDn0Sf+ literal 0 HcmV?d00001 diff --git a/board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/ppfe_tmu_ls1012a.elf b/board/arcturus/aarch64-ucls1012a/rootfs/lib/firmware/ppfe_tmu_ls1012a.elf new file mode 100755 index 0000000000000000000000000000000000000000..3e26ab81bf78fab0c3ece43ab0021ab23f1db81b GIT binary patch literal 11492 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 + + images { + kernel { + description = "Linux kernel"; + data = /incbin/("../../../output/images/Image"); + type = "kernel"; + arch = "arm64"; + os = "linux"; + compression = "none"; + load = <0x80080000>; + entry = <0x80080000>; + }; + fdt { + description = "Flattened Device Tree Blob"; + data = /incbin/("../../../output/images/arc-ucls1012a.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + load = <0x90000000>; + }; + ramdisk { + description = "Ramdisk"; + data = /incbin/("../../../output/images/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..b8b1c1fa8 --- /dev/null +++ b/configs/arcturus_ucls1012a_defconfig @@ -0,0 +1,22 @@ +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" +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