Hi all, I am new to Linux space, I have 3+ years of experience in embedded firmware development. I want to learn and develop embedded systems in Linux environment. Can anyone guide me a suitable board to start off. Also if there are any starters materials , it will be really helpful. A lecture, tutorial links for familiarizing kernal space n all. Vishwas
Learning Linux Embedded programming
The unit that you will get the most support here is the mini2440 and using the Pengutronix BSP. You might get some support for the other product as there are some expert users around. Depends on what you want to learn. With about 7 years experience on the ATMEL ATmega series I found using GPIO and SPI a steep learning curve on the mini2440 with Linux. I ended up using Adafruit USB add-on boards for all the peripheral stuff as it was an easy fall-back option! From a support point of view and if you wanted to get into all the fancy media stuff I would suggest looking at the Odroid C1. Download one of the Pengutronix mini2440 BSP versions, a new one just came out, and read through the QuickStart guide. eLinux, Beaglebone Black and the RaspberryPi sites have lots of information.
http://www.cnx-software.com/ lots of useful reviews on this site
Thanks Dave , My intention is to first understand and then to learn developing own BSP, for that first I need to get familiarize with the environment. My intention is to get understand basics, suggest any more boards if available. I will go through the Odroid C1 which you suggested. I need to know info about, what cross compiler to use, I had previously used Visual DSP for my firmware development through JTAg on Blackfin processor. In similar lines how will it be for these boards Odroid C1 or mini 2440 in Linux black box?
With the mini2440 some of the early tutorials were based on Code Sourcery toolchains. Of course there is the GCC variant that has been put together by FriendlyArm. ARM-GCC has good support and is FREE. Specific cross compiler variants usually are provided by the product manufacturer as part of the package. One issue with the mini2440 is that as far as I am aware many of the patches floating around never got into the mainline kernel. Have a look at the patch set in the Pengutronix mini2440 BSP to get an idea of what is required for the mini2440. Be aware that there has been a major change in the way hardware is handled in Linux. Up until a few years ago many ARM variants were not included in the Linux mainline, as it was a support nightmare. You need hardware that is going to be supported, unless you have the skills to change/maintain yourself. The (current) solution to that is the device tree. Personally, I would be looking for good community and device tree support. Although the Nano PC is similar to many of the Odroid product I do not know if it has device tree support. If you plan to work at the lower levels (DSP/hardware) maybe the BeagleBone Black is a better choice. I haven't kept in touch with current ARM dev boards for the last year, so all of the above is just my limited understanding, ie my 2 cents worth!
Yea, Thanks Dave. I will make a study and come to a decision. 1 more question , when we use this BSP can we edit in the kernal space , I mean to learn can I play around in the Kernal Space. I don't want just to use the User space, I need to understand Kernal space , how to re write the device driver on my own. I hope you got my question, I just don't want to use some functions and make the peripheral or application work , I need to understand how to make a particular peripheral work via the driver function.
Pengutronix BSP? Yes, you can write kernel modules. I managed, with some help, to get a SPI kernel module working ... to the test stage. But, as mentioned previously it was quite a mission compared with the ATMEL ATmega series. There is another useful document on their site. Something like "How to become a PTXdist Guru". It will tell you more about the capabilities of their BSP.
Before going with the Pengutronix BSP you need to know if it is going to support all mini2440 variants.
http://comments.gmane.org/gmane.comp.embedded.ptxdist.oselas.community/2012 I don't know the current status. You also have to be careful which display you get.
My two cents worth: - USe some form of Linux distribution on your day to day computer. - Choose a hardware platform with an active community - Things have got considerably easier regarding toolchains : Buildroot, Pengutronix, Yocto. - Perservere: it is a big forest with lots of trees. But it gets easier and easier and you will learn to love it. Good luck and enjoy the journey