= Gateworks Venice Family Support {{{ #!html

Getting Started

Venice Software

Peripherals

User Manuals

Wireless / WiFi Radios

Cellular Modems

GPS

3D Model
}}} [[PageOutline]] The Gateworks Venice product family utilizes the NXP i.MX8M Mini (i.MX8MM and MP) SoC (System On Chip) family offering a large variety of peripherals with a focus on Networking, Security, and Media. See ​[https://www.gateworks.com/products/industrial-single-board-computers/imx8-single-board-computers-gateworks-venice/ here] for a product comparison matrix. = Links '''Please note: This is a subset of information for Venice, however, please visit our [wiki:WikiStart Main Wiki] for all other information''' == VeniceFLEX * VeniceFLEX is an extension family from the Venice and it features a CE-Ready design and flexible socket adapters (FSA) for M.2 and Mini-PCIe wireless. It uses the i.MX8MP (Plus) CPU and thus operates very similar to the Venice family. * [wiki:FSA VeniceFLEX FSA Wiki Page] * [https://www.gateworks.com/products/industrial-single-board-computers/imx8-single-board-computers-gateworks-venice/venice-and-veniceflex-comparison/ Venice vs VeniceFLEX Comparison Table] == Software * [#software Software Section] - Bootloader, Boot Firmware, Operating Systems, Kernel, etc == Security * [wiki:venice/secure_boot Venice Secure Boot] * [wiki:venice/encryption Venice Encryption] * [wiki:linux/encryption Linux Encryption] * [wiki:secure_boot Generic Secure Boot] * [wiki:tpm TPM / Trusted Protection Module / Security ] == Peripheral Support * Connector Pinouts - see [http://www.gateworks.com/usermanuals Hardware User Manual] * [wiki:venice/mipi Venice MIPI DSI / CSI ] - LCD Video Display output / Camera Video Input * [wiki:alternateconnectors Connector and Cable Information] * [wiki:gettingstarted Serial Console Access] * [wiki:USB USB Support] - Note the standard Venice family supports USB 2.0 (USB 3.0 only supported with i.MX8M Plus processor (-2x)) * [wiki:SPI SPI Support] * [wiki:I2C I2C Support] * [wiki:gpio/#gpiolib GPIO Control] * [wiki:gpio/#led_class LED Control] * [wiki:sata mSATA Information] * [wiki:gps GPS Support] * [wiki:canbus CAN Bus Support] * [wiki:minipciexpressmodules PCIe Accessory Cards] * [wiki:MMC MultiMediaCard (microSD/eMMC) Information] * [wiki:gsc Gateworks System Controller (GSC)] - Temperature, voltage, RTC, GPIO, Digital IO, I/O, pushbutton, etc * [wiki:tpm TPM / Trusted Protection Module / Security ] * [wiki:alternateconnectors Alternate / Optional Connectors / Headers] == Other Info * [http://www.gateworks.com/product#venice Product Info] * [http://shop.gateworks.com Where to Buy] * [wiki:venice/orderoptions Venice Board Ordering Options] * [wiki:venice/errata Venice Board Errata] * [wiki:linux/devicetree Linux Kernel Device-Tree info] * [wiki:eol End of Life - EOL Dates ] * [wiki:sbcrevisions View Venice Revision Notes] == User Manuals * [http://www.gateworks.com/usermanuals All Gateworks User Manuals] * [https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-processors/i-mx-8m-mini-arm-cortex-a53-cortex-m4-audio-voice-video:i.MX8MMINI?tab=Documentation_Tab i.MX8M Mini Reference Manual] [=#somcomparison] == NXP iMX8M Mini vs Plus SOM Gateworks manufactures two different SOM modules, one with the NXP i.MX8M mini SoC and the other with the i.MX8M Plus SoC. These SOMs can be plugged onto the Gateworks baseboards, GW71xx, GW72xx and GW73xx. Key Differences: * Plus adds USB 3.0 * Plus adds CAN Bus ||= Item =||= Processor =||= DRAM =||= USB =||= PCIe =||= Audio / Video =||= CAN Bus =||= VPU =||= GPU =||= NPU =||= DSP =||= ETH MAC =|| || i.MX8M Mini SoM (GW700x) || 4x Cortex-A53 core || 1500MHz (3000MT/s) || USB 2.0 || PCIe 2.0 || MIPI-CSI/DSI|| None || 1080p60 h.264 & h.265 decoder, 1080p60 h.264 encoder || 1x shader, OpenGL® ES 2.0, 3D Graphics: GC !NanoUltra, 2D Graphics: GC320 || None || None || EQOS || || i.MX8M Plus SoM (GW702x) || 4x Cortex-A53 core[br]Cortex-M7 || 2000MHz (4000MT/s) || '''USB 3.0''' || PCIe 3.0 (NOTE1) || '''None'''|| '''Yes (NOTE2)''' || 1080p60 h.264 & h.265 decoder, 1080p60 h.264 & h.265 encoder (NOTE3) || 16 GFLOPS (high-precision) OpenGL® ES 3.1/3.0, Vulkan®, Open CL™ 1.2 FP, OpenVG™ 1.1, 3D Graphics: GC7000UL, 2D Graphics: GC520L (NOTE3)|| 2.3 TOP/s || Cadence® Tensilica® !HiFi 4 DSP @ 800 MHz (NOTE3) || FEC|| * NOTE1: PCIe 3.0 is only available on the GW7100. GW72xx, GW73xx, and GW74xx all use a PCIe switch that is a PCIe 2.0 switch. Contact Gateworks Sales for a custom design if PCIe 3.0 is needed. * NOTE2: CAN Bus is supported on the i.MX8MP SoC, but there is not a transceiver. Gateworks plans to add a transceiver on an expansion board that plugs onto the expansion header on the GW72xx and GW73xx. CAN will not be supported on the GW71xx. * NOTE3: GW702x does not support MIPI-CSI/DSI, HDMI on GW71xx, GW72xx, GW73xx, GW75xx More information between the two processors can be found on NXP Website here: [https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors:IMX8-SERIES] * Note, just because the processor supports something, it does not mean it is available on the Gateworks SoM. == Entire Raw Index of Venice Wiki Pages [[TitleIndex(venice)]] [=#software] = Venice Software Venice Software is comprised of many pieces, including the following: * GSC (Gateworks System Controller) Firmware * Boot Firmware (ARM Trusted Firmware, DDR controller Firmware, U-Boot Bootloader) * Operating System (including kernel / rootfs) (different flavors of Linux) Ubuntu Linux is pre-installed on all Venice boards before they ship. Please view the following links for the appropriate software section: * [#choosingsoftware Choosing an OS] - Linux Software - Ubuntu, OpenWrt, Buildroot, Yocto, etc * [wiki:venice/firmware#images Pre-built Software Images and Installation instructions] * [wiki:venice/bsp Building & Compiling BSP (Board Support Package) Images] - This includes all the boot firmware & operating System * [wiki:venice/boot Venice Boot Process and Firmware (up to and including the Bootloader) details] * [wiki:gsc#GSCVersionHistory GSC Firmware] * [#linux Venice Mainline Linux kernel support] * [#third_party_linux Booting Third Party Linux Distro's on Venice] * [#jtag Venice JTAG Programming] * [wiki:ubuntu/#hello-world.c Native Compile Hello World Example] * [wiki:buildroot Buildroot Linux] [=#choosingsoftware] == Choosing a BSP Gateworks offers several Linux Board Support Packages for the Venice Product family. Which one we recommend depends a bit upon what your goal is and what your experience level is. ** Note: By default Venice boards are pre-programmed with and Ubuntu root filesystem and Gateworks kernel. ** [=#ubuntu] === Ubuntu Gateworks offers a pre-built Ubuntu Linux root filesystem using the latest Gateworks kernel as well as instructions on how to build your own Ubuntu based distribution. * [wiki:/venice/bsp Venice Ubuntu Wiki and Software] Venice pre-built Ubuntu root filesytem image: - '''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.''' - The Gateworks Ubuntu focual image can boot to login in about 26 seconds (removing the U-Boot bootdelay) and takes about 1.5GiB of FLASH storage. Several seconds of that time is spent waiting for the network interfaces to come up which can be disabled. Much of the required space is taken up by various packages we pre-install however it is difficult to get Ubuntu pruned down below 1GiB or booting much faster. - Able to use mainline kernel. - Supports all Venice 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 [=#buildroot] === Buildroot Gateworks provides documentation on building your own compact and customized Linux distribution using [wiki:buildroot Buildroot]: - intended for custom applications (low flash and memory footprint) - a standard buildroot image can boot to login in about 8 seconds (removing the U-Boot bootdelay) and can take less than 32MiB of FLASH storage (both of which can be reduced by turning off the console output and reducing the kernel features) - Fairly up-to-date and/or vanilla kernel support - Wide variety of packages - Console-based build system - exportable Toolchain available to build apps on a development host outside of the buildroot environment === [#openwrt OpenWrt] - Currently supported on GW71xx, GW72xx, GW73xx. GW74xx with i.MX8M Plus support is coming soon. - [wiki:OpenWrt/building#OpenWrtBSPBranches Venice OpenWrt Wiki Page with Downloads] - 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 === Yocto While Gateworks doesn't officially publish a Yocto BSP, the NXP Yocto rootfs can be used with a Gateworks kernel and a system can be booted. More information is [wiki:venice/yocto here] [=#third_party_linux] = Third Party Linux Distros = While Gateworks cannot fully support all Linux distros, it is relatively simple to overlay a Gateworks Venice kernel onto any non-Gateworks third party Linux distro rootfs image. The following links will describe what is needed: 1. Linux kernel supporting Venice: [wiki:linux/kernel] 2. Root Filesystem: [#rootfs see below] 3. Bootable media: [wiki:linux/blockdev] [=#rootfs] === Root filesystem Sources There are several sources of pre-built root filesystems that are compatible with Venice. As Venice 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 i.MX8MM SoC. Some popular third-party sources: * [http://cdimage.ubuntu.com/ubuntu-core/ Ubuntu Core] - this is a minimal filesystem that you can build off of at runtime by adding packages from various repositories. * [https://releases.linaro.org/ 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) [=#linux] [=#mainline-linux] = Mainline Linux Kernel support Gateworks actively participates in the development of the Linux kernel. The following table shows what i.MX8MM support is available in the mainline kernel: ||= Item =||= DT compatible =||= Driver =||= Kconfig =||= Kernel =|| || mmc || fsl,imx7d-usdhc || drivers/mmc/host/sdhci-esdhc-imx.c || CONFIG_MMC_SDHCI_ESDHC_IMX || || || sdma || fsl,imx7d-sdma || drivers/dma/imx-sdma.c || CONFIG_IMX_SDMA || || || uart || fsl,imx6q-uart || imx-uart: drivers/tty/serial/imx.c || CONFIG_SERIAL_IMX || || || ethernet || fsl,imx6sx-fec || fec: drivers/net/ethernet/freescale/fec_main.c || CONFIG_FEC || || || i2c || fsl,imx21-i2c || drivers/i2c/busses/i2c-imx.c || CONFIG_I2C_IMX || || || spi || fsl,imx51-ecspi || drivers/spi/spi-imx.c || CONFIG_SPI_IMX || || || gpio || fsl,imx35-gpio || drivers/gpio/gpio-mxc.c || CONFIG_GPIO_MXC || || || wdog || fsl,imx21-wdt || drivers/watchdog/imx2_wdt.c || CONFIG_IMX2_WDT || || || pwm || fsl,imx27-pwm || drivers/pwm/pwm-imx27.c || CONFIG_PWM_IMX27 || || || audio dai || fsl,imx8mq-sai || fsl-sai: sound/soc/fsl/fsl_sai.c || CONFIG_SND_SOC_FSL_SAI || 5.4 || || caam || fsl,sec-v4.0 || drivers/crypto/caam/* || CONFIG_CRYPTO_DEV_FSL_CAAM || 5.6 || || ddrc (Dyanmic Scaling for DDR controller) || fsl,imx8m-ddrc || drivers/devfreq/imx8m-ddrc.c || ARM_IMX8M_DDRC_DEVFREQ || 5.6 || || thermal || fsl,imx8mm-tmu || drivers/thermal/imx8mm_thermal.c || IMX8MM_THERMAL || 5.7 || || fspi (Flex SPI) || nxp,imx8mm-fspi || drivers/spi/spi-nxp-fspi.c || SPI_NXP_FLEXSPI || 5.7 || || gpcv2 (power domain) || fsl,imx8mm-gpc || drivers/soc/imx/gpcv2 || CONFIG_IMX_GPCV2_PM_DOMAINS || 5.15 || || usb || fsl,imx7d-usb fsl,imx7d-usbmisc || drivers/usb/chipidea/{ci_hdrc_imx,usbmisc_imx}.c || CONFIG_USB_CHIPIDEA_IMX || 5.15 || || blk-ctl (power domain / reset) || fsl,imx8mm-*-blk-ctrl || drivers/soc/imx/imx8m-blk-ctrl || CONFIG_SOC_IMX8M || 5.16 || || gpu || vivante,gc || drivers/gpu/drm/etnaviv/* || CONFIG_DRM_ETNAVIV || 5.16 || || mipi csi bridge || fsl,imx7-csi || drivers/media/platform/nxpimx-mipi-csis.c || CONFIG_VIDEO_IMX7_CSI || 5.17 || || mipi csi || fsl,imx8mm-mipi-csi2 || drivers/staging/media/imx/imx7-media-csi.c || CONFIG_VIDEO_IMX_MIPI_CSIS || 5.17 || || vpu/hantro-g1/g1 (mpeg2/h264 video decoder) || nxp,imx8mm-vpu-g* || drivers/staging/media/hantro/hantro_drv.c || CONFIG_VIDEO_HANTRO_IMX8M || 5.18 || || imx8mm pci || fsl,imx8mm-pcie || drivers/pci/controller/dwc/pci-imx6.c || CONFIG_PCI_IMX6 || 5.18 || || imx8mp pci phy || fsl,imx8mp-pcie-phy || drivers/phy/freescale/phy-fsl-imx8m-pcie.c || CONFIG_PHY_FSL_IMX8M_PCIE || 6.2 || || imx8mp pci || fsl,imx8mp-pcie || drivers/pci/controller/dwc/pci-imx6.c || CONFIG_PCI_IMX6 || 6.1 || || imx8mp pci phy || fsl,imx8mp-pcie-phy || drivers/phy/freescale/phy-fsl-imx8m-pcie.c || CONFIG_PHY_FSL_IMX8M_PCIE || 6.2 || || mipi dsi bridge || fsl,imx8mp-mipi-dsim || drivers/gpu/drm/bridge/samsung-dsim.c || CONFIG_DRM_SAMSUNG_DSIM || v6.4 || || || || imx8mm-venice-gw71xx-0x || dt || || || 5.12 || || imx8mm-venice-gw72xx-0x || dt || || || 5.12 || || imx8mm-venice-gw73xx-0x || dt || || || 5.12 || || imx8mp-venice-gw74xx-0x || dt || || || 5.19 || || vpu/hantro-h1^^^1^^^ (jpeg video encoder) || not yet upstream as of v6.1 || || || || 1. While support may not be officially upstream yet, the Gateworks kernel does have support for these devices See also: * Prebuilt Venice Kernel: [http://dev.gateworks.com/venice/kernel/] * Building the Venice Kernel as part of the BSP: [wiki:venice/bsp#kernel] * Building a Mainline Kernel Wiki: [wiki:linux/kernel] [=#sleep] = Venice Low Power / Sleep Mode The Venice family has a M4/M7 coprocessor that may allow for low power / sleep functions. Gateworks has not done any testing or software development on the M4/M7 side of things, but you would be welcome to use it. You may find more information on the following links: * [https://www.nxp.com/docs/en/application-note/AN12410.pdf] * https://community.nxp.com/t5/Other-NXP-Products/i-MX8M-MINI-Lop-Power-Mode/m-p/1148737 * [https://www.nxp.com/webapp/Download?colCode=AN13340SW&docLang=en APP NOTE Arm® Cortex®-M4 and Arm® Cortex®-A53 Low-Power Use Cases - AN13340 ] * [https://community.nxp.com/] = GW7400 Ordering Options [[Image(gw74xxoptions.png)]]