wiki:newport/bsp

Version 6 (modified by Ryan Erbstoesser, 5 months ago) (diff)

clarify BSP and what it contains

Newport Board Support Package (BSP)

Gateworks provides a Board Support Package for Newport which provides source code and an easy mechanism to build different images, including Ubuntu and OpenWrt.

BSP Source Code

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 here.

The following GitHub repos are used for Newport:

Pre-built Firmware Images

Pre-built firmware images can be found on http://dev.gateworks.com/newport:

Building BSP from source

Below are instructions for building all of the bootloader components and Linux kernel and Ubuntu or OpenWrt. Pre-built images are available above.

The Gateworks Newport Board Support Package uses the Google repo tool to manage multiple code repositories.

The following pre-requisites are needed to build the Newport BSP:

  • Linux Development host (desktop or laptop computer) (Ubuntu 16.04 is used by Gateworks and tested)
  • Python 2.x (required by the 'repo' tool)
  • Git (used for source code repositories)

To obtain the code:

  1. Get repo tool (download latest version of tool and put it in your path)
    mkdir $HOME/.bin/
    echo "PATH=\$PATH:$HOME/.bin/repo" >> $HOME/.profile
    curl https://storage.googleapis.com/git-repo-downloads/repo > $HOME/.bin/repo
    chmod a+x $HOME/.bin/repo
    
  2. Initialize repo (fetch the repo manifest)
    mkdir $HOME/newport
    cd $HOME/newport
    repo init -u https://github.com/Gateworks/manifest-newport.git
    
  3. Sync repositories (repeat this when you want to fetch the latest code updates)
    repo sync
    
    • This will fetch/update the source repos described above. The first time it can take several minutes depending on your Internet connection and will take approximately ~2.5GB of disk space
  4. Setup build environment (*repeat this each time you open shell*)
    source newport/setup-environment
    
  5. Build desired software target as definied below. For example:
    make -j8 openwrt-image # build openwrt-newport.img.gz
    

The build targets supported by the Newport BSP include:

  • firmware-image - builds 'firmware-newport.img': 16MB Boot Firmware which includes the BDK/ATF/U-Boot and Device-Tree images - (takes about 2 mins on a modern development system).
  • 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
  • ubuntu-image - builds ubuntu-newport.img.gz: A Compressed Disk Image which includes the 16MB Boot Firmware (BDK/ATF/U-Boot and Device-Tree images) as well as the Kernel and Ubuntu root filesystem
  • openwrt-image - builds openwrt-newport.img.gz: A Compressed Disk Image which includes the 16MB Boot Firmware (BDK/ATF/U-Boot and Device-Tree images) as well as the OpenWrt Kenrel and root filesystem

The resulting images can be installed to boot media (see newport/firmware-update)

Building or modifying the Linux Kernel

The Gateworks Newport BSP instructions above create an environment for building the Linux kernel among other targets.

Here are some additional instructions for common actions (make sure you have installed the BSP and setup your shell environment as specified above):

  • Modify Kernel configuration (enabling modules etc):
    cd linux
    make newport_defconfig # start with the Newport kernel configuration
    make menuconfig # modify as desired
    make # build Image and modules
    
  • Build kernel tarball:
    cd linux
    make # build Image and modules
    mkdir -p install/boot # create install and install/boot directories
    cp arch/arm64/boot/Image install/boot # copy kernel Image
    make INSTALL_MOD_PATH=install modules_install # install modules
    tar -cvJf /tftpboot/newport/linux-newport.tar.xz --numeric-owner -C install . # create tarball
    

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.

Building Ubuntu Operating System - rootfs

You can build a Ubuntu image from the BSP, but you cannot build the isolated rootfs.

The rootfs is not part of the Gateworks BSP described above.

Information for building Ubuntu rootfs can be found here: newport/ubuntu