wiki:newport

Version 72 (modified by Cale Collins, 6 years ago) ( diff )

Restructured page, moved information from /Newport pertaining to newport/firmware

Gateworks Newport Family Support


Getting Started

Newport Software

Peripherals

User Manuals

Wireless / WiFi Radios

Cellular Modems

GPS

3D Model

The Gateworks Newport product family utilizes the Cavium ARM ThunderX CN80xx / CN81xx SoC (System On Chip) offering a large variety of peripherals with a focus on Networking, and Security. See ​here for a product comparison matrix.

Links

Please note: This is a subset of information for Newport, however, please visit our Main Wiki for all other information

Software

Peripheral Support

Performance / Processor / Memory / Power / Thermal

Other Info

All Gateworks newport pages

User Manual

Processor Reference Manual / Datasheet / Errata

The ​Cavium Website contains details about the OCTEON TX Dual and Quad core 64bit ARM based SoC's.

Additional references:

Firmware, BSP (OS), GSC Update Procedures

See this page for all firmware related information

Jump to img.gz installation procedure using bootloader, serial, and tftp

Newport Ethernet

Newport supports 1GbE. If 10GbE support is needed, please email sales@gateworks.com

Newport Ethernet device mapping:

Board Connector Silkscreen U-Boot Linux PoE Phy
GW640x J21 Eth#0 vnic4 eth4 / enp5s0f5 802.3af/at RGMII DP83867IS
J22 Eth#1 vnic0 eth0 / enp5s0f1 Passive 8-60V QSGMII VSC8574 Port0
J22 Eth#2 vnic1 eth1 / enp5s0f2 None QSGMII VSC8574 Port1
J22 Eth#3 vnic2 eth2 / enp5s0f3 None QSGMII VSC8574 Port2
J22 Eth#4 vnic3 eth3 / enp5s0f4 None QSGMII VSC8574 Port3
GW630x J21 Eth#1 vnic1 eth1 / enp5s0f2 802.3af/at RGMII DP83867IS
J20 Eth#2 vnic0 eth0 / enp5s0f1 Passive 8-60V SGMII DP83867IS

Creating a microSD recovery image

If your primary boot won't boot for some reason (ie, you corrupted it during development) you can boot from a microSD (see here).

To create a bootable microSD meant for recovery purposes only needing the Bootloader you can use firmware-newport.img:

  • On a Linux host:
    DEVICE=/dev/sdc # set to the microSD on your host
    sudo dd if=firmware-newport.img of=$DEVICE
    
    • Be careful to set the DEVICE above to the device the microSD appears as on your Linux host - you do not want to overwrite part of your hosts filesystem
  • On a Newport board booted from eMMC from U-Boot:
    mmc list # if booted from eMMC you should see microSD as dev 1
    mmc dev 1 # select microSD
    tftpboot ${loadaddr} firmware-newport.img && mmc write ${loadaddr} 0 8000
    

Boot Device

Some boards have multiple boot device and may allow selection of which one is the 'primary boot device':

board Primary Boot Device Alternate Boot Device
GW630x on board eMMC microSD

To boot from the alternate boot device manually you can press-and-release the user pushbutton 5 times in a row and the board will power cycle primary power (the 3.3V LED will go off, then on again) and the board will boot from the alternate boot device.

Boards with an Alternate boot device also have a boot watchdog such that if the current boot device fails to boot within 30 seconds, the board will power cycle primary power and attempt boot from the other boot device.

The bootloader also has a notion of boot device, either the built in eMMC or an external microSD. This is controlled through the UBoot variable 'dev'. The dev variable is purely for the bootloader, and does not signify what device to boot the kernel/rootfs from.

Note if booting with the onboard eMMC as the primary boot device, “0/mmcblk0” is the U-Boot/Linux device node for eMMC and “1/mmcblk1” is the U-Boot/Linux device node for microSD. When booting from the alternate device (microSD) this is swapped.

Please also reference:

Booting to a kernel/rootfs on the microSD

This assumes the bootloader will remain on the eMMC, but then we switch to the microSD for the kernel/rootfs.

Run the following commands in the uboot bootloader command prompt on the Newport SBC bootloader serial console:

#This sets the bootargs, make special note of the root = and adjust partition as necessary
setenv bootargs 'cma=64M coherent_pool=16M net.ifnames=0 root=/dev/mmcblk1p1 rw rootwait console=ttyAMA0,115200n8 earlycon=pl011,0x87e028000000'

#This loads the kernel file (Image) from folder boot (on microSD) into memory
ext4load mmc 1:1 ${kernel_addr_r} boot/Image

