| 107 | | |
| 108 | | [=#bsp] |
| 109 | | = Newport Board Support Package (BSP) = |
| 110 | | Gateworks provides a Board Support Package for Newport which provides source code and an easy mechanism to build: |
| 111 | | * Gateworks Newport Linux Kernel |
| 112 | | * [wiki:newport/boot Gateworks Newport Boot Firmware] |
| 113 | | |
| 114 | | [=#source] |
| 115 | | == BSP Source Code == |
| 116 | | 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]. |
| 117 | | |
| 118 | | The following !GitHub repos are used for Newport: |
| 119 | | * [https://github.com/Gateworks/bsp-newport] - Newport BSP support scripts and Makefile ([https://github.com/Gateworks/bsp-newport/subscription watch]) |
| 120 | | * [https://github.com/Gateworks/manifest-newport] - Newport BSP repo Manifest ([https://github.com/Gateworks/manifest-newport/subscription watch]) |
| 121 | | * [https://github.com/Gateworks/images-newport images-newport] - Newport pre-built firmware Firmware Images ([https://github.com/Gateworks/images-newport/subscription watch]) |
| 122 | | * [https://github.com/Gateworks/uboot-newport uboot-newport] - Newport Bootloader ([https://github.com/Gateworks/uboot-newport/subscription watch)] |
| 123 | | * [https://github.com/Gateworks/linux-newport linux-newport] - Newport Linux Kernel ([https://github.com/Gateworks/linux-newport/subscription watch)] |
| 124 | | * [https://github.com/Gateworks/dts-newport dts-newport] - Newport Linux Device-Tree ([https://github.com/Gateworks/dts-newport/subscription watch)] |
| 125 | | * [https://github.com/Gateworks/bdk-newport bdk-newport] - Newport BDK (used as Secondary Program Loader) ([https://github.com/Gateworks/bdk-newport/subscription watch)] |
| 126 | | * [https://github.com/Gateworks/atf-newport atf-newport] - Newport ATF (ARM Trusted Firmware) ([https://github.com/Gateworks/atf-newport/subscription watch)] |
| 127 | | * [https://github.com/Gateworks/openwrt openwrt] - Gateworks OpenWrt ([https://github.com/Gateworks/openwrt/subscription watch)] |
| 128 | | |
| 129 | | |
| 130 | | [=#images] |
| 131 | | == Pre-built Firmware Images == |
| 132 | | The [https://github.com/Gateworks/uboot-newport images-newport] !GitHub repository hosts various pre-built firmware images used for Newport: |
| 133 | | * [https://github.com/Gateworks/images-newport/raw/master/gsc_630x.txt GSC firmware image] |
| 134 | | * [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) |
| 135 | | * 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 |
| 136 | | * 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 |
| 137 | | * 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 |
| 138 | | * [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 |
| 139 | | |
| 140 | | |
| 141 | | [=#build] |
| 142 | | == Building BSP from source == |
| 143 | | |
| 144 | | Pre-built images are available above. |
| 145 | | |
| 146 | | Below are instructions for building all of the bootloader components and Linux kernel. This does not include Ubuntu or any other operating systems. |
| 147 | | |
| 148 | | The Gateworks Newport Board Support Package uses the Google {{{repo}}} tool to manage multiple code repositories. |
| 149 | | |
| 150 | | The following pre-requisites are needed to build the Newport BSP: |
| 151 | | * Linux Development host (desktop or laptop computer) (Ubuntu 16.04 is used by Gateworks and tested) |
| 152 | | * Python 2.x (required by the 'repo' tool) |
| 153 | | * Git (used for source code repositories) |
| 154 | | |
| 155 | | To obtain the code: |
| 156 | | 1. Get repo tool (download latest version of tool and put it in your path) |
| 157 | | {{{#!bash |
| 158 | | mkdir $HOME/.bin/ |
| 159 | | echo "PATH=\$PATH:$HOME/.bin/repo" >> $HOME/.profile |
| 160 | | curl https://storage.googleapis.com/git-repo-downloads/repo > $HOME/.bin/repo |
| 161 | | chmod a+x $HOME/.bin/repo |
| 162 | | }}} |
| 163 | | 1. Initialize repo (fetch the repo manifest) |
| 164 | | {{{#!bash |
| 165 | | mkdir $HOME/newport |
| 166 | | cd $HOME/newport |
| 167 | | repo init -u https://github.com/Gateworks/manifest-newport.git |
| 168 | | }}} |
| 169 | | 1. Sync repositories (repeat this when you want to fetch the latest code updates) |
| 170 | | {{{#!bash |
| 171 | | repo sync |
| 172 | | }}} |
| 173 | | * 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 |
| 174 | | 1. Setup build environment (repeat this each time you open shell) |
| 175 | | {{{#!bash |
| 176 | | source newport/setup-environment |
| 177 | | }}} |
| 178 | | 1. Build desired targets and images for example: |
| 179 | | {{{#!bash |
| 180 | | make -j8 openwrt-image # build openwrt-newport.img.gz |
| 181 | | }}} |
| 182 | | |
| 183 | | The build targets supported by the Newport BSP include: |
| 184 | | * **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). |
| 185 | | * **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 |
| 186 | | * **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 |
| 187 | | * **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 |
| 188 | | |
| 189 | | The resulting images can be installed to boot media (see [#firmware-update below]) |
| 190 | | |
| 191 | | |
| 192 | | [=#kernel] |
| 193 | | === Building or modifying the Linux Kernel === |
| 194 | | The Gateworks Newport BSP instructions [#bsp above] create an environment for building the Linux kernel among other targets. |
| 195 | | |
| 196 | | Here are some additional instructions for common actions (make sure you have installed the BSP and setup your shell environment as specified above): |
| 197 | | * Modify Kernel configuration (enabling modules etc): |
| 198 | | {{{#!bash |
| 199 | | cd linux |
| 200 | | make newport_defconfig # start with the Newport kernel configuration |
| 201 | | make menuconfig # modify as desired |
| 202 | | make # build Image and modules |
| 203 | | }}} |
| 204 | | * Build kernel tarball: |
| 205 | | {{{#!bash |
| 206 | | cd linux |
| 207 | | make # build Image and modules |
| 208 | | mkdir -p install/boot # create install and install/boot directories |
| 209 | | cp arch/arm64/boot/Image install/boot # copy kernel Image |
| 210 | | make INSTALL_MOD_PATH=install modules_install # install modules |
| 211 | | tar -cvJf /tftpboot/newport/linux-newport.tar.xz --numeric-owner -C install . # create tarball |
| 212 | | }}} |
| 213 | | |
| 214 | | 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. |
| 215 | | |
| 216 | | |
| 217 | | === Building Ubuntu Operating System - rootfs === |
| 218 | | This is not part of the Gateworks BSP described above. |
| 219 | | |
| 220 | | Information for building Ubuntu rootfs can be found here: [wiki:newport/ubuntu] |