Embedded Linux, why oh why

I have wanting to learn embedded Linux for some time now. I was on vacation this week and decided that now is the time to pull out the beaglebone black that has been sitting on the shelf for months and start learning.

First thing was to update the firmware, very simple.
After that is where I saw that the learning curve was akin to climbing Everest.

After 3 days of playing and Googling, I was finally able to use eclipse, cross compile, and run some code on the BBB. Now that I was able to scratch the surface of this and learn a very little bit I am utterly surprised at how stable everything it and all that you can do with it.

My confusion is this. There are so many embedded Linux boards out there that are very low cost. Many < $80. So why is it like pulling teeth to gather information on how to program these thing? I would have though before starting this venture that there would be sites opon sites all having a wealth of information on how to do things. Yet all I can seem to find is people showing off what they have done with no explanation how they got there.

Then this does not even get to the driver aspect of it. So say I want to slap a new LCD onto the BBB, it will obviously have different timings than what is built in. So how does one write a driver for the new LCD so that the OS knows how to communicate with it.

From the little I have learned it seems that embedded Linux is VERY powerful, yet learning to use it effectively is a whole other story.

Seems to me a guy who knows this stuff could make a mint if all he did was create a video series dedicated to embedded Linux using a common low cost board like the BBB.

2 Likes

Thanks for sharing, I hate steep learning curves.

This guy has created some good stuff to watch, not sure he covers what you need: http://www.youtube.com/playlist?list=PLF4A1A7E09E5E260A

1 Like

Hmm, I always get suspicious when I hear Linux, don’t know why :think:
It’s always like, its so super, so open.
And I think: Open Source, but ‘closed access’ for non Linux Geeks and freaks.

1 Like

@ njbuch

I have watched all of his videos, IMHO he is one of the best ones out there.
But I am starving for much more. Such as how to write drivers. and when these guys want to install something they say apt-get install xxxx . well how do they know that its even out there. where is this list of software. bla…bla.bla…

I just ordered another Linux board called the mars board for $58. Its insane all you get for such a low cost.

http://www.marsboard.com/

1.AllWinner A10 ARM Cortex A8 CPU @ 1GHz + Mali-400 GPU
2.Recover Key
3.4GB Nand Flash
4.2.00MM Power Socket
5.Mini HDMI 1.3 socket
6.SATA 2.0 socket
7.mrcro SD card (TF card)socket
8.1GB DDR3 SDRAM
9.USB 2.0 OTG
10.2 x USB 2.0 Host
11.RJ45 Ethernet

@ JDAL - Wow! That board is amazing! Maybe worth learning Linux just to use this board. Please let us know how it works out.

Nice board and I see you could add an LCD interface to it but as JADAL says, how do you create the driver for this?

I like the idea that this can also run Android. Having done a couple of apps for a mobile phone and an embedded design, there is actually far more out there for Android than there is for Linux. Even creating drivers using the NDK is available. I have used this very thing to create an I2C and a Serial Port driver that can be access from a normal Android APP.

At the price of this board, I may just order one to play with :slight_smile:

I am downloading the Android source now to check it out. I recently installed a second drive to my computer and running Ubuntu 10.04 as a virtual machine and successfully compiled Android with it.

Apress has a nice book on embedded linux … Google “pro linux embedded systems pdf”

@ Dave McLaughlin

Since you mentioned Android then you might really like this for $49.

This book is the definitive source, and its free: Linux Device Drivers, Third Edition [LWN.net]

Regarding software packages for the individual distributions, you should look to decide on a distribution and then install the desktop edition, where there is nearly always a package manager, with a catalogue of packages.

I’ve got an ARM11 board here running Gingerbread 2.3 but it’s a bit on the slow side. Linux on the other hand is much faster.

I have another board running a Cortex A8 that runs ICS and that is much better. Also have a capacitive touch screen so much better than the resistive types that are going around.

http://andahammer.com/tiny210sdk-cap/

I’ve got one of those running ICS and Homeseer Touch. There is also an application running in the background that talks to a GHI Cobra 2 board via WiFi. It is data logging the weather station information that the Cobra 2 is sending out on UDP. :slight_smile:

I have a couple of Gumstix boards that have been collecting dust for years. I had to revive an old laptop and install Ubuntu on it so I could write code and cross-compile. But like it was mentioned before, the learning curve was too much.

The main question I have is has anyone been able to create a GUI based program on a linux / embedded linux / android based board? What is the linux equivalent of Visual Studios or even Glide?

When I had my Gumstix experience it was before Android and the only way I found to develop a GUI was using Qt. I’m assuming now you could also use the Android ADK?

Arduino has also jumped into the Linux camp with the Intel Intel Galileo board

http://arduino.cc/en/ArduinoCertified/IntelGalileo

If the board can run Android then you can simple use the Android SDK to build your apps. It’s nice as it’s cross platform so anyone can use it with whatever OS they have.

There is now the new Android Studio instead of Eclipse although at present it does not support working with the NDK so you are limited to pure Android only for the time being.

I looked at Linux before but the learning curve on QT was too steep. Android had the advantage of many books and good tutorial sites. It was also the fact that I would need a Linux PC to do the dev on that limited my going forward. Now I have the Virtual device I could go back and try but I have enough headache with what I am working on just now without adding any more to it :slight_smile:

The closest equivalent of Visual Studio is Qt, which includes an immense GUI library that is easy to use and simple to style. You can use C++ or a mixture of QML (very CSS like) and a Javascript like environment, called Qt Quick. Both can run on a number of platforms from the same code including Windows, Linux, MAC and Android.

If you prefer C#, check out Mono project and MonoDev

Have you looked at the Yun?

http://arduino.cc/en/Main/ArduinoBoardYun

I think this may simplify the whole process in some cases (networking for example) – however if you need the Linux side’s power, your still in the same boat.

Don’t forget about Tre:

;D

Guys! I think I have finally found the golden goose for all of this.
Last night I found this place.

I said ya, its probably another joke that there are a ton of settings for it.
But I decided to give it a go.
They have this great quick start guide for the BeagleBone Black here:
http://visualgdb.com/tutorials/beaglebone/

So I installed it, took just seconds, opened VS2012 and followed the directions.
All the steps are clear, and within a minute I had the example running on the board.
It compiles the app, download it and runs it. Far better than anything I have see with using Eclipse, where you have to set up a remote console and copy the file every time.
This does it all in one shot & has debugging built in!

I then moved onto a better example using Threading. At first the compile failed, then I went into project settings-> additional linker inputs and added “-pthread”. Recompiled, and worked perfect.
Have 4 threads running.

The only downside I can see for many is that it will not work with any of the VS express versions.