Your SlideShare is downloading. ×
0
Module-4 Introduction Embedded
Linux
Tushar B Kute
tushar@tusharkute.com
http://snashlug.org
contact@snashlug.org
What is Embedded Linux?
●
porting the Linux kernel to run on a particular
CPU and board which will be put into an
embedded...
Why Embedded Linux?
●
Royalty-free
●
Strong networking support
●
Has already been ported to many different CPU
architectur...
Distributions
●
Commercial:
– MontaVista
– BlueCat Linux
– …
●
MMU less
– uCLinux
●
Hard Real-time support
– RTLinux
4
Embedded Linux System
●
Boot loader
– U-boot
– GRUB
– …
●
Kernel
●
File system
– Many types
5
Building system
●
Configure and compile Toolchain
– Better idea: use already made
●
Configure and make the boot-loader
●
I...
Development
●
Choose C library
●
Use the toolchain to create
– User space applications
– Kernel modules (drivers)
●
Many f...
Free tools
●
C library
●
Toolchains
●
Emulators
●
Root file systems
●
Graphical toolkits
●
….
8
C library
http://www.gnu.org/software/libc/
●
License: LGPL
●
C library from the GNU project
●
Designed for performance, s...
uClibc
http://www.uclibc.org/ for CodePoet Consulting
License: LGPL
Lightweight C library for small embedded systems, wi...
newlib
http://sources.redhat.com/newlib/
Minimal C library for very small embedded systems
●
Lets you remove floating poin...
klibc
http://www.kernel.org/pub/linux/libs/klibc/
“Kernel C library”
Tiny and minimalistic C library designed for use in ...
uClibc toolchains
Free Electrons uClibc toolchains
http://free-electrons.com/community/tools/uclibc
Run on i386 GNU/Linux...
Platform specific toolchains
ARM
●
Code Sourcery (glibc only, used by many):
http://www.codesourcery.com/gnu_toolchains/ar...
Toolchain building utilities
Buildroot: http://buildroot.uclibc.org/
●
Dedicated Makefile to build uClibc based toolchains...
Scratchbox
http://scratchbox.org/ - A cross-compiling toolkit project
Makes it easier to cross-compile
a complete embedde...
qemu
http://qemu.org
Fast processor emulator
using a portable dynamic translator.
Full system emulation
Emulates the proc...
ARM emulators
Only Free Software, of course!
●
SkyEye: http://skyeye.sourceforge.net
Emulates several ARM platforms (AT91,...
Other emulators
●
ColdFire emulator
http://www.slicer.ca/coldfire/
Can boot uClinux
Minicom
●
Definition: serial communication program
●
Available in all GNU / Linux distributions
●
Capabilities (all throug...
General purpose toolbox: BusyBox
http://www.busybox.net/
Most Unix command line utilities within a single executable!
It ...
ssh server and client: dropbear
http://matt.ucc.asn.au/dropbear/dropbear.html
Very small memory footprint ssh server for ...
Benefits of a web server interface
Many network enabled devices can just have a network interface
Examples: modems / rout...
Linux porting projects
Useful to find patches, binaries, documentation,
toolchains...
Only ports for embedded systems are ...
Useful web sites
LinuxDevices.com: http://linuxdevices.com
●
Weekly newsletter with news and announcements
about embedded ...
Example:
●
Download CodeSourcery's toolchain installer for
GNU/Linux target for IA32 host
●
Install it: sh arm-2008q3-72-a...
Installation
●
sudo apt-get install gcc-arm-linux-gnueabi
●
sudo apt-get install android-tools-adb
Engineers are not users, they are creators!
This presentation is created using LibreOffice Writer 4.1.0.4 available freely
under GNU public license.
Thank you
Upcoming SlideShare
Loading in...5
×

Module 4 Embedded Linux

2,486

Published on

Introduction to Embedded Linux.
http://tusharkute.com
http://snashlug.org

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,486
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
122
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Module 4 Embedded Linux"

  1. 1. Module-4 Introduction Embedded Linux Tushar B Kute tushar@tusharkute.com http://snashlug.org contact@snashlug.org
  2. 2. What is Embedded Linux? ● porting the Linux kernel to run on a particular CPU and board which will be put into an embedded device. ● There are many companies that sell embedded Linux solutions. ● These usually include a ported Linux kernel with cross-development tools, and sometimes with real time extensions. ● the APIs and kernel codebase are the same for embedded Linux as desktop Linux 2
  3. 3. Why Embedded Linux? ● Royalty-free ● Strong networking support ● Has already been ported to many different CPU architectures ● Relatively small for its feature set ● Easy to configure ● Huge application base ● Modern OS (eg. memory management, kernel modules, etc.) 3
  4. 4. Distributions ● Commercial: – MontaVista – BlueCat Linux – … ● MMU less – uCLinux ● Hard Real-time support – RTLinux 4
  5. 5. Embedded Linux System ● Boot loader – U-boot – GRUB – … ● Kernel ● File system – Many types 5
  6. 6. Building system ● Configure and compile Toolchain – Better idea: use already made ● Configure and make the boot-loader ● Install the boot loader on the target – Use special hardware or older board boot loader ● Configure and compile the kernel ● Build file system 6
  7. 7. Development ● Choose C library ● Use the toolchain to create – User space applications – Kernel modules (drivers) ● Many free tools 7
  8. 8. Free tools ● C library ● Toolchains ● Emulators ● Root file systems ● Graphical toolkits ● …. 8
  9. 9. C library http://www.gnu.org/software/libc/ ● License: LGPL ● C library from the GNU project ● Designed for performance, standards compliance and portability ● Found on all GNU / Linux host systems ● Quite big for small embedded systems: about 1.7 MB on Familiar Linux iPAQs (libc: 1.2 MB, libm: 500 KB)
  10. 10. uClibc http://www.uclibc.org/ for CodePoet Consulting License: LGPL Lightweight C library for small embedded systems, with most features though. The whole Debian Woody was ported to it... You can assume it satisfied most needs! Size (arm): 4 times smaller than glibc! uClibc: approx. 400 KB (libuClibc: 300 KB, libm: 55KB) glibc: approx 1700 KB (libc: 1.2 MB, libm: 500 KB) Now supported by MontaVista and TimeSys.
  11. 11. newlib http://sources.redhat.com/newlib/ Minimal C library for very small embedded systems ● Lets you remove floating point support wherever you don't need it. Also provides an integer only iprintf() function. Much smaller! ● Provides single precision math library functions. Much faster than the standard IEEE compliant ones.
  12. 12. klibc http://www.kernel.org/pub/linux/libs/klibc/ “Kernel C library” Tiny and minimalistic C library designed for use in an initramfs at boot time (alternative to initrds). Fine for the creation of simple shell scripts. Not elaborate enough to support BusyBox applications.
  13. 13. uClibc toolchains Free Electrons uClibc toolchains http://free-electrons.com/community/tools/uclibc Run on i386 GNU/Linux Supported platforms arm, armeb, i386, m68k, ppc, mips, mipsel, sh
  14. 14. Platform specific toolchains ARM ● Code Sourcery (glibc only, used by many): http://www.codesourcery.com/gnu_toolchains/arm/ Also available for Solaris and Windows workstations. ● ftp://ftp.handhelds.org/projects/toolchain/ (glibc only) MIPS ● http://www.linux-mips.org/wiki/Toolchains (useful links)
  15. 15. Toolchain building utilities Buildroot: http://buildroot.uclibc.org/ ● Dedicated Makefile to build uClibc based toolchains and even entire root filesystems. ● Downloads sources and applies patches. Crosstool: http://www.kegel.com/crosstool/ ● Dedicated script to build glibc based toolchains Doesn’t support uClibc yet. ● Downloads sources and applies patches.
  16. 16. Scratchbox http://scratchbox.org/ - A cross-compiling toolkit project Makes it easier to cross-compile a complete embedded Linux system. Works by allowing tools to be cross-compiled in a transparent way, making building tools believe they are doing a native compile job. Supported platforms: arm, x86 Uses the qemu emulator to transparently run built arm binaries. Experimental support for ppc, mips and cris.
  17. 17. qemu http://qemu.org Fast processor emulator using a portable dynamic translator. Full system emulation Emulates the processor and various peripherals Supported: x86, x86_64, ppc, arm, sparc, mips To know which machine types are supported: qemu­system­arm ­M ? i386, x86_64 system emulation: now close to native speeds thanks to the kqemu kernel module (now GPL v2!).
  18. 18. ARM emulators Only Free Software, of course! ● SkyEye: http://skyeye.sourceforge.net Emulates several ARM platforms (AT91, Xscale...) and can boot several operating systems (Linux, uClinux, and others) ● Softgun: http://softgun.sourceforge.net Virtual ARM system with many virtual on-board peripherals. Boots Linux. ● SWARM - Software ARM - arm7 emulator http://www.cl.cam.ac.uk/~mwd24/phd/swarm.html Can run uClinux
  19. 19. Other emulators ● ColdFire emulator http://www.slicer.ca/coldfire/ Can boot uClinux
  20. 20. Minicom ● Definition: serial communication program ● Available in all GNU / Linux distributions ● Capabilities (all through a serial link): – Serial console to a remote Unix system – File transfer – Modem control and dial-up – Serial port configuration
  21. 21. General purpose toolbox: BusyBox http://www.busybox.net/ Most Unix command line utilities within a single executable! It even includes a web server! Sizes less than < 500 KB (statically compiled with uClibc) or less than 1 MB (statically compiled with glibc). Easy to configure which features to include. The best choice for Initramfs / initrd with complex scripts Small and medium size embedded systems See http://www-128.ibm.com/developerworks/linux/library/l-busybox/ for a nice introduction.
  22. 22. ssh server and client: dropbear http://matt.ucc.asn.au/dropbear/dropbear.html Very small memory footprint ssh server for embedded systems Satisfies most needs. Both client and server! Size: 110 KB, statically compiled with uClibc on i386. (OpenSSH client and server: approx 1200 KB, dynamically compiled with glibc on i386) Useful to: – Get a remote console on the target device – Copy files to and from the target device (scp or rsync  ­e ssh).
  23. 23. Benefits of a web server interface Many network enabled devices can just have a network interface Examples: modems / routers, IP cameras, printers... No need to develop drivers and applications for computers connected to the device. No need to support multiple operating systems! Just need to develop static or dynamic HTML pages (possibly with powerful client-side JavaScript). Easy way of providing access to device information and parameters. Reduced hardware costs (no LCD, very little storage space needed)
  24. 24. Linux porting projects Useful to find patches, binaries, documentation, toolchains... Only ports for embedded systems are listed arm: http://www.arm.linux.org.uk/ See also http://www.linux-arm.org/ (from ARM Limited) m68k: http://www.linux-m68k.org/ mips: http://www.linux-mips.org/ ppc: http://penguinppc.org/embedded/ sh: http://linuxsh.sourceforge.net/ xtensa: http://xtensa.sourceforge.net/
  25. 25. Useful web sites LinuxDevices.com: http://linuxdevices.com ● Weekly newsletter with news and announcements about embedded devices running Linux. ● Articles, whitepapers, and Linux embedded devices catalog. ● An excellent site to follow industry news!
  26. 26. Example: ● Download CodeSourcery's toolchain installer for GNU/Linux target for IA32 host ● Install it: sh arm-2008q3-72-arm-none-linux-gnueabi.bin ● The toolchain provides the cross compiler arm-none-linux-gnueabi-gcc. You need to put it's directory in your $PATH. Once you have the toolchain, you can easily compile your hello world program: arm-none-linux-gnueabi-gcc -o hello -static hello.c ● Copy the binary to your phone and run it from an adb shell prompt: ./hello
  27. 27. Installation ● sudo apt-get install gcc-arm-linux-gnueabi ● sudo apt-get install android-tools-adb
  28. 28. Engineers are not users, they are creators!
  29. 29. This presentation is created using LibreOffice Writer 4.1.0.4 available freely under GNU public license. Thank you
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×