Embedded Linux Workshop ~~~~~~~~~~~~~~~~~~~~~~~ Lib C: - glibc - eglibc (more configuration, may not be up to date) - uClibc (adapted to uCLinux, use the old linux threads, shared memory?, no real time stuff, good for less than 60MB storage) Choosing a toolchain : - for an ARM A-8, an armv4 compiler will not be optimized use armv7t - good libc - up to date - good support or community - bonus: dev tools - bonus: cross compiled libs - exemple: codesorcery g++, denx eldk, angstrom, debian... - or do it yourself: buildroot, openembedded, ltib... - commercial: montavista, timesys, windriver, lynux (they are not really up to date and do not offer many packages) - TRAP: toolchains shipped with board are often very bad Debugging: - provided by the toochain - libraries should have debug symbols - profiler tracers Bootloader: - set up sdram controler - map memory - set processor modes and feats - load kernel - there can be a pre-bootloader (on hardware) - Das U-Boot (popular) - Redboot Passing hardware info to the kernel on ARM: - R1: machine umber - R2: pointer to ATAGS list U-Boot: nand read setenv bootcmd ... Kernel: - think about using long term support kernels - private BSPs are often not up to date - arch -> chip -> board - use make oldconfig - do not use modules unless necessary - the order of modules loading can be used to reduce boot t - .config -> autoconf.h - export cross compile variables - zImage or uImage - quiet !=! debug User Space: - do not use udev when speed is needed - ubfs is cool (yaffs2 too but not mainline) See the slides...