(1) Pick up one Android phone and discover its internals
(2) Learn how to select the "weapons" to fight with
Android system facilities
(3) Skipping Java parts, we focus on the native area:
dynamic linking, processes, debugger, memory
layout, IPC, and interactions with frameworks.
(4) It is not comprehensive to familarize Android. The
goal is to utilize Android platforms, which are the
popular and powerful development devices to us.
This presentation covers the working model about Process, Thread, system call, Memory operations, Binder IPC, and interactions with Android frameworks.
Linux is changing the way embedded systems are put together even faster than it is influencing data centres and desktops. I gave this talk at Embedded Linux Conference Europe 2012 in Barcelona
(1) Pick up one Android phone and discover its internals
(2) Learn how to select the "weapons" to fight with
Android system facilities
(3) Skipping Java parts, we focus on the native area:
dynamic linking, processes, debugger, memory
layout, IPC, and interactions with frameworks.
(4) It is not comprehensive to familarize Android. The
goal is to utilize Android platforms, which are the
popular and powerful development devices to us.
This presentation covers the working model about Process, Thread, system call, Memory operations, Binder IPC, and interactions with Android frameworks.
Linux is changing the way embedded systems are put together even faster than it is influencing data centres and desktops. I gave this talk at Embedded Linux Conference Europe 2012 in Barcelona
I have tried to present maximum detail on android booting sequence in a very abstract way. I hope it would be useful. If you find any correction needed please mention it on comments. Happy Coding :)
Presentation at Android Builders Summit 2012.
Based on the experience of working with ODM companies and SoC vendors, this session would discuss how to figure out the performance hotspot of certain Android devices and then improve in various areas including graphics and boot time. This session consists of the detailed components which seem to be independent from each other in traditional view. However, the situation changes a lot in Android system view since everything is coupled in a mass. Three frequently mentioned items in Android engineering are selected as the entry points: 2D/3D graphics, runtime, and boot time. Audience: Developers who work on Android system integration and platform enablement.
Introduce F9 microkernel, new open source implementation built from scratch, which deploys modern kernel techniques, derived from L4 microkernel designs, to deep embedded devices.
:: https://github.com/f9micro
Characteristics of F9 microkernel
– Efficiency: performance + power consumption
– Security: memory protection + isolated execution
– Flexible development environment
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)Toshiharu Harada, Ph.D
TOMOYO Linux is a MAC (Mandatory Access Control) implementation which gives support to protect Linux systems as well as to learn, understand and analyze system behavior. Being lightweight, it results suitable for embedded systems too. This tutorial aims to show in a practical way how to make the best use of TOMOYO Linux potentials in order to study and protect embedded Linux systems, taking Android as a specific study case. Though Android is amazingly expanding its target to various kinds of devices, it was designed mainly for mobile phones. Then, unlike other embedded operating systems, it presents some peculiar characteristics which require a particular attention to apply MAC effectively. The session is directed to those who want to learn how to use TOMOYO Linux, to managers or developers interested in security concerning embedded Linux and Android, and even to anyone just wishing to take a closer glance at Android internals.
In this presentation, the unaware or indirect applications of essential computer science concepts are dicussed as showcase. Jim Huang presented in Department of Computer Science and Engineering, National Taiwan University.
Linaro's mission is to make it easier and quicker for ARM partners to deploy the latest technology into optimized Linux based products. This presentation covers the basic work from Linaro Android platform team.
* Know the reasons why various operating systems exist and how they are functioned for dedicated purposes
* Understand the basic concepts while building system software from scratch
• How can we benefit from cheap ARM boards and the related open source tools?
- Raspberry Pi & STM32F4-Discovery
Android è un argomento di grande interesse nel mondo dell'informatica ma lavorare sulla piattaforma non è semplice.
Questo intervento avrà un taglio pratico e spiegherà come procurarsi gli strumenti per compilare un modulo kernel su android, come sviluppare un semplice modulo e come caricarlo sul dispositivo. Infine, si presenterà come creare un modulo più complesso usando delle API specifiche del kernel di Android.
I sorgenti del workshop sono reperibili qui:
https://github.com/arighi/mysuspend
Demian Neidetcher's presentation to the Denver Open Source Users Group on the Android mobile phone platform. Full details and source code available at http://neidetcher.com/android.html
I have tried to present maximum detail on android booting sequence in a very abstract way. I hope it would be useful. If you find any correction needed please mention it on comments. Happy Coding :)
Presentation at Android Builders Summit 2012.
Based on the experience of working with ODM companies and SoC vendors, this session would discuss how to figure out the performance hotspot of certain Android devices and then improve in various areas including graphics and boot time. This session consists of the detailed components which seem to be independent from each other in traditional view. However, the situation changes a lot in Android system view since everything is coupled in a mass. Three frequently mentioned items in Android engineering are selected as the entry points: 2D/3D graphics, runtime, and boot time. Audience: Developers who work on Android system integration and platform enablement.
Introduce F9 microkernel, new open source implementation built from scratch, which deploys modern kernel techniques, derived from L4 microkernel designs, to deep embedded devices.
:: https://github.com/f9micro
Characteristics of F9 microkernel
– Efficiency: performance + power consumption
– Security: memory protection + isolated execution
– Flexible development environment
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)Toshiharu Harada, Ph.D
TOMOYO Linux is a MAC (Mandatory Access Control) implementation which gives support to protect Linux systems as well as to learn, understand and analyze system behavior. Being lightweight, it results suitable for embedded systems too. This tutorial aims to show in a practical way how to make the best use of TOMOYO Linux potentials in order to study and protect embedded Linux systems, taking Android as a specific study case. Though Android is amazingly expanding its target to various kinds of devices, it was designed mainly for mobile phones. Then, unlike other embedded operating systems, it presents some peculiar characteristics which require a particular attention to apply MAC effectively. The session is directed to those who want to learn how to use TOMOYO Linux, to managers or developers interested in security concerning embedded Linux and Android, and even to anyone just wishing to take a closer glance at Android internals.
In this presentation, the unaware or indirect applications of essential computer science concepts are dicussed as showcase. Jim Huang presented in Department of Computer Science and Engineering, National Taiwan University.
Linaro's mission is to make it easier and quicker for ARM partners to deploy the latest technology into optimized Linux based products. This presentation covers the basic work from Linaro Android platform team.
* Know the reasons why various operating systems exist and how they are functioned for dedicated purposes
* Understand the basic concepts while building system software from scratch
• How can we benefit from cheap ARM boards and the related open source tools?
- Raspberry Pi & STM32F4-Discovery
Android è un argomento di grande interesse nel mondo dell'informatica ma lavorare sulla piattaforma non è semplice.
Questo intervento avrà un taglio pratico e spiegherà come procurarsi gli strumenti per compilare un modulo kernel su android, come sviluppare un semplice modulo e come caricarlo sul dispositivo. Infine, si presenterà come creare un modulo più complesso usando delle API specifiche del kernel di Android.
I sorgenti del workshop sono reperibili qui:
https://github.com/arighi/mysuspend
Demian Neidetcher's presentation to the Denver Open Source Users Group on the Android mobile phone platform. Full details and source code available at http://neidetcher.com/android.html
Kernel Recipes 2013 - Easy rootfs using BuildrootAnne Nicolas
The Linux kernel is an exciting world. But if you want to get a working system, it is still essential to provide our kernel a root filesystem. The kernel developers often struggle to find a simple rootfs, adapted to their architecture, together with the tools that fits properly.
We will present how Buildroot, a tool for building embedded Linux systems, can meet the needs of kernel developers in the build of minimal rootfs for their developments.
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
"Session ID: BUD17-104
Session Name: Scripting Languages in IoT: Challenges and Approaches - BUD17-104
Speaker: Paul Sokolovsky,
Track: LITE
★ Session Summary ★
Scripting languages is hot emerging topic in IoT. They allow easy learnability and rapid prototyping and further benefits (like production use) as they evolve. This session compares approaches of MicroPython and JerryScript/Zephyr.js projects and gives status update on their Zephyr RTOS ports.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/bud17/bud17-104/
Presentation: https://www.slideshare.net/linaroorg/bud17104-scripting-languages-in-iot-challenges-and-approaches
Video: https://youtu.be/lIO8QL2SRuU
---------------------------------------------------
★ Event Details ★
Linaro Connect Budapest 2017 (BUD17)
6-10 March 2017
Corinthia Hotel, Budapest,
Erzsébet krt. 43-49,
1073 Hungary
---------------------------------------------------
Keyword: IoT, scripting languages, Zephyr, LITE, Paul Sokolovsky,
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961"
Shared Object images in Docker: What you need is what you want.Workhorse Computing
Docker images require appropriate shared object files (".so") to run. Rather than assume Ubuntu has the correct lib's, use ldd to get a list and install the ones you know you need. This can reduce the underlying images from GB to a few MB.
Presented by: Elizabeth Joseph, IBM
Presented at All Things Open 2020
Abstract: Many enterprises and, as many of us learned during the COVID-19 outbreak, governments, rely on mainframes to do the bulk of their data-driven work and the modern mainframe is very good at what it does. But what if you’re looking to modernize your platform and bring in the DevOps methodologies, tooling, and practice into your organization?
Today, there is an entire product line of mainframes that exclusively run Linux (RHEL, SLES, or Ubuntu). With Linux, you get access to the vast ecosystem of open source software that’s already been ported to the mainframe architecture (s390x), with more being ported every month.
If your organization is using z/OS, the Open Mainframe Project has a series of open source projects targeted specifically at the mainframe and improving usability. Zowe, for instance, helps create a consolidated API for accessing resources and workload on your system and Feilong is a z/VM connector that allows you to manage your virtual machines with familiar open source tooling like OpenStack. There are even connectors for Jenkins that allow you to integrate CI/CD pipelines with your workloads.
In this talk I’ll explore all of this in more to show you how an automated, modern environment can thrive on today’s mainframe.
Learn about Linux on System z Update: Current & Future Linux on System z Technology, Live Virtual Class, Wednesday, July 28. 2010. For more information, visit http://ibm.co/PNo9Cb.
stackconf 2022: It’s Time to Debloat the Cloud with UnikraftNETWAYS
The cloud is undoubtedly a major success story, but while extremely convenient in terms of deployment and scalability, it’s become increasingly clear that is it highly inefficient, with services deployed in bloated, wasteful virtual machines (VMs). Worse, such VMs are kept on most if not all of the time, once again wasting resources, driving up both cloud infrastructure bills and energy consumption. We introduce Unikraft, a novel cloud operating system that allows for easily building cloud-ready images fully tailored to the needs of particular applications: Unikraft images boot in a few milliseconds, consume only a few MBs even when running mainstream applications (e.g., NGINX, SQLite, Redis, etc.), and can provide throughput higher than Linux. We will also show Unikraft’s ability to boot images just-in-time, as requests come in, and go to sleep thereafter, further saving resources. Unikraft is an open source Linux Foundation project and can be found at unikraft.org .
Pack is a one-stop solution for packaging, distributing and deploying applications. It is able to generate cross platform, Java-based installers that both encompass and embrace the target operating systems heterogeneity (Windows, Mac OS X, Linux, *BSD, Solaris). IzPack is by no mean rigid and lets you compose your installers the way you want through a wide range of existing features and extension points.
This talk will outline: the IzPack features, its use-cases and positioning against other deployment solutions, the history of the project, from a fun hack made in a student dorm-room to an industry-backed international project thoughts on building a project community, licensing matters, sustaining/scaling a project in the long term and business-model considerations.
Crafting GNU/Linux distributions for Embedded target from Scratch/SourceSourabh Singh Tomar
Following content is pehaps next step for Embedded Linux distribuiton process! Working out the entire process from sources. This time more elaborative.
Introduce Brainf*ck, another Turing complete programming language. Then, try to implement the following from scratch: Interpreter, Compiler [x86_64 and ARM], and JIT Compiler.
The promise of the IoT won’t be fulfilled until integrated
software platforms are available that allow software
developers to develop these devices efficiently and in
the most cost-effective manner possible.
This presentation introduces F9 microkernel, new open source
implementation built from scratch, which deploys
modern kernel techniques dedicated to deeply
embedded devices.
Build a full-functioned virtual machine from scratch, when Brainfuck is used. Basic concepts about interpreter, optimizations techniques, language specialization, and platform specific tweaks.
This presentation covers the general concepts about real-time systems, how Linux kernel works for preemption, the latency in Linux, rt-preempt, and Xenomai, the real-time extension as the dual kernel approach.
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Qi -- Lightweight Boot Loader Applied in Mobile and Embedded Devices
1. Qi - Lightweight Boot Loader
Applied in
Mobile and Embedded Devices
Jim Huang (jserv) &
Matt Hsu
from 0xlab
FreedomHEC 2009, Taipei
June 10, 2009
1
0xlab – connect your device to application – http://0xlab.org/
3. Our Background
We are Taiwanese engineers who are always enthusiastic in
modern technologies and open source software development.
Jim Huang (jserv) <jserv@0xlab.org>
0xlab co-founder, Openmoko coreteam, LXDE co-founder,
Kaffe/Free Java developer
Involved in design/implementation for consumer electronics, such
as mobile phone, GPS/PND, Digital TV, mobile TV, etc.
Matt Hsu <matt@0xlab.org>
0xlab kernel maintainer, Openmoko kernel developer
{u-boot,kernel}-{hxd8,gta02,gta03/3d7k}
Dash Express (the first two-way, Internet-connected GPS navigation system)
3
0xlab – connect your device to application – http://0xlab.org/
4. Agenda
Evolution of Boot Loader
The “function” of boot loaders
Our experience from Openmoko project
Applied in PC and Embedded Systems
Overview of Qi
Principal: KISS (Keep It Simple and Stupid)
Practical Qi
Real examples following the idea behind Qi
Future Perspectives
4
0xlab – connect your device to application – http://0xlab.org/
5. Evolution of Boot Loader
The “function” of boot loaders
Our experience from Openmoko project
Applied in PC and Embedded Systems
Overview of Qi
Principal: KISS (Keep It Simple and Stupid)
Practical Qi
Real examples following the idea behind Qi
Future Perspectives
5
0xlab – connect your device to application – http://0xlab.org/
6. Linux Bootstraping
Boot Loader for GNU/Linux
Boot Loader for GNU/Linux GNU/Linux
/usr/sbin/httpd
/usr/sbin/httpd
/bin/ls
BIOS Bootloader /bin/ls
GRUB
GRUB
Stage2
Stage2
ROT GRUB
GRUB Linux
GRUB
GRUB Linux
Stage1
Stage1 Kernel
Stage1.5
Stage1.5 Kernel
CRTM
CRTM POST
POST (MBR)
(MBR)
6
0xlab – connect your device to application – http://0xlab.org/
7. Linux on PC
Memory
#
#
#hello world :-( PC User Apps
#
#
Keybo Kernel
ard
IO
Devices
Disk File File System
System
File system on disk 7
0xlab – connect your device to application – http://0xlab.org/
8. Linux on Embedded
Memory
User Apps
CPU IO
Kernel
RAM ROM
File System
File system on chip
8
0xlab – connect your device to application – http://0xlab.org/
9. Originally made by Compaq (now HP)
iPAQ 3650 launched in 2000
Runs Windows CE 3.0/PocketPC
bootldr from handhelds.org started.
9
0xlab – connect your device to application – http://0xlab.org/
10. User Interaction on PC
printf scanf
Kernel
Kernel
Device
Driver Display Adaptor Keyboard Driver
#
# Keybo
#hello world :-( ard
#
#
10
0xlab – connect your device to application – http://0xlab.org/
11. User Interaction on Embedded
printf scanf
Kernel
Kernel
Device
Driver Display Adaptor Keyboard Driver
Any Output Any Input
Device Device
11
0xlab – connect your device to application – http://0xlab.org/
12. Embedded with Hardware
LCD Button
Touch
UART
Replacing Replacing screen
Displayer Keyboard
LED UART
Network Network
12
0xlab – connect your device to application – http://0xlab.org/
13. Hardware
ROM
Address Bus
Data Bus
Control Bus
CPU RAM
13
0xlab – connect your device to application – http://0xlab.org/
14. Bootloader
Kernel
ROM
Rootdisk
RAM
System Memory Usage
System Memory Usage
(static)
(static) 14
0xlab – connect your device to application – http://0xlab.org/
15. Bootloader
Kernel
ROM
Rootdisk
Kernel
Rootdisk
RAM
User
System Memory Usage
System Memory Usage
Memory
(running)
(running) 15
0xlab – connect your device to application – http://0xlab.org/
16. Linux
kernel
RAM
RAM Disk
0x0xffe00000
u-boot
Zipped Linux
Local Booting
Local Booting ROM kernel
(u-boot, famous in
(u-boot, famous in Zipped root
embedded world)
embedded world) image
16
0xlab – connect your device to application – http://0xlab.org/
17. Remote Booting (u-boot)
Zipped Linux
Linux
kernel
192.168.0.3
kernel
DHCP server
RAM
TFTP server
Zipped kernel
Linux image
(/home/TFTPdir/uImage)
NFS server
0x0xffe00000
u-boot MyIP: 192.168.0.253 Root Image for
Server IP: 192.168.0.3 MPC860 Linux
ROM Kernel Name: uImage (/home/NFSdir/)
NFS position: /home/NFSdir
17
0xlab – connect your device to application – http://0xlab.org/
18. Functions!
Bootloader
Kernel
ROM
Initialize Board Rootdisk
Also enable basic debugging
function
Loading Kernel
From ROM or From Remote Server
Load Root Image
Starting Kernel
RAM
18
0xlab – connect your device to application – http://0xlab.org/
19. Boot Loader is No More Simple Now
u-boot is proud of rich feature/functions:
SD/MMC card + FAT file system
Autoboot
OS loading commands
Upgrade itself
Networking
Environment variables
NOR/NAND Flash
Self-testing
...
19
0xlab – connect your device to application – http://0xlab.org/
20. We even hacked more in u-boot
Openmoko hackers improved u-boot as the following:
http://wiki.openmoko.org/wiki/U-boot
Graphical menu for multiple boot (Yes, UI is usable.)
usbtty (Yes, you can make phone call via boot loader.)
Changeable boot screen (Yes, it comes with personal style.)
Control GSM modem directly (Yes, you can even digg firmware.)
Integrate tiny window system (Yes, we were crazy.)
… (too many) ...
20
0xlab – connect your device to application – http://0xlab.org/
21. Hacking is Fun, but...
Both grub and u-boot are relatively complex and hard to
improve/debug.
Grub runs in 80386 protected mode in order to perform
multiboot. (We hate software!)
Grub can access several file systems, which implies huge
code implementation.
u-boot “stole” some device drivers (mainly NIC) from Linux
kernel, but the performance is poor and somehow buggy.
u-boot is single threaded (no tasks), and you have to handle
interrupts very carefully.
Painful programming always.
21
0xlab – connect your device to application – http://0xlab.org/
22. Practical Reasons to Modify boot loader
For consumer electronics, we modify boot loaders in
embedded devices because...
Make sure Linux can be safely booted under the proper
DC battery voltage.
Couple with charger before Linux is able to work.
Rescue mode, Engineering mode, Field trial mode, …
Firmware upgrade (including boot loader itself, Linux
kernel, ramdisk, root file system, data, ...)
Protect the firmware (encrypt system software
information) Ethernet
Flexible remote booting
22
0xlab – connect your device to application – http://0xlab.org/ RS232
23. People tried to eliminate the efforts.
Concepts: Linux itself can be used as Boot Loader.
(2003) Joshua Wise, LAB (Linux As Bootloader) a.k.a.
“bootldr-ng” for iPAQ.
Linux has many commonly used features that
would be beneficial to a bootloader, however
difficult to port properly:
USB, MMC/SD, Filesystem, ...
(2005) Werner Almesberger, quot;kboot - A Boot
Loader Based on Kexecquot;, Linux-Kongress
(2007) “HTTPFUSE PS3Linux: Internet boot
framework using HTTP”
Qi leverages the above ideas to build up totally new one. 23
0xlab – connect your device to application – http://0xlab.org/
24. Evolution of Boot Loader
The “function” of boot loaders
Our experience from Openmoko project
Applied in PC and Embedded Systems
Overview of Qi
Principal: KISS (Keep It Simple and Stupid)
Practical Qi
Real examples following the idea behind Qi
Future Perspectives
24
0xlab – connect your device to application – http://0xlab.org/
25. Prerequisite
Before introducing Qi, let us touch the
background knowledge.
1. Copy debug
kexec system call in Linux Kernel 2.6 kernel to reserved
Standard kernel
RAM 2. kernel
Linux kernel warm-restart panic, kexec
kexec makes it possible to call a new debug kernel
kernel, without rebooting and going 3. Analyze
through the BIOS / firmware. crashed Debug kernel
kernel RAM
kboot
a boot loader based on kexec
Basic idea: Without working up a
sweat
Extended project: PS3-Linux
Regular RAM
25
0xlab – connect your device to application – http://0xlab.org/
26. kboot in Action
26
0xlab – connect your device to application – http://0xlab.org/
27. With kboot, it s fairly simple
With kboot, it s fairly simple
to construct Graphical and Fancy
to construct Graphical and Fancy
Boot Loader.
Boot Loader.
27
0xlab – connect your device to application – http://0xlab.org/
28. Qi bootloader
Openmoko planned to implement kboot and adopt it on
GTA0x series. (Hint: Openmoko system architect, Werner Almesberger
is the author of lilo and kboot as well.)
But kboot is a second stage bootloader, we still need a
legacy bootloader.
Why it called “Qi”?
Umm quot;Qiquot; - not really a flower but if I remember my
Chinese mythology its the breath that brings things to life ?
– Alan Cox
Similar idea as kboot
Not reinvent the wheel anymore, avoiding cutting and
pasting drivers into u-boot
28
0xlab – connect your device to application – http://0xlab.org/
29. Qi in a nutshell
Licensed under GNU GPL.
Current status
Openmoko does not maintain this project anymore
Andy Green (ex-Openmoko kernel maintainer) continues
contributing to Qi.
http://git.warmcat.com/cgi-bin/cgit/qi/log/?h=txtr
Qi supports few platforms at present.
Samsung S3C24xx/S3C6410, Freescale iMX31
Very small footprint
~28 kb size
Fast boot time
Comparing to u-boot, it's reduced about 28% boot time (time-to-
desktop)
29
0xlab – connect your device to application – http://0xlab.org/
30. Qi in a nutshell
Test report from SHR distribution running on FreeRunner/GTA02
Test report from SHR distribution running on FreeRunner/GTA02
Booting SHR image with Booting identical setup with Qi
uBoot: flashed over uBoot:
0:00 power button held down 0:00 power button held down
0:07 splash screen appears 0:06 backlit black
0:13 please wait booting... (only
this text on console for next 38
0:15 drops to console showing seconds)
kernel messages scrolling by for
~1 minute 0:51 Angstrom console message
(at the end of kernel output with
uBoot, but ONLY text display to
appear throughout this stage with
Qi)
1:18 Openmoko 'please wait'
splash 0:54 Openmoko 'please wait'
splash
1:05 desktop animated splash
1:31 desktop animated splash
1:54 finished booting Faster
2:38 finished booting 30
0xlab – connect your device to application – http://0xlab.org/
31. Qi Architecture
Board level support
- board dependent kernel command Memory
Test
- Multiple partition to boot
2nd stage
SMDK6410
GTA02 GTA01 iMX-Lite31
GTA03
Initialize - CPU
- Memory
- Console (UART) Passing
- board detection Point of resume
1st stage CPU support - IO port init
- Necessary devices to init
31
0xlab – connect your device to application – http://0xlab.org/
32. KISS: Keep It Simple and Stupid
struct board_api {
........
const struct board_variant
const * (*get_board_variant)(void);
int (*is_this_board)(void);
void (*early_port_init)(void);
void (*port_init)(void);
void (*post_serial_init)(void);
char * (*append_device_specific_cmdline)
(char *);
void (*putc)(char);
...
struct kernel_source kernel_source[4];
};
const struct board_api *boards[] = {
&board_api_om_3d7k,
&board_api_smdk6410,
NULL /* always last */
};
this_board = boards[board];
while (!flag && this_board)
/* check if it is the right board... */
if (this_board->is_this_board())
flag = 1;
Misc:
Misc: else
straightforward boot config this_board = boards[board++];
straightforward boot config 32
0xlab – connect your device to application – http://0xlab.org/
33. Limitations of Qi
Required an approach to update boot loader if device could not
support booting from SD
NOR boot, JTAG
No boot menu support
FAT partitions are ignored
33
0xlab – connect your device to application – http://0xlab.org/
34. Evolution of Boot Loader
The “function” of boot loaders
Our experience from Openmoko project
Applied in PC and Embedded Systems
Overview of Qi
Principal: KISS (Keep It Simple and Stupid)
Practical Qi
Real examples following the idea behind Qi
Future Perspectives
34
0xlab – connect your device to application – http://0xlab.org/
35. Case Study
Mass production for HXD8 (hardware name for Dash Express)
project at Openmoko.
There are two systems to diagnose hardware.
u-boot
customized kernel for production
Duplicated test commands
Maintenance is a nightmare
Hardware verification in early stage
rsync
Final stage:
DM1: DM2:
Diagnose the Diagnose after Program GPS map database
Board level stuff Assembly Into NAND flash
u-boot
u-boot customized kernel
customized kernel customized kernel
customized kernel 35
0xlab – connect your device to application – http://0xlab.org/
36. Future Perspectives
For mobile and embedded devices, boot sequence is changing.
Qi is not only a boot loader project but a new approach to comply
with the diverse requirements of various consumer electric
devices/products.
What consumers expect
Faster boot time
Personalization
Secure data (client security solution)
What manufacturers expect
Firmware protection
Robust system software
36
0xlab – connect your device to application – http://0xlab.org/
37. Reference
U-boot – the universal boot loader
http://www.denx.de/wiki/U-Boot
Qi boot loader wiki
http://wiki.openmoko.org/wiki/Qi
GNU GRUB – multiboot boot loader
http://www.gnu.org/software/grub/
Samsung S3C6410 Mobile Processor
http://www.samsung.com/global/business/semiconductor/supp
ort/brochures/downloads/systemlsi/s3c6410_datasheet_2008
04.pdf
Openmoko wiki – http://wiki.openmoko.org/
Dash Express – http://dash.net/
37
0xlab – connect your device to application – http://0xlab.org/
38. Thanks!
We appreciate the great sponsorship from AzureWave
Technologies, Inc. ( http://www.azurewave.com/ )
Providing WiFi module
Providing ARM development board
38
0xlab – connect your device to application – http://0xlab.org/
39. 0xlab About 0xlab
Our focus is to strengthen the connection http://0xlab.org
between hardware device manufacturers and
open source software communities and to
become the integrated solution provider
bringing more devices powered by open
source for daily use.
0xlab is founded by a group of engineers
enthusiastic in modern technologies and open
source software development.
0xlab is an open organization. We appreciate
anyone's participation in our projects and
planning to contribute to the free software
community.
We support open source.
We open up our development process and
results as much as possible.
We will always be an open organization.
Everyone can join for discussion, testing and
development.