iMX6 BSP
The GuruCE iMX6 BSP is a high quality, well structured, 100% OAL stable and production ready full source BSP for WEC7 and WEC2013 supporting any board containing an NXP iMX6 UltraLight, ULL, Solo, DualLite, Dual, Quad, DualPlus or QuadPlus processor.
You can download evaluation WEC7/WEC2013 kernel images to evaluate our BSP on a variety of off-the-shelf boards and read what our customers say about our BSP.
Please contact us for more information and pricing.
Here are the main benefits of our iMX6 BSP compared to the other iMX6 BSP offerings on the market today:
- 100% OAL Stability
- Performance
- Super fast boot
- Absolutely no data corruption
- High Assurance Boot (HAB)
- One for all!
- One BSP supporting WEC7 and WEC2013
- One kernel for all displays
- True multi-monitor support
- Display clone support, including automatic scaling
- Multi display bootsplash support
- 100% flicker-free from boot splash to CE
- Super easy BSP configuration
- REAL Production Quality Code
- Full source
- Template Device Driver
- Very easy to add support for your custom board
- SPI Flash/SD/MMC/SATA/NAND Bootloader
- CEWriter
- Prepare eMMC from SD
- CE Updater Application and Library
- PCIe bus driver
- HDMI auto-detection, hot-plug and dynamic resolution changes
- Full support for a myriad of LVDS displays, HDMI resolutions and LCDs
- Hive based registry support
- Mount as root support
- File-system options
- GPIO driver + SDK library
- FlexCAN driver + SDK library
- ECSPI driver + SDK library
- GPT driver
- PWM driver
- WDOG driver
- USB Camera driver
- Memory Access Utility driver, SDK and application
- SATA
- Complete bootloader independence
- Fully tested DDR3 setup code
- EEMBC’s CoreMark®
- Included JTAG & DDR3 scripts for Lauterbach TRACE32
We have done extensive testing to make sure the entire BSP is 100% stable, in multi-core and single-core configurations, with or without caching, at stress and at rest. We have completely rewritten all of the low-level initialization code, all the timing code (CCM, system & performance counters), all of the cache code, all of the SMP (symmetric multiprocessing/multi-core) code and most of the interrupt handling code.
We have implemented all the cache optimizations possible for the iMX6 Cortex-A7 and Cortex-A9 in combination with the PL310 L2 Cache Controller and we have configured DDR3 per board at the most optimal, fully stress tested, settings. The GuruCE iMX6 BSP is (up to 6x) faster than any other iMX6 BSP on the market today. Speed guaranteed!
We now support LZ4 compressed kernel binaries; we supply a tool PackBin and our OS Designs automatically compress your kernel image at build-time. We have also optimized the cache settings in the bootloader to speed up loading (and flashing) of the kernel. Together with immediate bootsplash display this guarantees an awesome user experience.
We have done extensive testing to make sure there are no data corruption problems (that are plaguing many other i.MX6 BSPs on the market today) when copying large files (on SATA, NAND, USB Storage or USDHC) or when sending large amounts of data over the network.
Out-of-the-box support for High Assurance Boot, aka HAB. Enabling HAB is as easy as checking a box in our BSP catalog. Bootloader and kernel images are signed automatically when you build your OS Design. The whole process is seamless integrated into the CE build system.
Our BSP supports the iMX6 UltraLight, ULL, Solo, DualLite, Dual, DualPlus, Quad and QuadPlus processor range, so you can scale your HW design up or down with ease.
Full drop-in support for WEC7 and WEC2013. Not a single code change required in the BSP.
Simply select the resolution and display output (LCD, LVDS or HDMI) in the bootloader. No need for separate kernel builds!
Real extended-desktop functionality in Windows Embedded Compact. Multi-monitor setup dynamically configurable in the bootloader menu.
Clone the primary display to any secondary display. Configure your primary and secondary display in the bootloader, enable Clone Mode, and you're done! The primary display image will be scaled up or down automatically if the resolution of the secondary display is different from the primary display resolution.
Show a bootsplash image on all displays milliseconds after power is applied.
Absolutely no flicker from boot splash image to CE desktop or your application.
Very easy configuration of board, bootloader, CPU, cache and page table BSP options through the catalog (see image on the right).
All hardware definitions name-synchronized with the iMX6 Reference Manuals. A large amount of NXP (formerly Freescale) code re-factored, cleaned up & bug fixed, and all redundant code removed and restructured. No more searching for driver code distributed throughout the BSP in different folders. Now the BSP is easily maintainable, well-structured & production ready. If you have worked with BSPs from NXP/Freescale or some of our competitors before you know what this means and why this is so important. Code quality and BSP structure is everything!
Including all Cortex-A9 cache routines, SMP, clocking, drivers, etc.
We just don't believe in binary. Luke would never have gotten so far if he had to "use the binary"... ;-)
We've included a fully functional template driver that can be used as a starting point for developing your own drivers. The template driver contains code to retrieve configuration settings from the registry, mapping hardware, starting and stopping an interrupt handler, power management, IOCTL handling, and SDK and application code showing how to use the SDK.
All board specific settings are contained in a single folder. All you need to add support for your custom board is an xml design file (created with NXP's Config tool for i.MX) and we will generate a header file with all your board specific settings for you.
Our iMX6 bootloader offers many more configuration options and features, like selecting the serial debug port to use, blowing fuses, configuring the Ethernet settings to be used in Windows Embedded Compact and starting the kernel with a clean registry hive. It also fully supports booting from SPI Flash, SATA, NAND, SD and MMC, and has full support for formatting and partitioning SATA, NAND, SD and MMC and erasing/writing SPI Flash.
Our CEWriter tool allows you to very quickly and easily prepare an SD card or SATA drive with a bootloader, kernel and splash image. No more super slow and cumbersome use of the old and outdated cfimager. Welcome to the 21st century!
Our bootloader allows you to flash a soldered-down eMMC chip with the firmware files stored on an SD card. This means you can use our CEWriter tool to prepare the SD, boot the device and copy the firmware partition on eMMC through a simple bootloader menu option.
Update the bootloader, kernel and bootsplash image from within CE. You can use the supplied CEUpdater application or call the flashupd library functions from your application.
Full support for PCIe, including enumeration over bridges and switches!
This means you can plug in a 1360x768 monitor and have the CE desktop shown in that resolution, then unplug the monitor and plug in a 1920x1080 monitor and CE will dynamically change resolution and show the desktop in 1920x1080 resolution, all this of course without the purple line on the left (a long standing problem in all the other iMX6 BSPs available).
Including various up to 16 points multi-touch capacitive and resistive touch controllers.
Destination fully configurable through the catalog. No difficult and error-prone registry modifications required.
Medium to mount as root fully configurable through the catalog. No difficult and error-prone registry modifications required.
Need TexFAT with write-through enabled? Simple set the options in our catalog. No difficult and error-prone registry modifications required.
Control any (free) GPIO pin from your application. Configure reserved pins in the registry.
Fully configurable FlexCAN driver. Access and control 2 separate CAN buses from your application with full configuration and timing control. Our High Performance FlexCAN driver for real busy CAN buses is available for iMX6 as well.
Fully configurable, DMA enabled, Enhanced Configurable SPI driver. All functionality offered by the iMX6 is supported and configurable in our driver. Unfortunately the iMX6 still contains the same silicon bug as on the iMX53, but at least our driver warns you when you hit this condition.
Use the General Purpose Timer from within your application. Full control over counters, interrupts, etc.
Use any supported PWM channel from within your application. Full control over all available PWM features.
Control the iMX6 hardware watchdogs directly from your application.
Configured and ready for iMX6.
For easy debugging and direct hardware access from within CE. Similar functionality as memtool in Linux.
Fully functional SATA driver with much faster drive detection algorithm and support for very large disks.
The low-level kernel initialization code takes care of everything needed by Windows Embedded Compact. It does not depend on any configuration done by the bootloader. This means you can choose whatever bootloader you fancy. You can use our included and feature-rich eboot, or any other bootloader you like better.
Per board DDR3 stress testing done (FSL DDR3 Stress Test Tool) and DDR3 configured with optimal settings.
Benchmark the performance of your device and compare it against other devices or configurations.
Just in case you need it.
The above is of course on top of the standard functionality:
- ADCs (on UL/ULL)
- UARTs (5)
- Audio (SGTL5000, WM8962, AIC310x)
- Camera (CMOS)
- I2C
- Ethernet
- USB (Host, Client & OTG)
- USDHC/SDIO ports (4)
- Display:
- HDMI
- LVDS (including Touch)
- GPU (HW 2D, 3D & vector graphics acceleration)
- VPU (HW Video acceleration)
- Silverlight (OpenGL & DDraw)
OpenGL-ES, OpenVG, OpenCL.
Supporting an ever growing list of boards
- Supporting the open source RIoTboard design by Element14 (iMX6 Solo)
- Supporting the Opal6 module and development board by Device Solutions (iMX6 Solo, DualLite, Dual, Quad, DualPlus & QuadPlus)
- Supporting the QMX6 modules and development boards by Congatec (iMX6 Solo, Dual Lite, Dual and Quad)
- Supporting the SABRE Lite board by Element14 (iMX6 Quad)
- Supporting the BD-SL-iMX6 (formerly known as SABRE-Lite) board by Boundary Devices (iMX6 Quad)
- Supporting the Nitrogen6X board by Boundary Devices (iMX6 Quad)
- Supporting the Nitrogen6_VM board by Boundary Devices (iMX6 Solo)
- Supporting the ConnectCore6 board by Digi (iMX6 Quad)
- Supporting the SABRE Smart Device Platform (SDP) boards by NXP (iMX6 DualLite & Quad)
- Supporting the SABRE board for Smart Devices (SDB) boards by NXP (iMX6 DualPlus & QuadPlus)
- Supporting the TS-4900 boards by Technologic Systems (iMX6 Solo & Quad)
- Supporting the Colibri iMX6 modules and development boards by Toradex (iMX6 Solo & DualLite)
- Supporting the NXP MCIMX6ULL EVK (ULL) by NXP
- Supporting the Variscite VAR-SOM-MX6 (Dual/Quad) VAR-SOM-MX6 Evaluation Kit by Variscite
- Supporting the Variscite VAR-SOM-SOLO/DUAL (Solo/DualLite) VAR-SOM-SOLO/DUAL Evaluation Kit by Variscite
- Supporting the Advantech DMS-BA16 Medical Computing System (Dual/Quad) on a Q7-DVB carrier board.
- Supporting the Emtrion DIMM-MX6 (Dual/Quad) module on a Cadun baseboard.
- Supporting the iWave iW-RainboW-G15M-SM SODIMM System on module on an i.MX6 SODIMM Development Platform.
- Don't forget: Adding support for any custom board containing an iMX6 series SOC usually takes no more than a day using our BSP!
Our business model
Our business model is all about delivering a high quality BSP that we fully support and stand behind. We want our customers to be able to get to market quicker, without having to spend an enormous amount of time and money on finding and fixing bugs. We sell & support a high quality, tested BSP and if needed our customers can work with GuruCE to add additional functionality or modify functionality specific to the customers needs.
Dedicated & responsive support from real experts!
You connect directly to the highest level support engineers that will respond to your query within 48 hours with a high quality answer that will help you, not frustrate you.
Is it perfect?
Perfection is something we strive to achieve, but we will not pretend our BSP is perfect. There's always something to improve or functionality to add. We keep working on this BSP, adding new features as we go. With a support contract you get access to all fixes and new features we add to our iMX6 BSP.