Embedded Linux Development

1 Jan

Although having no real world experience in embedded Linux development, I was deeply interested about the subject. I therefore read many books on the subject and the sad part is there is nothing that cannot be found online. I basically wasted money on the book, I therefore present summary of what I read and plenty of web references so that you save money on those books !.

Step 1 – Learning how to develop a Linux distro by hand

There are plenty of projects that help you do this , only difference is that them most books make use of uclibc or newlib instead of the standard glibc . These are the set of resources that will help you get started on rolling a base linux  system from scratch. Also vim is one true editor, learn to use vim – use vim as the IDE ,period.

  1.  http://www.linuxfromscratch.org/
  2.  http://www.tldp.org/LDP/Pocket-Linux-Guide/html/
  3.  http://www.linuxfromscratch.org/hints/downloads/files/uclibc-bootfloppy.txt
  4.  http://freshmeat.net/projects/natld/
  5. http://www.xs4all.nl/~lennartb/installdisk/index.html
  6. http://modest-proposals.com/Hacklin.htm
  7. http://buildroot.uclibc.org/  – Buildroot website

The modulus of operandi is as follows

  • Build a root file system structure with what you need
  • Compile the  kernel with barely enough features needed
  • Installing the boot loader , In previous linux versions pre 2.6 i guess , you may get away without installing a boot loader . A summary linux bootloaders is given in following pages
  1. https://en.wikipedia.org/wiki/Comparison_of_boot_loaders
  2. http://lennartb.home.xs4all.nl/bootloaders/
  3. Network booting Linux :- http://www.sanitarium.net/golug/netboot.html
  4. http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch07_:_The_Linux_Boot_Process#.UbgNE_mRAkU
  • Setting various configurations files like initab, fstab etc

NOTE: if you are completely new to linux environment , you should check out the guide and tutorials in tldp.org  ( The Linux Documentation Project ) 

Step 2 – Learn and play around with POSIX API

Linux is after all a POSIX complaint system there are plenty of resources available to learn  POSIX programming .

  1. http://tldp.org/LDP/lpg/index.html – Linux Programming Guide
  2. http://www.advancedlinuxprogramming.com/downloads.html  – Advanced Linux Programming , available for download

Step 3- Learn various Linux File systems

Conventional ones include ext based on ones and those with journaling support  brtfs , jfs ,xfs , ReisesFS . Linux supports something known as VFS – or virtual files system which provides a generic interface that is used across files systems . The concept is very similar to inheritance concept in C++ , although Linux kernel is written in C , VFS is a good example that shows that modularity can be attained even if the underlying language does not support it .

Linux includes support for various embedded file systems like f2fs , – file system optimized for nand flash , read only squashfs file system  , tmpfs for storing stuff in ram.  The  mtd devices are found in /proc/mtd  . Typical embedded file systems include jffs2  , yaffs2 , ubifs ,

Step4 Learn about device drivers and about the linux kernel

Programming device drivers : http://lwn.net/Kernel/LDD3/ .   The best book on linux kernel in my opinion is by Bovet and Cesati. http://www.amazon.com/Understanding-Linux-Kernel-Third-Edition/dp/0596005652 . It is very well worth your money . But never hesitate to play around and tinker with stuff ! .  After this you have probably gained mastery over all aspects !.  I am listing few libraries that came to my head  . The list is no where near complete.

Light Weight Libraries/Tools to look at

C Libraries:

  • uclibc :- http://uclibc.org ( also look at busybox !)
  • eglibc:- eglibc.org
  • dietlibc
  • klibc
  • pdpc – public domain c library

Networking:

  • dropbear  -ssh
  • webservers :- lighthttpd  , boa , thttpd
  • avahi , bind , iw tools

For Graphics :

  • SDL – libSDL.org
  • DirectFb – directfb.org
  • Kdrive
  • MicroWindows / NanoX – microwindows.org
  • http://www.exploits.org/v4l/  – Video for linux
  • TinyGL by fabrice bellard

Databases:

  • sql lite

 

I summarize my bookish knowledge on embedded linux in general , if someone thinks more can be added , drop in a comment. I am almost sure no even a single soul reads my blog but i am hoping that some random soul will comment and suggest some improvemnts !

 

 

Advertisements

One Response to “Embedded Linux Development”

  1. gaming monitors 2014 September 9, 2014 at 12:13 pm #

    each time i used to read smaller posts which as well clear their motive, and
    that is also happening with this piece of writing which I
    am reading now.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: