Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Module 4 Embedded Linux


Published on

Introduction to Embedded Linux.

Published in: Technology
  • Be the first to comment

Module 4 Embedded Linux

  1. 1. Module-4 Introduction Embedded Linux Tushar B Kute
  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 ● 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 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 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 “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 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): Also available for Solaris and Windows workstations. ● (glibc only) MIPS ● (useful links)
  15. 15. Toolchain building utilities Buildroot: ● Dedicated Makefile to build uClibc based toolchains and even entire root filesystems. ● Downloads sources and applies patches. Crosstool: ● Dedicated script to build glibc based toolchains Doesn’t support uClibc yet. ● Downloads sources and applies patches.
  16. 16. Scratchbox - 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 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: Emulates several ARM platforms (AT91, Xscale...) and can boot several operating systems (Linux, uClinux, and others) ● Softgun: Virtual ARM system with many virtual on-board peripherals. Boots Linux. ● SWARM - Software ARM - arm7 emulator Can run uClinux
  19. 19. Other emulators ● ColdFire emulator 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 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 for a nice introduction.
  22. 22. ssh server and client: dropbear 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: See also (from ARM Limited) m68k: mips: ppc: sh: xtensa:
  25. 25. Useful web sites ● 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 available freely under GNU public license. Thank you