#This boots the board
booti ${kernel_addr_r} - ${fdtcontroladdr}

Troubleshooting:

  • Use the ext4ls to confirm you can read the microSD and see the kernel in the boot folder
    GW6304-B> ext4ls mmc 1:1 boot
    <DIR>       4096 .
    <DIR>       4096 ..
            12066824 Image
    

Board Support Packages (BSP) Software

Choosing a BSP

Gateworks offers several Board Support Packages for the Newport Product family. Which one we recommend depends a bit upon what your goal is and what your experience level is.

  • Ubuntu
    • Recommended for developers trying to heavily leverage opensource software packages or libraries that are not supported by the other BSP's. This is the most user-friendly for developers new to Embedded Linux but will not produce a very trimmed down filesystem image.
    • Uses mainline kernel.
    • Supports all Newport features.
    • Documentation provided to use Ubuntu pre-built packages and debootstrap to create a root filesystem in minutes
    • Native compilation: no SDK or cross-toolchain needed
  • OpenWrt - intended for wireless routers and access points (low flash and memory footprint)
    • Recommended for networking users wanting to create a headless router, VPN, basestation, wireless access point and more. Produces by far the smallest storage and memory footprint but users new to Embedded Linux will have a bit of a learning curve
    • Fairly up-to-date and/or vanilla kernel support
    • Latest wireless drivers (via linux-backports)
    • Custom application config and init system (nice for small footprint, but can make adding support for additional packages more work)
    • Wide variety of packages (including a fairly nice web-admin)
    • Console-based build system (expect 60mins to build BSP for a specific board family)
    • Downloadable SDK and Toolchain available to build apps on a development host without building the entire BSP
    • easy firmware upgrade (sysupgrade) and factory-default reset mechanism
    • Pre-built images available

Newport BSP Software Support Comparison

The following table shows details on current device support per BSP:

Feature OpenWrt Ubuntu Notes
Version 18.0x 16.04 (xenial)
Kernel 4.14.x 4.14.x
RS232 Yes Yes
MMC Yes Yes
SPI Yes Yes 1
GPS / GPS PPS Yes Yes
RTC Yes Yes
HWMON Yes Yes
LED/GPIO Yes Yes
USB 3.0 Yes Yes
PCI Yes Yes
SATA Yes Yes
crypto Yes Yes 4
CAN Not yet Not Yet
RS485 Yes Yes 2
ventana/expansion GW16081 Not Yet Not Yet 3
ventana/expansion GW16082 Yes Yes 3
ventana/expansion GW16083 Not Yet Not Yet 3
  1. SPI does not currently support full-duplex - issue is being investigated with Cavium
  2. RS485 has not yet been fully validated but uses the same shared transceiver as RS232 which has been validated. RS485 half duplex mode would require adding support for TIOCSRS485 or managing the TXEN GPIO (gpio12) from userspace.
  3. Requires a board with a Mezzanine connector.
  4. HW Compression offload is supported (DEV_CAVIUM_ZIP drivers/crypto/cavium/zip.c) and crypto is supported (DEV_CAVIUM_CPT drivers/crypto/cavium) although there may be additional features that could be supported with additional driver work.

Ubuntu

Gateworks offers a pre-built Ubuntu distribution using the latest Gateworks kernel as well as instructions on how to build your own Ubuntu based distribution.

OpenWrt Board Support Package (BSP)

The Newport OpenWrt BSP provides the following:

  • Linux 4.x kernel (fairly vanilla)
  • latest wireless drivers (compat-wireless)
  • tuned for minimal FLASH/memory footprint (entire distro fits on embedded 16MB FLASH)
  • simple upgrades and factory-reset capability provided by overlay filesystem

Newport OpenWrt BSP:

Third Party Linux Distros

While Gateworks cannot fully support all Linux distros, it is relatively simple to overlay a Gateworks Newport kernel onto any non-Gateworks third party Linux distro rootfs image.

The following links will describe what is needed:

  1. Linux kernel supporting Newport: linux/kernel
  2. Root Filesystem: see below
  3. Bootable media: linux/blockdev

Root filesystem Sources

There are several sources of pre-built root filesystems that are compatible with Newport. As Newport uses an ARM 64bit based SoC, you need to use something that is compatible with an ARMv8 instruction set. Many pre-built distributions will reference 'arm64' which means 'ARM 64-bit' which is appropriate for the CN80XX / CN81XX SoC.

Some popular third-party sources:

  • Ubuntu Core - this is a minimal filesystem that you can build off of at runtime by adding packages from various repositories.
  • Linaro - Linaro has several root filesystems including server, nano, developer, core, and ALIP. Each root filesystem will have different things installed for different purposes. Choose carefully which will work for you.

