i.MX Solutions Knowledge Base

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX Solutions Knowledge Base

Labels

Discussions

Sort by:
Boundary Devices is pleased to announce that its i.MX8M-based SBC Nitrogen8M is available and in stock! https://boundarydevices.com/product/nitrogen8m-imx8/  Nitrogen8M specifications The Nitrogen8M comes pre-populated with the most robust set of connectivity options available to allow for rapid development and validation of your next project. The boards are also be built with Boundary Device’s industry-leading, production-ready standards and include options such as industrial temp and conformal coating. All this allows the Nitrogen8M to be used as an evaluation platform or production-ready solution. Review the full list of the specifications below. More information including pricing and availability can be found on the Nitrogen8M product page: CPU — i.MX 8M Quad Core (x4 Cortex-A53 @ 1.5GHz; Cortex-M4 @ 266MHz) RAM — 2GB LPDDR4 (4GB Optional) Storage — 8GB eMMC (upgradeable to 128GB) GPU — Vivante GC7000Lite Camera — x2 4-lane MIPI-CSI Display — x1 HDMI (w/CEC) and x1 MIPI DSI several MIPI-DSI displays options available Wireless — 802.11 ac and Bluetooth 4.1 BD-SDMAC Module (QCA9377) Networking — Gigabit Ethernet port Other I/O: x3 USB 3.0 Host ports x1 USB 3.0 OTG port x3 I2C x1 SPI x3 RS-232 x1 SD/MMC x1 RTC + battery x2 PCIe (1 Mini-PCIE connector, 1 on expansion connector) x1 JTAG Power — 5V DC input Operating Temperature — 0 to 70°C (Industrial Optional) Operating System — Yocto, Ubuntu/Debian, Buildroot, FreeRTOS (M4 Core), Android Demos As some people say, a video is worth a thousand words, so let's just share what can run on that platform already: Nitrogen8M Crank Storyboard Demo - YouTube  Nitrogen8M Yocto GPU SDK Demo - YouTube  Nitrogen8M Android 8.1 Qt5 + 4k video demo - YouTube  Source code access The bootloader and kernel source code are already available publicly on our GitHub account: GitHub - boundarydevices/u-boot-imx6 at boundary-imx_v2017.03_4.9.51_imx8m_ga  GitHub - boundarydevices/linux-imx6 at boundary-imx_4.9.x_2.0.0_ga  Android has been officially released: https://boundarydevices.com/android-oreo-8-1-0-release-for-nitrogen8m/  Some benchmarking has been done to compare against previous i.MX6 CPUs Yocto BSP is on the way, Boundary Devices is actively contributing to the community BSP: meta-freescale-3rdparty/nitrogen8m.conf at master · Freescale/meta-freescale-3rdparty · GitHub  Ubuntu Bionic Beaver beta image is also available upon request (please contact support@boundarydevices.com). Feel free to contact us for more information: info@boundarydevices.com.
View full article
This is ITE MIPI to HDMI/IT6161 video bridge already merge/verified with i.Mx8 series processor. attached is IT6161 MINISAS card user manuel and reference circuits.@
View full article
The DA9063 from Dialog Semiconductors is a powerful system PMIC for the next generation of single, dual and quad-core application processors based on the ARM Cortex™ A9 and A15 architecture. The PMIC follows a scalable approach of output currents and rails to supply the entire system and is capable of delivering a total of up to 12A from its six DC-DC converters. The DA9063 simultaneously powers the processor (the core at up to 5A), external memory, wireless communications (WLAN and Bluetooth), GPS and FM receivers, and data modems.  The DC-DC converters can be paralleled to provide 3A and 5A rails. Description: DA9063 is a high current system PMIC suitable for Single, Dual and Quad-core processors used in smartphones, tablets and other handhelds applications that require up to a 5A core processor supply. There are multiple operating modes, five consuming <20μA including a 1.5μA RTC mode with alarm & wake up. A system monitor watchdog is enabled in Active mode. DA9063 contains 6x DC-DC Buck converters designed to use small external 1µH inductors capable of supplying in total up to 12A continuous output (0.3-3.3V). 11x SmartMirror™ programmable LDO regulators rated up to 300mA. All support remote capacitor placement and operate from low 1.5/1.8V input supply; this allows the linear regulators to be cascaded with a suitable buck supply to improve overall system efficiency. A number of LDOs can be configured as current limited bypass-switches to support external peripherals such as external accessory or memory cards. The Buck converters do not require external Schottky diodes, they dynamically optimise their efficiency depending on the load current using an Automatic Sleep Mode (ASM). They incorporate pin and s/w controlled Dynamic Voltage Control (DVC) to support processor load adaptive adjustment of the supply voltage. Processor core leakage reduction can be achieved using external FET switches driven by the rail switch controllers for ultra-fast power domain switching. The DA9063 provides a startup sequencing engine that offers autonomous hardware and software controlled system start-up. Customisable power modes  can also be configured using “Power Commander,” Dialog’s powerful graphical user interface. The ON-key feature detects the button press time and offers configurable key-lock and application shut-down functions. Up to 16 free configurable GPIO pins are able to perform system functions including keypad supervision, application wake-up and timing controlled enable of external regulators/power switches or other ICs. A 10-bit ADC supports voltage and temperature supervision from general purpose inputs including automatic interrupt from comparators and resistor measurement.  Three RGB-LED driver pins are provided with PWM control. LDO8 may be configured as a 6-bit PWM controlled vibration motor driver with automatic battery voltage correction. Features Input supply voltage range up to 5.5v 6 DC-DC Buck Converters with Dynamic Voltage control 2.5A  Buck 2.5A  Buck 2.5A  Buck 1.5A  Buck 1.5A  Buck 1.5A  Buck 3MHz Switching Frequency Enables use of  1.0mm high inductors Integrated Power Switches 11 LDO Regulators with programmable Output 3 low noise LDOs 4 with Dynamic Voltage Control 5 with current limited Switch option Fast controller for 2 Rail Switches Ultra low power 1.5µA Real-Time Clock with alarm, oscillator circuitry with crystal frequency adjustment and controlled signal provision Power Manager with programmable Start-up of internal and external regulators/rail switches and configurable low power modes Support of multiple master applications via two independent Control Interfaces System Monitor including Watchdog Timer Up to 16 free configurable GPIO Pins enable system control from DA9063 while the application is in standby RGB-LED driver (PWM) with autonomous flashing PWM vibration motor driver 10-Bit ADC with 9 Channels and configurable alarm thresholds Regulator Supervision with automatic under and over voltage protection Coin Cell/Super-Capacitor Backup Charger      -40 to +85°C Temperature range 100VFBGA 8.0x8.0x1.0mm (0.8mm pitch) package Block Diagram DA9063: For more information: http://www.dialog-semiconductor.com/products/power-management/DA9063
View full article
Adeneo Embedded enhances the already feature rich Windows Embedded Compact 7 (WEC7) BSP for the i.MX6 platforms by adding support for PCIe. PCIe support now enables customers to connect various PCI based peripherals to the high performance i.MX6 platform. In the example shown in the video, a PCIe based network card can be seen working with the i.MX6 SABRE lite board. The PCI bus and controller driver implementations from Adeneo are of production quality.
View full article
REX - Freescale iMX6 Opensource Project Designed by FEDEVEL Academy Based on Freescale i.MX6 CPU. This is an open source project. All documents are free for download, including Schematic and PCB files. The iMX6 Rex Module is also used for teaching about Schematic Design and Advanced PCB Layout at FEDEVEL Academy. Module Specification Freescale iMX6 processor, up to 1.2GHz / 4 cores Soldered down DDR3-1066 (533MHz), up to 4GB 10/100/1000 Mbps Ethernet 1x HDMI (up to QXGA 2048×1536) 1x LVDS (up to WUXGA 1920×1200) 1x PCIE 1x SATA On board SPI Flash up to 32Mb 1x SD, 1x MMC 2x USB 3x UART, 3x I2C, 1x SPI Digital audio JTAG User LED, power LED 2x high speed board to board connectors (only one required) Size: 70 x 40 mm (smaller than a credit card) Input power: 7 to 24 V (DC) Releated posts iMX6 Rex EMC Testing – Pass iMX6 Rex infrared images User friendly GUI + Mouse + Keyboard working ok How long it took to design the iMX6 Rex module prototype? iMX6 Module Total Cost Prototype Developement The iMX6 Rex module design licensing Video from Assembling iMX6 Rex Boards Bringing up i.MX6 Rex Module to Life – from unpacking to booting iMX6 Rex Layout Video
View full article
LTC3676 datasheet Features Quad I 2 C Adjustable High Efficiency Step Down DC/DC Converters: 2.5A, 2.5A, 1.5A, 1.5A Three 300mA LDO Regulators (Two Adjustable) DDR Power Solution with V TT and VTTR Reference Pushbutton ON/OFF Control with System Reset Independent Enable Pin-Strap or I 2 C Sequencing Programmable Autonomous Power-Down Control Dynamic Voltage Scaling Power Good and Reset Functions Selectable 2.25MHz or 1.12MHz Switching Frequency Always Alive 25mA LDO Regulator 12μA Standby Current Low Profile 40-Lead 6mm × 6mm × 0.75mm QFN Package Linux Driver Instructions (Please note that this is a Beta Release Version) The driver is good reference code to illustrate how to communicate with LTC3676 via I2C. The .zip file also includes a test app and readme.txt with instructions. It has been tested with i.MX6Q NovPek board from NovTech. It is configured for the LTC3676-1 but also support LTC3676 by simply changing a flag and there are comments about the minor difference between the -1 and non-1 for the driver. Here is the description and instructions also contained in the included readme file: This package contains the linux driver for LTC3676 and LTC3676-1. It has been tested with i.MX6Q. It also includes a test app. It is configured for the LTC3676-1 but there are internal comments about the minor difference between the -1 and non-1 for the driver. Here are general instructions on how to include this new driver in the Linux build using ltib. You can also see that it is tested with linux-3.0.35 that Freescale has used for i.MX6. 1) cd ltib/rpm/BUILD/linux-3.0.35 (Where your Ltib folder is stored). 2) extract zip file: tar -zxpf LTC3676_Driver.tar.gz 3) Run LTIB configure: ./ltib -c 4) Select "Configure the kernel", exit, and yes to save. 5) When Kernel Menu appears, select "Device Drivers". 6) Select "Voltage and Current Regulator Support". 7) Select "Linear LTC3676 Regulator Driver" to compile into kernel. Don't build as a module. 😎 Exit and Save. 9) Ltib should build the kernel with the driver. Application Instructions: This builds in the ltc3676_1_test application to allow a user to check the regulators and dynamically change the voltage on the ARM core rail. The voltage movement is small to not push the i.MX6 outside normal operation. This test application does not have any overvoltage error checking for safety. It also does not change the processor frequency. It just tests the basic LTC3676 driver operation. 1) cd ltib (Where your Ltib folder is stored). 2) Run "./ltib -m prep -p imx-test" 3) Move the ltc3676_test folder extracted from this tar file: "mv rpm/BUILD/linux-3.0.35/ltc3676_test rpm/BUILD/imx-test-12.09.01/test/." 4) Run "./ltib -m scbuild -p imx-test" 5) Run "./ltib" 6) Burn SD Card, "./mk_mx6_sd -ukr /dev/sdb", /dev/sdb is the name of the SD card. 7) Safely Remove SD Card and install in NOVPEK board. 😎 Power and boot to Linux. 9) Run "cd /unit_test " 10) Run Application, ./ltc3676_1_test i.MX6 Board from NovTech (Click on this link) Schematics for LTC3676-1 Linear Technology Power Plug in Board available. Contact your local Linear Technology sales office Gerard Velcelean (gvelcelean@linear.com) or Steve Knoth (sknoth@linear.com) if you have any questions.
View full article
NXP i.MX7 CPU, dual-core Cortex-A7 1GHz Up to 2GB DDR3 and 32GB eMMC 3G/LTE modem, WiFi 802.11a/b/g/n, BT 4.1 2x 1000Mbps Ethernet, 4x USB2, RS485, RS232 Support for PoE powered mode Fanless design in aluminum, rugged housing Miniature size – 10.8 x 8.3 x 2.4 cm Designed for reliability and 24/7 operation Wide temperature range of -40C to 85C Mainline Linux kernel and full Linux BPS IOT-GATE-iMX7 is built around the NXP i.MX7 System-on-Chip featuring an advanced ARM Cortex-A7 CPU coupled with a dedicated real-time ARM Cortex-M4 MCU. The SoC is supplemented with up-to 2GB DDR3 and 32GB of on-board eMMC storage.   Featuring a wide range of embedded interfaces, IOT-GATE-iMX7 is a versatile platform for industrial automation and control systems. Dual Gbit Ethernet, 3G/LTE modem, dual-band 802.11a/b/g/n WiFi and Bluetooth 4.1 make IOT-GATE-iMX7 an excellent solution for networking, communications and IoT applications.   IOT-GATE-iMX7 is provided with a full Board Support Package and ready-to-run images for the Linux operating system. The IOT-GATE-iMX7 BSP includes Linux kernel 4.1.15, Yocto Project file-system and U-Boot boot-loader. In addition, CompuLab will support IOT-GATE-iMX7 with mainline Linux and upstream Yocto Project. IOT-GATE-iMX7 spec IOT-GATE-iMX7 evaluation kit IOT-GATE-iMX7 pricing
View full article
NOVPEK TM i.MX6Q/D System Download the NOVPEK i.MXQ/D Brochure Includes NOVPEK TM i.MX6Q/D Module 201 easily accessible IOMUX pins Arranged in 32x2 100mil pin headers Advanced Power Management (PM) development support via Add-on Card, various PM options available Multiple voltage settings for each peripheral voltage rail Accurate power consumption analysis framework for all 35 voltage rails on the i.MX6Q/D On-board debug ports: JTAG and 16bit ETM Bootable with terminal support RS232 and TTL interfaces, only uses two i.MX6Q/D pins All i.MX6Q/D boot options Simplified firmware/software development through 10/100 Ethernet port SPI based, doesn’t consume the built-in FEC USB HOST port and USBOTG port that can be forced to HOST mode HDMI video out port SATA interface LVDS interface PCI Express Mini PCIe with SIM slot MIPI/SDI interface Highly integrated NovTech PM solution Multiple power-on events Reprogrammable for configurability   For more information click here  
View full article
Hi all, Below is our press release for our i.MX6 solutions, i.e., kits and boards. emtrion GmbH, a company specialised in Embedded Systems design, hardware and software, Freescale Proven Partner, announces the availability of a new industrial processor module based on the multicore Cortex-A9 i.MX6 SoC family from Texas Instruments. This new module, called DIMM-MX6, extends the emtrion DIMM family and offers a full electrical and mechanical compatibility with the other modules of the emtrion DIMM series. emtrion guarantees the availability of its new module for at least 10 years. The DIMM-MX6 module from emtrion brings high computing capabilities with up to 10.000 DMIPS, multiple NEON SIMD and VPFU co-processors at a low power level, without requiring any active cooling system. The DIMM-MX6 module is available in several versions, with either i.MX6 Solo (1 core), Dual (2 cors) or Quad (4 cores) and on-board memories ranging from 512MB up to 8GB for the Flash (SLC NAND) and from 512MB up to 2GB RAM (DDR3). The new module is also qualified for an extended temperature range of -40°C to +85°C. In addition to boards and kits, emtrion offers support for a broad range of operating systems, board support packages (BSP) as well as engineering services. The DIMM-MX6 is available now with a BSP for Linux, that will be followed by additional BSP for Windows Embedded Compact 7 (WEC7), for QNX 6.5 and for Android 4.0. The BSP are available together with a developer kit. Each developer kit includes a DIMM-MX6 industrial module, a base board, a display and a development environment. All parts are mounted together and programmed by emtrion. The kits are shipped ready to use.
View full article
MYIR introduces a high-performance ARM SoM MYC-JX8MX CPU Module, which is built around the NXP i.MX 8M Quad processor featuring 1.3GHz quad ARM Cortex-A53 cores and a real-time ARM Cortex-M4 co-processor. The module runs Linux and is capable of working in extended temperature ranging from -30°C to 80°C.   Measuring 82mm by 52mm, the MYC-JX8MX CPU Module has integrated 1GB/2GB LPDDR4, 8GB eMMC, 256Mbit QSPI Flash, Gigabit Ethernet PHY and PMIC on board. A large number of I/O signals are carried to or from the i.MX 8M CPU Module through one 0.5mm pitch 314-pin MXM 3.0 expansion connector, making it an excellent embedded solution for Scanning/Imaging, Building Automation and Smart Home, Human Machine Interface (HMI), Machine Vision and more other consumer and industrial applications which requires high multi-media performance. MYC-JX8MX CPU Module (delivered with heat sink by default) MYIR also offers a versatile platform MYD-JX8MX development board for evaluating the MYC-JX8MX CPU Module. It takes full features of the i.MX 8M processor and has brought out rich peripherals through connectors and headers such as 4 x USB 3.0 Host ports and 1 x USB 3.0 Host/Device port, Gigabit Ethernet, TF card slot, USB based Mini PCIe interface for 4G LTE Module, WiFi/BT, Audio In/Out, HDMI, 2 x MIPI-CSI, MIPI-DSI, 2 x LVDS display interfaces, PCIe 3.0 (x4) NVMe SSD Interface, etc. It is delivered with necessary cable accessories for customer to easily start development as soon as getting it out-of-box. A MIPI Camera Module MY-CAM003 is provided as an option for the board.                                                                       MYD-JX8MX Development Board MYIR offers 1GB or 2GB RAM selections for the CPU modules and development boards which have very-high powered prices to compare. Part No. Item Processor LPDDR4 eMMC Unit Price MYC-JX8MQ6-8E1D-130-E MYC-JX8MX  CPU Module NXP i.MX 8M Quad Processor based on 1.3GHz Quad ARM Cortex-A53 and 266MHz Cortex-M4 cores  (MIMX8MQ6CVAHZAB) 1GB 8GB $99 MYC-JX8MQ6-8E2D-130-E 2GB $119 MYD-JX8MQ6-8E1D-130-E MYD-JX8MX Development Board 1GB $279 MYD-JX8MQ6-8E2D-130-E 2GB $299 Supports extended working temperature ranging from -30°C to 80°C.
View full article
Some customer need to run standalone application in i.MX side. This article describe how to run standalone application in uboot and kernel, how to improve application running performance. It takes i.MX8MP as example, which is also suitable for other i.MX platform.
View full article
NXP i.MX8M processor family, 1.5GHz Up to 4GB LPDDR4 and 64GB eMMC HDMI 2.0a, LVDS, MIPI-DSI, up to 4096 x 2160 Gbit Ethernet, WiFi 802.11a/b/g/n/ac, BT 4.1 2x PCIe, 2x USB3.0, 4x UART, 90x GPIO Industrial temperature range of -40C to 85C Yocto Linux and Android CompuLab's CL-SOM-iMX8 is a miniature System-on-Module board designed for integration into industrial embedded applications. CL-SOM-iMX8 is built around the new NXP i.MX8M System-on-Chip featuring a quad-core ARM Cortex-A53 CPU coupled with a powerful Vivante GC7000Lite GPU. The SoC is supplemented with up-to 4GB of LPDDR4 and 64GB of on-board eMMC storage. Designed to bring out the full capabilities of the i.MX8M SoC, CL-SOM-iMX8 provides Gbit Ethernet, PCIe, 2 USB3.0 ports, 4 UARTs and up-to 90 GPIOs. Display connectivity is supported with HDMI2.0, LVDS and MIPI-DSI interfaces with resolutions of up-to 4096 x 2160. In addition, CL-SOM-iMX8 features on-board WiFi 802.11ac and Bluetooth 4.1. CL-SOM-iMX8 is provided with full BSPs and ready-to-run images for Linux and Android operating system. CL-SOM-iMX8 BSP includes Linux kernel 4.9, Yocto Project file-system, Android 8.0 and U-Boot boot-loader. CL-SOM-iMX8 Detailed Spec CL-SOM-iMX8 Development Kit CL-SOM-iMX8 Online Pricing
View full article
The Wandboard is a ultra low power complete computer with high performance multimedia capabilities based around the new upcoming Freescale i.MX6 Cortex-A9 processor and comes with a dazzling 1Ghz processor HDMI display interface and gigabit ethernet. The dualcore version of the Wandboard (The Wandboard DUAL) not only features 1GB of memory but also has onboard Wi-Fi and Bluetooth.     Wandboard Solo Wandboard Dual Processor Freescale i.MX6 Solo Freescale i.MX6 Duallite Cores Cortex-A9 Single core Cortex-A9 Dual core Memory 512 MB DDR3 1 GB DDR3 Audio • • Optical S/PDIF • • HDMI • • Camera interface • • micro SD cardslot 2 2 Serial port • • Expansion Header • • USB • • USB OTG • • SATA connector Not populated Not populated Gigabit LAN • • WIFI (802.11n) • Bluetooth • 69 USD 89 USD   www.wandboard.org Contact person : wandboard@gmail.com
View full article
This document will explain Cairo setup to draw something on screen with hardware accelerates using OpenGL ES 2.0 or OpenVG.   Introduction:   As you know you can use those libraries that I mentioned (OpenGL ES and OpenVG) to draw on frame buffer with hardware accelerate on imx6q but using those libraries are a little bit hard to deal what I mean is that using OpenGL or OpenVG  is a kind of tough job but why? Let me bring an example here to clarify it, Imagine you want to draw an attitude aircraft symbol, this symbol needs some of elements to be drawn to look like a complete attitude symbol it includes: 1-Circle 2-line 3-Text 4-Triangle 5-some custom shapes for instance two L like lines that draw horizontally   If you have an experience with OpenGL specially OpenGL ES you’ll realize that drawing circle, line, triangle and so forth doesn’t a really tough job, of course drawing these primitive in OpenGL needs more lines of code in contrast with Cairo API that you can draw them with just three lines of code but the most hard job is drawing TEXT in OpenGL when you want to draw a simple text you have to deal with extra libraries like freetype,… to fetch the glyph features and then you can using atlas approach to draw text in a bitmap texture then when you need a character in your app  you can access to the character’s position in previous stored glyph in the texture, fetch and use, also you need to work with two specific OpenGL ES shaders in this case.   So I think it’s ok to use OpenGL or OpenVG to draw shapes if you are really skilled with those or if you looking for trouble! 😄 personally I prefer to use a high level API and then focus on other aspect of my application.   Compiling Cairo:   This document doesn’t intend to configure or compile Cairo, I’m sure that you can easily configure and compile it with OpenGL ES backend with YOCTO, Buildroot or any other embedded Linux distribution builders (YOCTO and Buildroot aren’t an embedded Linux distributions they can make custom one for you) even you can compile it manually.   To configure: ./configure --prefix=/home/super/Desktop/ROOTFS/MY_ROOTFS/usr --host=${CROSS_COMPILE} CFLAGS="-I/home/super/Desktop/ROOTFS/MY_ROOTFS/usr/include/ -DLINUX -DEGL_API_FB" LIBS="-L/home/super/Desktop/ROOTFS/MY_ROOTFS/usr/lib/ -lz" --enable-xlib=no --enable-egl --enable-glesv2   To compile: make     By the way you can find your suitable configuration for your own board; Cairo has a lot of options.     How to make surface for Cairo:   If you have an experience drawing shapes with Cairo you know that you need a surface from cairo_t* type to drawing function API can work on and shapes appear on the screen. To create a Cairo surface that uses OpenGL ES you have to configure EGL (EGL is an interface between Khronos rendering APIs (such as OpenGL, OpenGL ES or OpenVG) and the underlying native platform windowing system)[1] correctly and then make a Cairo surface from it.                    EGLint config_attributes[] =                 {                                                EGL_RENDERABLE_TYPE,                                                EGL_OPENGL_ES2_BIT,                                                EGL_RED_SIZE, 8,                                                EGL_GREEN_SIZE, 8,                                                EGL_BLUE_SIZE, 8,                                                EGL_ALPHA_SIZE,EGL_DONT_CARE,                                                EGL_SURFACE_TYPE,EGL_WINDOW_BIT,                                                EGL_DEPTH_SIZE, 16,                                                EGL_SAMPLES,      4,                                                EGL_NONE                 };   When you want to change OpenGL ES v 2.0 with OpenVG it’s enough that change the parameter of EGL_RENDERABLE_TYPE (that is EGL_OPENGL_ES2_BIT) to EGL_OPENVG_BIT.   The below code will appear Figure 1 on screen:     Figure 1:Simple drawing by Cairo on IMX6Q     //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   //======================================================================== // Name        : testCairo.cpp // Author      : Ali Sarlak // Version     : 1.0 // Copyright   : GPL // Description : EGL+Cairo GLIB //========================================================================   #include <iostream> #include <stdio.h> #include <EGL/egl.h> #include <EGL/eglext.h> #include <EGL/eglplatform.h> #include <cairo/cairo-gl.h> #include <EGL/eglvivante.h> #include <stdlib.h>     #define DISPLAY_WIDTH 640 #define DISPLAY_HEIGHT 480 using namespace std;   int main() {     printf("START\n");     printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");     EGLContext eglContext;     EGLSurface eglSurface;     EGLBoolean resultB;       /* Get a display handle and initalize EGL */     EGLint major, minor;     EGLDisplay eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);       resultB = eglInitialize(eglDisplay, &major, &minor);       EGLint config_attributes[] =     {             EGL_RENDERABLE_TYPE,             EGL_OPENGL_ES2_BIT,             EGL_RED_SIZE, 8,             EGL_GREEN_SIZE, 8,             EGL_BLUE_SIZE, 8,             EGL_ALPHA_SIZE,EGL_DONT_CARE,             EGL_SURFACE_TYPE,EGL_WINDOW_BIT,             EGL_DEPTH_SIZE, 16,             EGL_SAMPLES,      4,             EGL_NONE     };       EGLint numberConfigs = 0;     EGLConfig* matchingConfigs=NULL;       if (EGL_FALSE             == eglChooseConfig(eglDisplay, config_attributes, NULL, 0, &numberConfigs))     {         printf("eglChooseConfig EROR\n");     }     if (numberConfigs == 0)     {         printf("eglChooseConfig EROR\n");     }       printf("number of configs = %d\n", numberConfigs);     /* Allocate some space to store list of matching configs... */     matchingConfigs = (EGLConfig*) malloc(numberConfigs * sizeof(EGLConfig));       if (EGL_FALSE  == eglChooseConfig(eglDisplay, config_attributes, matchingConfigs, numberConfigs, &numberConfigs))     {         printf("eglChooseConfig EROR\n");         if(matchingConfigs!=NULL)         {             free(matchingConfigs);             matchingConfigs=NULL;         }         return -1;     }       printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");       EGLint display_attributes[] =     {             EGL_WIDTH, DISPLAY_WIDTH,             EGL_HEIGHT, DISPLAY_HEIGHT,             EGL_NONE };       /*Window attributes*/     EGLint window_attribList[] =     {             EGL_NONE     };       EGLNativeDisplayType eglNativeDisplayType = fbGetDisplay(0);       EGLNativeWindowType eglNativeWindow = fbCreateWindow(eglNativeDisplayType,             0,             0,             DISPLAY_WIDTH,             DISPLAY_HEIGHT);       eglSurface = eglCreateWindowSurface(eglDisplay,matchingConfigs[0],eglNativeWindow,window_attribList);       if (eglSurface == EGL_NO_SURFACE)     {         printf("eglSurface = %x\n", eglGetError());     }       const EGLint attribListCtx[] =     {             // EGL_KHR_create_context is required             EGL_CONTEXT_CLIENT_VERSION, 2,             EGL_NONE     };       eglContext = eglCreateContext(eglDisplay, matchingConfigs[0], EGL_NO_CONTEXT,  attribListCtx);      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     if (eglContext == EGL_NO_CONTEXT)     {         printf("eglContext = %x\n", eglGetError());         return -1;     }       cairo_device_t* cdt = cairo_egl_device_create(eglDisplay, eglContext);       eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);       cairo_surface_t *surface = cairo_gl_surface_create_for_egl(cdt, eglSurface,             DISPLAY_WIDTH,DISPLAY_HEIGHT);         cairo_t *cr = nullptr;     cr = cairo_create(surface);     if(!cr)     {         printf("Wrong cairo_t!\n");         return -1;     }     //*********************************************************************************************     for (int index = 0; index < 1; ++index) {         cairo_set_source_rgb (cr, 0, 0, 0);           cairo_move_to (cr, 0, 0);         cairo_line_to (cr, 200, 200);         cairo_move_to (cr, 200, 0);         cairo_line_to (cr, 0, 200);         cairo_set_line_width (cr, 1);         cairo_stroke (cr);           cairo_rectangle (cr, 0, 0, 100,100);         cairo_set_source_rgba (cr, 1, 0, 0, 0.8);         cairo_fill (cr);          cairo_rectangle (cr, 0, 100, 100, 100);         cairo_set_source_rgba (cr, 0, 1, 0, 0.60);         cairo_fill (cr);          cairo_rectangle (cr, 100, 0, 100, 100);         cairo_set_source_rgba (cr, 0, 0, 1, 0.40);         cairo_fill (cr);          cairo_rectangle (cr, 100, 100, 100, 100);         cairo_set_source_rgba (cr, 1, 1, 0, 0.20);         cairo_fill (cr);          cairo_surface_flush(surface);         eglSwapBuffers(eglDisplay,eglSurface);     }       //to check that cairo can make the photo from the surface, png file created     cairo_status_t s = cairo_surface_write_to_png(surface, "surface.png");     //it is a photo that made by cairo [OK]     cairo_destroy(cr);      if (CAIRO_STATUS_SUCCESS == s)     {         printf("Status = OK \n");     }     else     {         printf("Status = ERROR <ERROR_CODE->%d>\n", s);     }      if(matchingConfigs!=NULL)     {         free(matchingConfigs);         matchingConfigs=NULL;     }       cairo_surface_destroy(surface);     printf("END!\n");     return 0; }     How To Be Sure That My Application Using GPU:   If you have a look at https://community.nxp.com/thread/324670 you can profile a graphical application and investigate if it uses GPU or not, also you can measure the performance and analyze the application by vAnalyzer.       According to the link I’ve mentioned that’s enough to set galcore.gpuProfiler=1 in uboot and then check the /sys/module/galcore/parameters/gpuProfiler   file (read the file by cat, vi, nano, etc.) if the output is 1 all things is done in a right way the final step is that exporting some environment variables :   export VIV_PROFILE=1 export VP_OUTPUT=sample.vpd export VP_FRAME_NUM=1000 export VP_SYNC_MODE=1   VIV_PROFILE[0,1,2,3], VP_OUTPUT[any string], VP_FRAME_NUM[1,N], VP_SYNC_MODE[0,1]   Note: VIV_PROFILE[0] Disable vProfiler (default), VIV_PROFILE [1] Enable vProfiler, VIV_PROFILE [2] Control via application call, VIV_PROFILE [3]Allows control over which frames to profile with vProfiler by VP_FRAME_START and VP_FRAME_END.     If application uses GPU smaple.vpd file will create if not there isn't any vpd file. [1] - https://www.khronos.org/egl
View full article
iWave, a reliable embedded solutions provider has now optimized the booting time of its Windows Embedded Compact 7 (WEC7) BSP for Freescale’s SABRE SDP/B platform. Now the WEC7 OS is booting in a short period of time  ~3 seconds for a small footprint OS image with display and touch drivers support, and boot time of ~8 to ~10 seconds for an OS image with basic drivers and OS components support. Why boot time optimization? WinCE7 is a real time OS which will be used in performance-critical applications such as automotive and healthcare units. In most of the cases, booting time will play important role, e.g. if the device is used in rear-view camera system in automotive field, the user needs the device to start working as soon as the reverse-gear is applied. This requirement needs the device to boot and start the camera application within few seconds. This demands a very short OS boot time. Some of the techniques which can be applied for efficient boot time optimization are discussed in this article. Boot phases in WEC7: Boot-loader (eboot) Copying of OS image from booting device (e.g. Micro-SD) to RAM OAL Layer Driver initializations and file system mounting Guidelines for reducing the boot time in different booting phases of WEC7: Boot-loader (eboot): Remove the code that initializes a hardware which is not required in boot-loader. E.g. If booting device is micro-SD, the initialization of NAND is not necessary. So, this redundant code needs to be removed. The eboot menu in eboot is important for debugging of WEC7 OS. But it is not needed in an end product. So, the delay for this eboot menu can be completely removed to reduce 3 seconds of time. In few platforms such as Freescale’s SABRE platform, a default splash screen is used, which updates continuously. This can be removed, and a static splash screen can be displayed, which can save a few milliseconds of time. Remove unnecessary serial debug prints. Copying of OS image from booting device (e.g. Micro-SD) to RAM: This time increases as the size of WEC7 OS image increases. So, select the OS components carefully and remove redundant components from OS image so that the OS image can be copied to RAM quickly. Also remove unnecessary registry keys, dlls and libraries to reduce the OS size. Optimize binary image builder (.bib) file to reduce the run-time image file. Implement Multi-BinFS OS binaries to reduce the OS copying size. As the functionalities/driver supports goes on increasing, WEC7 image size increases. So, the time required to copy the image increases, and RAM size needed to store the OS image increases. The Binary ROM Image File System (BinFS) can fix the two issues. In a BinFS file system, the WEC7 OS binary is divided into multi-binary Image files, and only the one binary (less than 5MBs) is copied into the RAM by the boot-loader. The components in the other binary files are copied into the RAM only when they are required to run. Links that can be referred to implement multi-BinFS in WinCE:      MSDN documentation: http://msdn.microsoft.com/en-us/library/aa516960.aspx; An implementation guide by Freescale: http://cache.freescale.com/files/dsp/doc/app_note/AN4137.pdf You can also include compressing-decompressing mechanisms in boot-loader to achieve even shorter copying time. OAL layer: Remove the code that does unnecessary hardware implementations. Skip the initializations that already done in eboot. Remove any wait/loop/delay if exists. Remove unnecessary serial debug prints. Driver initializations and file system mounting: Analyse and remove all the redundant drivers, check for any loop, wait or delay sequences in driver initialization code. Load any applicable drivers (e.g. USB, sensors) after the OS boot (i.e. after user sees a desktop/application). In WEC7 OS, a driver can be either loaded during booting using device manager/GWES, or can be loaded dynamically whenever necessary. This can be achieved easily by changing the registry key configurations to remove the driver from built-in drivers, a small application to load the driver after OS boot-up, and registry settings to launch this application automatically once the OS is booted. To decide the load order, it is important to check the dependencies of/on a driver. Use appropriate splash screen/progress bar while user waits for OS booting. Remove unnecessary serial debug prints. By effectively following the techniques mentioned, WEC7 based platforms can achieve reduced boot time for quick application access. iWave has optimized the WEC7 booting time on Freescale’s SABRE SDP platform. The booting time is as low as ~3 seconds for a WEC7 OS with standard shell, LCD display, DDraw, I2C and touch driver support, and ~8 to 10 seconds for WEC7 OS with following components: Standard shell Display DDRAW Capacitive touch screen MicroSD USB host – Mass storage and HID Ethernet GPU (OpenVG/GL) Multimedia codecs DirectShow Audio Video Playback Ambient Light Sensor Accelerometer SMP PWM Backlight I2C Debugging using KITL For further information or inquiries please write to mktg@iwavesystems.com or visit www.iwavesystems.com
View full article
This full featured BSP comes with all the core improvements that were made on the SABRE Lite BSP along with support for most of the features available for the SABRE board platform. Please contact Adeneo Embedded for access to the BSP as binary OS images or evaluation source code version at sales@adeneo-embedded.com
View full article
NXP i.MX8M-Mini CPU, quad-core Cortex-A53 Up-to 4GB RAM and 128GB eMMC LTE modem, WiFi 802.11ac, Bluetooth 5.0 2x Ethernet, 3x USB2, RS485/RS232, CAN-FD Custom I/O expansion boards Fanless design in aluminum, rugged housing Designed for reliability and 24/7 operation Wide temperature range of -40C to 80C Wide input voltage range of 8V to 36V Debian Linux, Yocto Project and mainline kernel Support for Docker and Microsoft Azure IoT   IOT-GATE-iMX8 is built around the NXP i.MX8M Mini System-on-Chip, featuring an advanced ARM Cortex-A53 CPU. The SoC is supplemented with up-to 4GB LPDDR4 and 128GB of eMMC storage.   Featuring dual Ethernet, CAN-FD, LTE modem, 802.11ac WiFi and Bluetooth 5.0, IOT-GATE-iMX8 is a highly versatile platform for industrial control, networking, communications and IoT applications. Fanless rugged enclosure design, wide range DC input of 8V to 36V and industrial temperature range of -40C to 80C make IOT-GATE-iMX8 an ideal solution for industrial installations and harsh environments.  IOT-GATE-iMX8 is provided with ready-to-run Debian Linux and full Linux Board Support Package. IOT-GATE Linux packages support Docker and Microsoft Azure IoT.   IOT-GATE-iMX8 spec IOT-GATE-iMX8 evaluation kit IOT-GATE-iMX8 pricing
View full article
Measuring 60mm by 49mm, the MYC-C8MMX CPU Module is a high-performance and cost-effective ARM SoM powered by i.MX 8M Mini which is NXP's first embedded multi-core heterogeneous applications processors built using advanced 14LPC FinFET process technology. The MYC-C8MMX CPU Module provides an outstanding embedded solution for Home and Building Control, IOV, Industrial and Medical Instruments, Human Machine Interface (HMI) and more other general purpose industrial and IoT applications which require optimized power consumption while maintaining high-performance. It is a minimum system integrated with CPU, 2GB DDR4, 8GB eMMC, 32MB QSPI Flash, GigE PHY and PMIC. All controller signals are brought out through two 0.8mm pitch 100-pin Expansion Connectors. It is capable of running Linux and Android OS and provided with plenty of software resources.                         MYC-C8MMX CPU Module Top-view                                         MYC-C8MMX CPU Module Bottom-view   MYIR offers MYD-C8MMX development board for evaluating the MYC-C8MMX CPU Module, the base board has taken great media capabilities of the i.MX 8M Mini processor to provide MIPI-DSI, MIPI-CSI, LVDS interfaces and Audio In/Out ports. It also has strong communication connectivity with 2 x USB 2.0 Host ports and 1 x Micro USB 2.0 Host/Device port, Gigabit Ethernet, MicroSD card slot, USB based Mini PCIe interface for 4G LTE Module, WiFi/Bluetooth and NVMe PCIe M.2 2280 SSD Interface. MYIR can offer design services to help customize the base board according to customers’ requirements.                                                    MYD-C8MMX Development Board Top-view                                                     MYD-C8MMX Development Board Bottom-view   MYIR offers commercial and industrial grades options for CPU Modules. More information can be found at: http://www.myirtech.com/list.asp?id=617
View full article
Boundary Devices has a variety of i.MX6 solutions. The SABRE Lite and Nitrogen6X boards are great tools for hardware and software evaluation. The Nitrogen6X_SOM is a low cost, highly integrated System-on-Module that is ideal for customers looking for rapid product development while maintaining the flexibility of a custom design. The Nitrogen6X_SOM is shown here running the QNX operating system with QT and Storyboard Suite from Crank Software on a 7" 800x480 display.
View full article
The MYC-C8MMX CPU Moduleis designed by MYIR, which is an ARM embedded System-on-Module (SoM) based on NXP’ i.MX 8M Mini Quad Application Processor. The MYD-C8MMX development board is built around the MYC-C8MMX CPU Module, it is a complete evaluation module for your prototype and reference design. It is capable of running Linux and Android OS and provided with plenty of software resources. Typical applications are for Industry Control, Smart City, Smart Home, HMI, Internet of Things (IoT), etc. Let’s see a video introduction of the MYD-C8MMX development board. https://youtu.be/FL_CZiSMYsM The MYC-C8MMX CPU Moduleis using the MIMX8MM6CVTKZAA (MIMX8MM6DVTLZAA) processor chip which is among the NXP i.MX 8M Mini family and combines advanced 14LPC FinFET process technology to provide more speed and improved power efficiency. It has a quad Cortex-A53 core which operates at speeds of up to 1.6 (1.8) GHz. It also has a general-purpose Cortex-M4 400 MHz core processor for low-power processing. Some parameters and target applications of the processor chip are listed below for reference. Parameter Value Core: Number of cores (SPEC) 4 Core Type Arm Cortex-A53 Operating Frequency [Max] (MHz) 1600 (MIMX8MM6CVTKZAA)/1800 (MIMX8MM6DVTLZAA) L2 Cache (Max) (KB) 512 Co-Processor Type Arm Cortex-M4F Co-Processor Frequency (MAX) (MHz) 400 External Memory Supported DDR3L SDRAM, DDR4 SDRAM, ECC, LPDDR4 DRAM, NAND FLASH, NOR FLASH, QSPI GPU 2D / GPU 3D 1x shader, Vivante GC320, Vivante GCNanoUltra MIMX8MM6CVTKZAA (MIMX8MM6DVTLZAA) processor The chip only has MIPI-DSI and MIPI-CSI interfaces and no HDMI or other display interfaces. It can support wide working temperature range from -40 to 105 Celsius degree. MYIR’s MYC-C8MMX CPU Module can support working temperature from -40 to 85 Celsius degree. Parameter Value HW Video Encoder / Decoder HD1080p60 H.264, HD1080p60 H.265 Video/Display features MIPI-CSI, MIPI-DSI PCIe PCIe 2.0 x 1 Audio Specific Modules 8-ch PDM input, SAI USB Controllers 2 Serial Communication 1 x PCIe 2.0,3 x SPI,4 x I²C,4 x UART Junction Temperature (℃) -40 to 105 (MIMX8MM6CVTKZAA), 0 to 95 (MIMX8MM6DVTLZAA) MIMX8MM6CVTKZAA (MIMX8MM6DVTLZAA) processor Target Applications of i.MX 8M Mini Processors Automotive Smart City Heating Ventilation, and Air Conditioning (HVAC) Automatic Vehicle Identification Motorcycle Engine Control Unit (ECU) and Small Engine Control Fleet Management   Inventory and Supply Chain Management Industrial Public Address Systems Air Conditioning (AC) Transport Ticketing Building Safety   Building Security Smart Home Digital Signage Audio/Video (AV) Receivers Energy Gateway Gaming Console Heat Metering Home Control Panel Hospital Admission Machine Home Security & Surveillance Image Analytics Home Sensor Industrial Control In-Home Energy Display Industrial HMI Major Home Appliances Machine Visual Inspection Robotic Appliance Smart Lighting Set Top Boxes Smart Power Socket and Light Switch Small and Medium Appliances Two-way Video Conferencing Smart Speaker Vision, Advanced Sensing and Processing Board Soundbar   Surround Sound and Sound Bars Mobile Wireless or Networked Speakers Cable   Hearables Technologies Input Device (Mouse, Pen, Keyboard) Voice Assistants Smart Watch Voice Control Wireless Charging Pad   Wristband   The MYC-C8MMX CPU Module is a minimum system with PMIC, CPU, RAM (DDR4), Flash (eMMC, SPI Flash) and clock, plus an Ethernet PHY chip. A number of peripheral and IO signals are access through two 0.8mm pitch 100-pin board-to-board expansion connectors.                           MYC-C8MMX CPU Module Top-view                                         MYC-C8MMX CPU Module Bottom-view The MYD-C8MMX base board has mainly extended four parts: 1. Audio interface: added audio chip to extend Audio input and output interfaces 2. External power supply part: added one DC-DC power chip 3. Added one USB hub chip to extend 4 USB from the SoC USB interface, separately used for 4G LTE, two USB Host and one USB on expansion header. 4. Extend RTC module through I2C interface Many other peripheral interfaces are brought out for user extension.                                                    MYD-C8MMX Function Block Diagram                                                            MYD-C8MMX Interface Diagram Among so many interfaces, Backlight, LVDS LCD and MIPI interface are relative to display function. The Backlight interface has 6 pins including two power signals, two GND and two GPIO (one is enabled terminal to control the backlight power and another is PWM to control the brightness of backlight.) The two GPIO control terminals are from the GPIO1_01 and 08 of the i.MX 8M Mini. The LVDS LCD and MIPI interface, total 3 interfaces are for display. But actually i.MX 8M Mini only has one MIPI DSI interface. The other two LVDS interfaces are switched from DSI through one DS12LVDS bridge chip, one is single link LVDS and another is dual link LVDS. So, we can only select MIPI DSI display or LVDS display. Also, we can only select single link LVDS or dual link LVDS. MYIR offers optional LVDS based 7-inch LCD Module MY-LVDS070C including capacitive touch screen to work with the MYD-C8MMX board. The display resolution is up to 1024 by 600 pixels.                            MY-LVDS070C 7-inch LCD Module with Capacitive Touch Screen The MYD-C8MMX has one 2.0mm pitch 2*15-pin male expansion header. PDM and SAI are audio relative interfaces which are brought out from the expansion header.
View full article