After working for more than a year on our iMX6 BSP we are finally ready to put our quality stamp on it and release our iMX6 BSP to our customers!
Here are the main benefits of our iMX6 BSP compared to the other iMX6 BSP offerings on the market today:
Our initial iMX6 BSP release is all about stability. We have done extensive testing to make sure the entire BSP is 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-A9 in combination with the PL310 L2 Cache Controller and we have configured DDR3 per board at the most optimal, fully stress tested, settings.
- No more data corruption!
We have done extensive testing to make sure there are no more data corruption problems when copying large files (on SATA, USB Storage or USDHC) or when sending large amounts of data over the network.
- One BSP for all iMX6 variants
Our BSP supports the iMX6 Solo, Dual Lite, Dual and Quad processor range, so you can scale your HW design up or down without any software development investment!
- One BSP supporting WEC7 and WEC2013
Full drop-in support for WEC7 and WEC2013. Not a single code change required in the BSP.
- Super easy BSP configuration
Very easy configuration of board, bootloader, CPU, cache and page table BSP options through the catalog (see image on the right).
- Production Quality Code
All hardware definitions name-synchronized with the iMX6 Reference Manuals and IOMUX tool. A large amount of 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 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!
- Full source
Including all Cortex-A9 cache routines, SMP, drivers, etc.
We just don't believe in binary. Luke would never have gotten so far if he had to "use the binary"... ;-)
- Very easy to add support for your custom board
All board specific settings in one folder and board file generator included. All you need to support your custom board is an IOMux design file (created with Freescale's IOMux tool for iMX6) and our board file generator that will create a header file with all your board specific settings.
- SPI Flash/SD/MMC Bootloader
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, SD and MMC, and has full support for formatting and partitioning SD and MMC and erasing/writing SPI Flash.
- Full support for LCD8000-97C 1024x768 LVDS + capacitive touch screen
The BSP includes full support for this display, including touch driver support.
- Hive based registry support
Destination fully configurable through the catalog. No registry modifications required.
- GPIO driver + SDK library
Control any (free) GPIO pin from your application.
- FlexCAN driver + SDK library
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.
- ECSPI driver + SDK library
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.
- GPT driver
Use the General Purpose Timer from within your application. Full control over counters, interrupts, etc.
- USB Camera driver
Configured and ready for iMX6.
- Memory Access Utility driver, SDK and application
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.
- Complete bootloader independence
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.
- Fully tested DDR3 setup code
Per board DDR3 stress testing done (FSL DDR3 Stress Test Tool) and DDR3 configured with optimal settings.
- Included JTAG scripts for Lauterbach TRACE32
Just in case you need it.
The above is of course on top of the standard functionality:
- UARTs (5)
- Audio (SGTL5000)
- Camera (CMOS)
- USB (Host, Client & OTG)
- USDHC/SDIO ports (4)
- LVDS (including Touch)
- GPU (HW GFX acceleration)
- VPU (HW Video acceleration)
- Silverlight (OpenGL & DDraw)
Supporting various boards:
- Supporting the Opal6 module and development board by Device Solutions (iMX6 Dual Lite)
- Supporting the open source RIoTboard design by Element14 (iMX6 Solo)
- Supporting the conga-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)
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. This initial release was completely focused on stability and performance. Our next update will add some functionality (PCIe) and focus mostly on power management.
Below are the things we will work on next, ordered by priority:
Develop a flexible, high performance PCIe bus driver and example client driver.
- Power Management
Get the cores to the lowest possible power state when in idle to further reduce power dissipation and CPU heat. The first step is to reduce power dissipation in the low power WAIT mode, the next step will be to implement STOP mode, the step after will be to add DVFS support, and the final step will be to make sure the entire system can suspend and resume correctly.
- Add support for more boards
Add support for Nitrogen6X, Freescale SDP, Digi CC6, Variscite iMX6 SOMs and possibly more iMX6 boards and modules available from various board and module manufacturers.
- Rewrite entire ENET driver
So we fully support NDIS6 and can increase performance.
- Rewrite I2C driver
Currently functional, but we would love to add more functionality and create high quality, maintainable code.
- Rewrite IPU driver
Currently functional, but we would love to add more functionality so we can support true multi-monitor, dynamic resolution, dynamic switching of output, etc.
The above list and order can change depending on customer requests.