GuruCE to release a High Quality iMX6 BSP supporting iMX6 Solo, Dual Lite, Dual and Quad

GuruCE has been working on a high quality iMX6 BSP for WEC2013 since the beginning of 2014, and will be releasing this BSP early 2015.

Microsoft has just released a SAMPLE BSP for iMX6 through Update 11 for WEC2013, so why would you wait for the GuruCE iMX6 BSP? Here are some compelling reasons:

  • 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!
    We are contemplating to add support for iMX6 Solo Lite as well. Please let us know if you are interested in having this!

  • Production Quality Code
  • All hardware definitions name-synchronized with the iMX6 Reference Manuals and IOMUX tool. Almost all Freescale code re-factored, cleaned up, bug fixed, redundant code removed and restructured. 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 DVFS, GPC, Cache routines, SMP, PCIE and PMU code.
    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.

  • Lots of added functionality and fixes:
  • Opal6 Module

    • 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.

    • GPT driver
    • Use any GPT 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 to memtool in Linux.

    • Full SD & eMMC support
    • Including formatting and partitioning in the bootloader.

    • Complete bootloader independence
    • This means you can choose whatever bootloader you fancy. We support eboot out-of-the-box.

    • Power optimizations
    • The BSP and bootloader are both optimized for power. No unnecessary open clock gates, full control of CCM (completely rewritten code), DVFS support, etc.

    • Fully tested DDR3 setup code
    • Per board DDR3 stress testing done (FSL DDR3 Stress Test Tool) and DDR3 configured with optimal settings.

    • Organized catalog and added many configuration settings to catalog
    • Click and forget configuration of your OS Design! Configuration options in catalog: CPU type, RAM size, Cache options, ARM errata options.

    • Serial Debug UART selection in bootloader
    • No more unnecessary recompiling of the entire kernel, just to change or disable the debug output serial port.

    • Included JTAG scripts for Lauterbach TRACE32
    • Just in case you need it.

    Opal6 DevKit

  • The above is of course on top of the standard functionality:
    • Audio (SGTL5000)
    • Camera (CMOS)
    • I2C
    • Ethernet
    • PCIe
    • UARTs (5)
    • USB (Host, Client & OTG)
    • USDHC/SDIO ports (4)
    • Display:
      • HDMI
      • LVDS (including Touch)
      • GPU (HW acceleration)
      • VPU (Video acceleration)
      • Silverlight (OpenGL & DDraw)

  • 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)
  • Supporting the Sabre-SDP board by Freescale (iMX6 Dual Lite and Quad)
  • And last but certainly not least:
    MVP Logo

  • Dedicated & responsive support from real experts!
  • You connect directly to the highest level support engineers.


Love to see the BSP. How is it progressing? Impatient, as always..... :)

On track for full release early 2015...

Having battled with the imx28 ce 6.0 bsp and several nasty bugs I am looking for a nice stable bsp (with good support) for our next imx6 based board.

This all sounds very interesting! From my point of view NAND boot would be useful but I guess eMMC may be a suitable alternative.

Ease of lcd modification and support for implementing alternative DDR density and manufacturer would be great. Having said that the imx28 bsp wasn't that hard to modify for these elements.

We would probably need help implementing an I2C touch driver for a cap touch display - we want to move from 4w resistive.

Finally good support for USB mass storage would be great! Thanks, Mark

Hi Mark,

Thanks for your interest. We could add NAND support, but at this moment we don't have any board that supports raw NAND, so we simply have no way to test it. The IPU driver is a sore spot and we'd love to do a full redesign/rewrite of that, but it will be outside of what we can do for our initial release. We hope to be able to tackle this driver next year! We will still port the display functionality from our iMX53 BSP so modifying LCD settings is at least a lot easier and you can dynamically (at runtime) select which display to output to from within the bootloader.

Changing DDR settings is already very easy. All board specific settings are in 1 folder (2 files), so all is nice and neat and easy to modify. All you need for your board is a full IOMux file and our generator will create the board specific files for you from that xml. You'd of course use the FSL DDR3 Stress Test tool to find the optimum DDR3 settings for your board.

The BSP supports capacitive multi touch (HSD100) and we have plans to add resistive touch support as well. We can of course help write a touch driver for any touch controller you choose, whether capacitive or resistive.

USB indeed is, and always has been, a problem in CE. Most of the problems have been fixed over the years, but I know there are still some lingering. This is however a problem in the Microsoft USB stack and class drivers, and this is outside of the scope of the BSP code. So far we have not encountered any issue though, but I'm sure you can still find some USB keys that don't work well...

Hi Michael,

I understand why you see an option to offer your alternative BSP ;-)

I would give you some tips which could really make a difference with other providers:

- boot from NAND/NOR
- routines for burn eFuses
- activate DMA in most drivers
- Integration of the code generated by the FSL MUX tool for pin muxing
- SPI as master and slave
- I2C as master and slave
- KITL over USB or Ethernet

and well, as probably you now, easy adaptable. That is, if someone needs to add a new TFT display, that the changes needed should be easy to be done. I know that it sounds obvious, but some providers hardcode everything forgetting that end users won't be using the FSL eval boards in their products.

Ok, hope it helps.


Hi Alex,

Thanks for your feedback!

In response to that:

  • Boot from NAND/NOR
  • No support in our initial release, but full SPI Flash boot is supported in our initial release. Depending on customer requests we can add NAND and NOR support (but our experience is that most customers have already moved, or are going to move, to eMMC or SD).

  • Routines to burn eFuses
  • Full support in the bootloader at initial release :-)

  • Activate DMA in most drivers
  • Can you elaborate which drivers you think are missing DMA?

  • Integration of code generated by the FSL Mux tool for pin muxing
  • Supported in our initial release. We developed a tool that takes the FSL IOMux xml file and generates a board header file out of that. One folder contains all board specific settings, so only 1 place to change IO muxing setups (but every driver is still fully responsible for its own setup, so if a driver is not loaded, the pins won't be setup unnecessarily)

  • SPI as master and slave
  • Fully supported in our initial release :-)

  • I2C as master and slave
  • Driver rewrite planned for I2C, hopefully we can put it in our initial release...

  • KITL over USB or Ethernet
  • KITL over Ethernet fully supported, KITL over USB; planning to add support in our initial release.

  • Easily adaptable
  • Yes, that is our intention! We have done a massive amount of work to make it easier adaptable, but as you know; the existing code base (from which we started our work from in early 2014) is quite the opposite. There's still a lot we want to add, but we have to balance between release date and functionality...