| 1 | [[PageOutline]] |
| 2 | |
| 3 | = Newport Board Support Package (BSP) = |
| 4 | Gateworks provides a Board Support Package for Newport which provides source code and an easy mechanism to build: |
| 5 | * [wiki:#kernel Gateworks Newport Linux Kernel] |
| 6 | * [wiki:newport/boot Gateworks Newport Boot Firmware] |
| 7 | * [wiki:#openwrt Gateworks Newport OpenWrt] |
| 8 | |
| 9 | [=#source] |
| 10 | == BSP Source Code == |
| 11 | Newport Source code for the firmware, bootloader and kernel are hosted at !GitHub. We highly recommend you create a !GitHub account and 'Watch' these repositories to keep abreast of important feature additions, bugfixes, and firmware-releases. You can configure your !GitHub account to e-mail you when changes are made to repositories [https://github.com/settings/notifications here]. |
| 12 | |
| 13 | The following !GitHub repos are used for Newport: |
| 14 | * [https://github.com/Gateworks/bsp-newport] - Newport BSP support scripts and Makefile ([https://github.com/Gateworks/bsp-newport/subscription watch]) |
| 15 | * [https://github.com/Gateworks/manifest-newport] - Newport BSP repo Manifest ([https://github.com/Gateworks/manifest-newport/subscription watch]) |
| 16 | * [https://github.com/Gateworks/images-newport images-newport] - Newport pre-built firmware Firmware Images ([https://github.com/Gateworks/images-newport/subscription watch]) |
| 17 | * [https://github.com/Gateworks/uboot-newport uboot-newport] - Newport Bootloader ([https://github.com/Gateworks/uboot-newport/subscription watch)] |
| 18 | * [https://github.com/Gateworks/linux-newport linux-newport] - Newport Linux Kernel ([https://github.com/Gateworks/linux-newport/subscription watch)] |
| 19 | * [https://github.com/Gateworks/dts-newport dts-newport] - Newport Linux Device-Tree ([https://github.com/Gateworks/dts-newport/subscription watch)] |
| 20 | * [https://github.com/Gateworks/bdk-newport bdk-newport] - Newport BDK (used as Secondary Program Loader) ([https://github.com/Gateworks/bdk-newport/subscription watch)] |
| 21 | * [https://github.com/Gateworks/atf-newport atf-newport] - Newport ATF (ARM Trusted Firmware) ([https://github.com/Gateworks/atf-newport/subscription watch)] |
| 22 | * [https://github.com/Gateworks/openwrt openwrt] - Gateworks OpenWrt ([https://github.com/Gateworks/openwrt/subscription watch)] |
| 23 | |
| 24 | |
| 25 | [=#images] |
| 26 | == Pre-built Firmware Images == |
| 27 | The [https://github.com/Gateworks/uboot-newport images-newport] !GitHub repository hosts various pre-built firmware images used for Newport: |
| 28 | * [https://github.com/Gateworks/images-newport/raw/master/gsc_630x.txt GSC firmware image] |
| 29 | * [https://github.com/Gateworks/images-newport/raw/master/firmware-newport.img boot firmware image] (everything up to and including the bootloader stored on the embedded FLASH boot device) (see [wiki:newport/boot newport/boot] for details) |
| 30 | * Download linux-newport.tar.xz from [https://github.com/Gateworks/linux-newport/releases/latest latest Newport kernel release] - Compressed TAR archive of pre-built Linux kernel |
| 31 | * Download xenial-newport.img.gz from [https://github.com/Gateworks/images-newport/releases/latest latest Newport Ubuntu release] - Compressed Disk Image containing Firmware and Ubuntu 16.04 Xenial |
| 32 | * Download openwrt-newport.img.gz from [http://dev.gateworks.com/newport/openwrt/openwrt-newport.img.gz latest Newport OpenWrt build] - Compressed Disk Image containing Firmware and OpenWrt |
| 33 | * [http://dev.gateworks.com/newport/ubuntu/xenial/latest/xenial-newport.tar.xz xenial-newport.tar.xz] - Compressed TAR archive of Ubuntu 16.04 Xenial arm64 root filesystem |
| 34 | |
| 35 | |
| 36 | [=#build] |
| 37 | == Building BSP from source == |
| 38 | Below are instructions for building all of the bootloader components and Linux kernel. This does not include Ubuntu or any other operating systems. Pre-built images are available [#images above]. |
| 39 | |
| 40 | The Gateworks Newport Board Support Package uses the Google {{{repo}}} tool to manage multiple code repositories. |
| 41 | |
| 42 | The following pre-requisites are needed to build the Newport BSP: |
| 43 | * Linux Development host (desktop or laptop computer) (Ubuntu 16.04 is used by Gateworks and tested) |
| 44 | * Python 2.x (required by the 'repo' tool) |
| 45 | * Git (used for source code repositories) |
| 46 | |
| 47 | To obtain the code: |
| 48 | 1. Get repo tool (download latest version of tool and put it in your path) |
| 49 | {{{#!bash |
| 50 | mkdir $HOME/.bin/ |
| 51 | echo "PATH=\$PATH:$HOME/.bin/repo" >> $HOME/.profile |
| 52 | curl https://storage.googleapis.com/git-repo-downloads/repo > $HOME/.bin/repo |
| 53 | chmod a+x $HOME/.bin/repo |
| 54 | }}} |
| 55 | 1. Initialize repo (fetch the repo manifest) |
| 56 | {{{#!bash |
| 57 | mkdir $HOME/newport |
| 58 | cd $HOME/newport |
| 59 | repo init -u https://github.com/Gateworks/manifest-newport.git |
| 60 | }}} |
| 61 | 1. Sync repositories (repeat this when you want to fetch the latest code updates) |
| 62 | {{{#!bash |
| 63 | repo sync |
| 64 | }}} |
| 65 | * This will fetch/update the source repos described [#source above]. The first time it can take several minutes depending on your Internet connection and will take approximately ~2.5GB of disk space |
| 66 | 1. Setup build environment (***repeat this each time you open shell***) |
| 67 | {{{#!bash |
| 68 | source newport/setup-environment |
| 69 | }}} |
| 70 | 1. Build desired targets and images. For example: |
| 71 | {{{#!bash |
| 72 | make -j8 openwrt-image # build openwrt-newport.img.gz |
| 73 | }}} |
| 74 | |
| 75 | The build targets supported by the Newport BSP include: |
| 76 | * **firmware-image** - builds 'firmware-newport.img': 16MB [wiki:newport/boot Boot Firmware] which includes the BDK/ATF/U-Boot and Device-Tree images - (takes about 2 mins on a modern development system). |
| 77 | * **kernel_image** - builds linux-newport.tar.xz - A compressed tarball of the kernel (boot/Image) and kernel modules (lib/modules/*) which can be used on top of any compatible root filesystem |
| 78 | * **ubuntu-image** - builds ubuntu-newport.img.gz: A Compressed Disk Image which includes the 16MB [wiki:newport/boot Boot Firmware] (BDK/ATF/U-Boot and Device-Tree images) as well as the Kenrel and Ubuntu root filesystem |
| 79 | * **openwrt-image** - builds openwrt-newport.img.gz: A Compressed Disk Image which includes the 16MB [wiki:newport/boot Boot Firmware] (BDK/ATF/U-Boot and Device-Tree images) as well as the OpenWrt Kenrel and root filesystem |
| 80 | |
| 81 | The resulting images can be installed to boot media (see [wiki:newport#firmware-update newport/firmware-update]) |
| 82 | |
| 83 | |
| 84 | [=#kernel] |
| 85 | == Building or modifying the Linux Kernel == |
| 86 | The Gateworks Newport BSP instructions [#bsp above] create an environment for building the Linux kernel among other targets. |
| 87 | |
| 88 | Here are some additional instructions for common actions (make sure you have installed the BSP and setup your shell environment as specified above): |
| 89 | * Modify Kernel configuration (enabling modules etc): |
| 90 | {{{#!bash |
| 91 | cd linux |
| 92 | make newport_defconfig # start with the Newport kernel configuration |
| 93 | make menuconfig # modify as desired |
| 94 | make # build Image and modules |
| 95 | }}} |
| 96 | * Build kernel tarball: |
| 97 | {{{#!bash |
| 98 | cd linux |
| 99 | make # build Image and modules |
| 100 | mkdir -p install/boot # create install and install/boot directories |
| 101 | cp arch/arm64/boot/Image install/boot # copy kernel Image |
| 102 | make INSTALL_MOD_PATH=install modules_install # install modules |
| 103 | tar -cvJf /tftpboot/newport/linux-newport.tar.xz --numeric-owner -C install . # create tarball |
| 104 | }}} |
| 105 | |
| 106 | While the resulting kernel modules must be placed on the root filesystem the kernel image must be placed in a partition readable by the U-Boot Bootloader. Therefore placing the kernel within the root filesystem as above does not work if you use a filesystem that U-Boot does not natively support (like F2FS or BTRFS for example). U-Boot only supports FAT and EXT (and UBI for NAND devices) natively. |
| 107 | |
| 108 | |
| 109 | == Building Ubuntu Operating System - rootfs == |
| 110 | This is not part of the Gateworks BSP described above. |
| 111 | |
| 112 | Information for building Ubuntu rootfs can be found here: [wiki:newport/ubuntu] |
| 113 | |