This is a question we’re often asked, and we generally respond through e-mail. Since we’re getting the question a lot lately from new customers, a blog post is in order.
This seems like a question that should have a clear answer, right?
I have this machine, now how do I program for it?
Fortunately, our first response has to be a question:
How do you want to program it?
The days of a single environment for machines like ours are gone.
Options, options, options…
Here’s a partial list of programming environments supported by our i.MX boards:
- Timesys Linux
- Green Hills Software
- Windows Embedded Compact
- Ubuntu – Also see this post
- Yocto – Also see this post describing Yocto, and this post for the latest release.
- RidgeRun Embedded Solutions – Also see the Wiki page on Nitrogen6x, their demo page, and our video of the demo in action.
Note that not all of these are supported on each of our boards and support for any given environment does differ over time.
Also note that we’re not trying to dodge the question. Each of the environments above is a good choice for customers with particular goals and backgrounds.
Our objective is to get you up and running as quickly as possible using as much of our boards as you need. The best path can and should depend on your needs and your starting point.
If you’ve read through our other blog posts, you’ll see references to many of the environments listed above, and we’ll be adding posts describing our experiences with the others in the coming days and weeks.
What do we support?
As an SBC vendor, our primary job is to support the hardware.
Hardware is useless without software though, and we can’t even test the hardware without some complement of software. Because of that, we support a boot loader (U-Boot) and various flavors of the Linux kernel.
The sources are on Github. Notable trees include:
- the U-Boot tree for Freescale-derived boot loaders,
- the Linux kernel tree for Freescale-derived i.MX6 kernels, and
- the Linux kernel tree for Freescale-derived i.MX5X kernels and older Davinci and PXA kernels.
Note that there are a number of branches. Please check out the Support tab on our product pages for details of your particular board, but in general, you’ll see things released in pairs. Because we build upon software provided by Freescale, we create branches from each Freescale release named boundary-release-name.
Freescale’s releases are generally named something like imx-android-rX.Y and non-Android Linux releases are named L(kernelversion)-(date). Freescale has been on a cadence of roughly quarterly releases and we will follow each by a couple of weeks.
We do also offer guidance for how to use some of the userspace environments listed above, but because of their size, we can’t support all of them.
Finally, we do sometimes offer support for other environments, including Windows Embedded, but this is done on a project-by-project basis.
Contact us at mailto:firstname.lastname@example.org to discuss your particular needs.
Who else supports our boards?
There are large and growing communities of folks out there that are supporting the projects listed above. The open-source parts are often supported through mailing lists and user groups. The commercial and industrial projects have terrific teams that can provide assistance to yours.
Some of those that we’ve been working with include:
- Freescale. It’s these folks you have to blame for all of this i.MX power. Be sure to check out the i.MX Community site.
- Timesys. Timesys is focused on getting embedded teams to market fast with both embedded Linux and Android. They offer commercially-supported tools, top-notch training and have a strong professional services team with real depth on i.MX.
- Adeneo Embedded is a systems integrator that offers services from OS bring-up to application development. They have a long track record of providing software for i.MX processors, including Windows Embedded, Android, and Linux.
- QNX. If you want a hard real-time operating system with all the bells and whistles, you might want to talk to them about QNX® Neutrino®.
- Green Hills Software. For an O/S with total reliability, absolute security, and maximum real-time performance, the INTEGRITY RTOS® may be a good fit.
- RidgeRun Embedded Solutions. If your application involves multimedia, whether it’s camera streaming, or video playback, you should contact Ridgerun. This team is advancing the state of the art in gstreamer on i.MX6.
The various open-source communities aren’t comprised of hobbyists. Expert professional developers are behind each of these projects and the individuals and companies involved are sometimes available for training, consulting, and development.
As an example, take a look at DENX Software Engineering, the folks that brought us Das UBoot, the Universal Boot Loader.