diff options
Diffstat (limited to '2006/oe_simputer-foss.in-2006/oe_simputer.mgp')
-rw-r--r-- | 2006/oe_simputer-foss.in-2006/oe_simputer.mgp | 423 |
1 files changed, 423 insertions, 0 deletions
diff --git a/2006/oe_simputer-foss.in-2006/oe_simputer.mgp b/2006/oe_simputer-foss.in-2006/oe_simputer.mgp new file mode 100644 index 0000000..48b265b --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/oe_simputer.mgp @@ -0,0 +1,423 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 +OpenEmbedded on the Simputer + + +Nov 26, 2006 +FOSS.in, Bangalore + +%center +%size 4 +by + +Harald Welte <laforge@gnumonks.org> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +About the Speaker + +Who is speaking to you? + an independent Free Software developer + one of the authors of Linux kernel packet filter + busy with enforcing the GPL at gpl-violations.org + working on Free Software for smartphones (openezx.org) + ...and Free Software for RFID (librfid) + ...and Free Software for ePassports (libmrtd) + ...among other things ;) + who is not a member of the OpenEmbedded project + ... but a proud owner of an Amida Simputer + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The Problem (A) + +What is the Problem? (Variant A) + You build an embedded device + You decide to run linux + You do your own embedded distribution + which is a lot of work in the first place + which will cause even more work for maintainance + in the end, you will not provide security updates + and you end up having a 'one time throw away' product + Your users will not get your full build system (if there is such a thing) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The Problem (B) + +What is the Problem? (Variant B) + You build an embedded device + You decide to run linux + You license a commercial embedded Linux variant + you will most likely end up with something stale like kernel 2.4.x + you will have to spend a lot of money on it + you will still require quite a bit of porting + Your users will never get the source packages ("SRPMS") to it + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The Problem (Summary) + + Summary of the situation + You exclude the FOSS community from your product + You end up with low-quality code and lots of maintenance work + Your customers get a suboptimal product with limited feature set + + Result of that situation + Your customers will start their own embedded distributions + OpenWRT + OpenEZX + OpenZaurus + Familiar + ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Introduction to OE + +What is OpenEmbedded (OE) + Not a distribution, but distribution building framework + Not a software program + Consists of thousands of rules + Rules for definition of a machine type (78) + Rules for definition of a distribution (32) + Rules for individual packages (4095) + Plus a program to interpret those rules + bitbake + "One system to rule them all" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Introduction to OE + + What does OpenEmbedded (OE) do for you? + Build a toolchain + specifically for your target device + with the optimizations you need + for your host platform (I crosscompile from quad G5!) + Build a kernel image + your preferred version with your patches + Build a distribution + with the packages you want + with the initial configuration / fs layout you want + Build distribution images + using rootfs of your choice (cramfs, jffs2, ...) + matching for direct flash writing + optionally in your own firmware update image format + Build thousands of individual packages + using the package manager of your choice (.ipk, .deb) + packages can be later installed + package repositories can be published as 'feed' (apt-get like) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Who uses OpenEmbedded + +Who uses OpenEmbedded + Until 07/2006, only community projects + OpenZaurus, OpenEZX, etc. + Since 07/2006, the first commercial user + FIC-sponsored OpenMoko.org (Linux GSM phone) + OpenMoko distribution + Neo1973 machie + QT2410 machine + .. more devices in 2007! + + Why not more commercial users + as usual: not all that much documentation about the system + but: OE core team members available for consultancy + not many commercial embedded vendors interested in sustainable, long-term development + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The heart of OE: bitbake + +What is bitbake + Program to interpret + local configuration (.conf files) + package specification (.bb files) + machine/distro configuration (.conf files) + Can be used to + build individual native (host) and target packages + build tasks (task == set of packages) + build ready-made firmware images + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Devices ('machines') + +Overview of built-in device support + Motorola A780 / E680 + HTC Blueangel + Various Sharp Zaurus models + VIA EPIA boards + iPAQ H1910, H1940, H2200, H3600, H3900, H4000, H5xxx, H6300 + HP Jornada 6xx, 7xx + i.MX31 ADS + Nokia 770 + Linksys NSLU2, WRT54g + Asus WL-500g + QEMU/ARM (for testing) + Samsung SMDK 2440 + PC-Engines WRAP + Amida Simputer (not yet mainline) + ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Packages + +An OE package is... + a .bb (bitbake) file containing + description + license + section + maintainer + dependencies + source code + patch URI's (local or remote) + so it is basically similar to a RPM spec file or debian 'rules' + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Distributions + +An OE distribution is + a .conf file that indicates + name (DISTRO_NAME) + version (DISTRO_VERSION) + how to build the crosscompiler + which package format to use (INHERIT += package_ipk) + which images to build by default (IMAGE_FSTYPES) + preferred versions of many packages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Tasks + +Tasks are virtual packages + You can find OE Tasks in + openembedded/packages/tasks + Commonly used tasks are + task-bootstrap (all packages for basic userspace with login) + task-xterminal (boostrap + x11 + xterm) + gpe-image (xterminal + GPE project) + opie-image (OPIE project) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Images + +An OE Image is + a set of OE packages pre-installed into a root filesystem + again implemented as virtual package + OE Image rules are found in openembedded/packages/images + result provided as .tar.gz, .tar.bz2, cramfs or jffs + Commonly-used images: + bootstrap-image (basic system with console access) + xterminal-image (bootstrap + X11 + xterm) + e-image (xterminal + enlightenement e11) + gpe-image (xterminal + GPE) + opie-image (QtEmbedded, OPIE, no X11) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Build Setup + +OE Build Setup + create a 'build/conf/local.conf' file + TMPDIR - directory with lots of space (30G) + MACHINE - the device you want to build for + DISTRO - the distro you want to build + BUILD_ARCH - the native architecture of the host PC (optional) + install bitbake into + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Build Tree + +OE Build Tree layout + my-oe/openembedded + the openembedded rules checked out via monotone (mtn) + my-oe/openembedded/packages + package rule files + my-oe/openembedded/conf/machine + machine rule files + my-oe/openembedded/conf/distro + distro rule files + my-oe/build/conf + local.conf configuration + my-oe/build/tmp/work + work directory of build process + my-oe/build/tmp/deploy/ipk + completed ipk packages + my-oe/build/tmp/deploy/images + completed filesystem images + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The Amida Simputer + +The Amida simputer is a device with + Intel SA-1100 StrongARM Processor + 64 MB RAM + 32 MB Flash + USB Host port + USB Device port + Serial port (console) + Smart Card Reader + ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE for the Amida Simputer + +Adding a new device to OE + is extremely easy + in most cases, architecture / SoC support already there + you just create a "conf/machine/foobar.conf" rule file + content of the file + size of root flash image + which rootfs format to create (jffs2, ...) + which kernel to build + which compiler architecture + flags to use + see following example for Amida 4200 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE for the Amida Simputer + +Which strategy to go + oeputer + use old compiler + use original kernel + try to maintain binary compatibility with existing apps + this was the initial attempt, now abandoned + oeputer-ng + use latest toolchain (compiler, ...) + use latest versions of libraries, X11 server, ... + use current kernel + this is the current approach, esp. after Alchemy is becoming Free Software + which means we can theoretically re-compile it + in practise, there's probably quite a bit of porting needed + volunteers? (see next presentation on OpenAlchemy!) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE for the Amida Simputer + +oeputer + create kernel package with original kernel tree from amida + see example + create bootloader package with original bootloader tree from amida + this is optional + we could just leave the existing bootloader + if we want to do modifications, create pacakge + use existing glibc, zlib, ... packages + works if the versio is compatible with what simputer uses + in most cases, simputer software versions are too old + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE for the Amida Simputer + +oeputer-ng + kernel + initially, use oeputer kernel package + later, port drivers/machine support to mainline and use 2.6.x + bootloader + just leave as-is or use oeputer package + userspace + just use most current (stable) versions of everything in OE + glibc-2.4 + gcc-4.1.1 + x11-kdrive from X11R7.1 + ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Build Timeline + +OE Build Timeline (bitbake bootstrap-image) + Build Order: + some native (host) libraries/tools + autotools + coreutils + ipkg + libxml + m4 + fakeroot + the cross-toolchain + binutils + gcc + the basic packages (from task-bootstrap) + linux-libc-headers, glibc, module-init-tools + zlib, ncurses, util-linux, kernel + the boostrap-image (from bootstrap-image.bb) + all packages from task-bootstrap + create jffs / tar.bz2 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Status of OE on Simputer + +Status of OE on Simputer + Proof-of-concept bootstrap-image exists + Project is stalled because of lack of time + Did I mention how many projects I'm involved in? + Volunteers wanted + If there are no volunteers taking it further, it will probably be still-born + Talk to Anush Shetty! + OpenAlchemy + will make the whole project even more interesting + the idea is to create bitbake rules for OpenAlchemy + which can then be built for 'oeputer-ng' + but also for many (all?) other OE supported systems! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Links + +Links + The OpenEmbedded project + http://openembedded.org/ + Getting Started with OpenEmbedded + http://www.openembedded.org/wiki/GettingStarted + The Amida Simputer + http://www.amidasimputer.com/ + OE on Simputer project + http://simputer.gnumonks.org/ + OpenMoko project + http://www.openmoko.org/ + |