Notes:

  • some root filesystems may require you to manually add a user before booting (ie Ubuntu Core)
  • the default Newport bootloader expects to find the Image in the /boot directory on the 2nd partition of type ext2/3/4

Mainline Linux Kernel support

Gateworks actively participates in the development of the Linux kernel.

Cavium licenses CPU core IP from ARM and the name they give the CPU core within the OCTEON-TX CN80XX / CN81XX is the Cavium 'ThunderX'. Therefore many of the peripheral drivers within the Linux kernel have 'thunderx' in their name and more often then not the 'OCTEON' name refers to the older OCTEON MIP64 core.

The following table shows what OCTEON-TX CN80XX / CN81XX peripherals support is available in the mainline kernel starting from 4.13:

Feature Support Notes
SMP Yes ARCH_THUNDER
serial UART (SBSA) Yes SERIAL_AMBA_PL011 drivers/tty/serial/amba-pl011.c
watchdog Watchdog (SBSA) Yes ARM_SBSA_WATCHDOG drivers/watchdog/sbsa_gwdt.c
I2C Yes (4.9+) I2C_THUNDERX drivers/i2c/busses/i2c-{octeon-core,thunderx-pcidrv}.c
Networking BGX (SGMII) Yes (4.2+) THUNDER_NIC_BGX drivers/net/ethernet/cavium/thunder/thunder_bgx.c
Networking RGX (RGMII) Yes (4.9+) THUNDER_NIC_RGX drivers/net/ethernet/cavium/thunder/thunder_xcv.c
Networking MDIO (PHY) Yes (4.6+) MDIO_CAVIUM/MDIO_THUNDER drivers/net/phy/mdio-{cavium,thunder}.c
PCI Yes (4.6+) PCI drivers/pci/host/pci-thunder-{ecam,pem}.c
SPI Yes (4.9+) SPI_THUNDERX drivers/spi/spi-thunderx.c
MMC eMMC / microSD Yes (4.12+) MMC_CAVIUM_THUNDERX drivers/mmc/host/thunderx-mmc.c
HW RNG (Hardware Random Number Generator) Yes (4.9+) HW_RANDOM_CAVIUM drivers/char/hw_random/cavium-rng*.c
HW Compressions offload Yes (4.12+) DEV_CAVIUM_ZIP drivers/crypto/cavium/zip.c
Crypto Yes (4.11+) DEV_CAVIUM_CPT drivers/crypto/cavium
RTC Yes RTC_DRV_DS1672 drivers/rtc/rtc-ds1672.c
LED/GPIO Yes (4.14+) GPIO_THUNDERX drivers/gpio/gpio-thunderx.c
USB 3.0 Yes USB_XHCI_PCI
mSATA Yes SATA_AHCI

The following kernel configs should be enabled for the OCTEON-TX CN80XX / CN81XX:

  • SERIAL_AMBA_PL011 - ARM SBSA UART
  • MMC_CAVIUM_THUNDERX - MMC
  • EDAC_THUNDERX - Error Detection and Correction (works with 'edac-util' app from 'edac-utils' package)
  • GPIO_THUNDERX - General Purpose I/O
  • SPI_THUNDERX - SPI Controller
  • I2C_THUNDERX - I2C Controller
  • THUNDERX_NIC_VF - NIC virtual function
  • THUNDERX_NIC_PF - NIC physical function
  • THUNDERX_NIC_BGX - Network Controller (selects MDIO_CAVIUM/MDIO_THUNDER)
  • THUNDERX_NIC_RGX - RGMII Network Controller (selects MDIO_CAVIUM/MDIO_THUNDER)
  • MDIO_THUNDER (selected automatically by THUNDERX_NIC*)
  • MDIO_CAVIUM (selected automatically by THUNDERX_NIC*)
  • PCI_HOST_THUNDER_PEM - PCI host controller
  • PCI_HOST_THUNDER_ECAM - Enhanced Configuration Access Mechanism for PCIe memory mapped I/O
  • ARM_SBSA_WATCHDOG - ARMv8 Watchdog
  • CRYPTO_DEV_CAVIUM_ZIP - Hardware Compression / Decompression off-load
  • HW_RANDOM_CAVIUM - Hardware accelerated random number generator

Note that there are many kernel drivers using the name 'Octeon' but they typically refer to a different chipset and the CN80XX / CN81XX have more in common with the Cavium 'ThunderX' architecture as that is the SoC core.

For details on building a Linux kernel see here

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.