SlideShare a Scribd company logo
Develop Your Own Operating
Systems using Cheap ARM
Boards

Jim Huang ( 黃敬群 ) <jserv@0xlab.org>
Jan 8, 2014 / NCTU, Taiwan
Rights to copy
© Copyright 2014 0xlab
http://0xlab.org/
Corrections, suggestions, contributions and translations
are welcome!

Attribution – ShareAlike 3.0
Latest update: Jan 14, 2014
You are free
to copy, distribute, display, and perform the work
to make derivative works
to make commercial use of the work
Under the following conditions
Attribution. You must give the original author credit.
Share Alike. If you alter, transform, or build upon this work, you may distribute the
resulting work only under a license identical to this one.
For any reuse or distribution, you must make clear to others the license terms of this work.
Any of these conditions can be waived if you get permission from the copyright holder.
Your fair use and other rights are in no way affected by the above.
License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
Goals of This Presentation
• 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
Agenda
•
•
•
•

Yet another Operating System?
Embedded Operating System Designs
Cheap ARM boards
Development flow using open source technologies
Yet Another Operating Systems?
Reasons of Home-brew OS
• Escape from large-scale and uncertain code base
– Linux is a good example: Mature but hard to fit
everyone's need

• Exploit new systematic methods

– Hypervisor for virtualization, runtime isolation
– Heterogeneous computing for both performance and power
efficiency

• Customization

– Deeply embedded environments, security, education (xinu,
minix, xv6), domain-specific language/runtime, mobile
(OKL4; 1.5 billion shipment!)

• "Just for Fun" – Linus Torvalds
Techniques inspired by OS
• Even Web/Application Framework learn the
performance techniques from OS concepts.
• Virtualization
– Hypervisor, Resource Kernel (KVM), …
– Intel VT-d , ARM Cortex-A15/A7, ARMv8
• Security
– Dynamic tracing, analysis, and instrumentation
using VM
Statistics about Large-scale Systems
• Drivers cause 85% of Windows XP crashes.
– Michael M. Swift, Brian N. Bershad, Henry M. Levy:
“Improving the Reliability of Commodity Operating
Systems”, SOSP 2003
• Error rate in Linux drivers is 3x (maximum: 10x) higher
than for the rest of the kernel
– Life expectancy of a bug in the Linux kernel (~2.4):
1.8 years
– Andy Chou, Junfeng Yang, Benjamin Chelf, Seth
Hallem, Dawson R. Engler: “An Empirical Study of
Operating System Errors”, SOSP 2001
Some statistics
• Causes for driver bugs
– 23% programming error
– 38% mismatch regarding device specification
– 39% OS-driver-interface misconceptions
– Leonid Ryzhyk, Peter Chubb, Ihor Kuz and Gernot
Heiser: “Dingo: Taming device drivers”, EuroSys
2009
Anecdote: Linux e1000 NVRAM bug
• [Aug 8, 2008] Bug report: e1000 PCI-X network cards

rendered broken by Linux 2.6.27-rc
– overwritten NVRAM on card

• [Oct 1, 2008] Intel releases quickfix
– map NVRAM somewhere else
• [Oct 15, 2008] Reason found:
– dynamic ftrace framework tries to patch __init code, but .init
sections are unmapped after running init code
– NVRAM got mapped to same location
– scary cmpxchg() behavior on I/O memory
• [Nov 2, 2008] dynamic ftrace reworked for Linux

2.6.28-rc3
FTrace & NIC driver!
instrumentation vs. device driver
Linux Device Driver bugs

[Dingo: Taming device drivers, 2009]
Linux version 3.0
• consists of
– 7702 features
– 893 Kconfig files
– 31281 source files
– 88897 #ifdef blocks
Even worse...
Develop Your Own Operating Systems using Cheap ARM Boards
Device Driver Model
Bugs in Linux Device Driver
Bugs in Linux Device Driver

Device protocol violation examples:
✗
Issuing a command to uninitialized device
✗
Writing an invalid register value
✗
Incorrectly managing DMA descriptors
Linux Device Driver Bug Portion
Bugs in Linux Device Driver

Mellanox Infinihost controller Driver
if(cur_state==IB_RESET &&
new_state==IB_RESET){
return 0;
}
Linux Device Driver Bug Portion
Concurrency errors
Further study about concurrency bugs
• Markus Peloquin, Lena Olson, Andrew Coonce,
University of Wisconsin–Madison, “Simultaneity Safari:
A Study of Concurrency Bugs in Device Drivers"
(2009)
• Types of Device Driver Bugs
Linux Device Driver Bug Portion
Embedded Operating System
Designs
IoT = I own Technologies, but...
• You can only use the devices, services, rights, etc.
without really owning them even if you buy the
“products" in higher price.
• Ecosystem is getting quite essential for applications.
Deeply Embedded Devices
• Power awareness; solid and limited applications
• Multi-tasking or cooperative scheduling is still required
• IoT (Internet of Things) is the specialized derivative
with networking facility
• Communication capability is built-in for some products
• Example: AIRO wristband (health tracker)
http://www.weweartech.com/amazing-new-uses-smart-watches/
Work at AcoMo: Physiological Inspection
• Analyze signals from various bio sensors and apply
efficient algorithms to examine the healthy condition
HRV Knows You
AcoMo built in-house OS for products and releases
the basic part as an open source effort

(invisible) Medical devices make sense in our life.
:: home-care :: advance warning :: security
Booting Process

Power On

PC

Embedded

BIOS

Power On

X-Loader
Get Bootloader

Get Bootloader

GRUB

U-Boot
Get Kernel

Kernel

Embedded hardware: TI OMAP3730 SoC

Get Kernel
Kernel
Embedded vs. PC
• Hardware specification is not the major difference!
– The functionality is.
• PCs are a highly modular platform. Most
components are in sockets or slots that permits
easy replacement.
• Embedded Systems tend to solder their
components directly to the PCB as they don’t
need to be replaced.
Embedded vs. PC
i7-930

i7-920

i7-940
i7-950

i7-965X

i7-960

i7-970

i7-980X
Embedded vs. PC

DDR3-2133
DDR3-1866
DDR3-1600
DDR3-1333
DDR3-1066
DDR3-800

Voltage
1.2-1.5v

Legacy
CS-RAS-CAS-WE
Embedded vs. PC

D i ff e r e n t P C I - E s t a n d a r d s
V1.0/v2.0/v3.0
D i ff e r e n t l a n e c o u n t s
x1/x2/x4/x8/x16
Also Legacy PCI support
Embedded vs. PC
USB 2.0
USB 3.0

Intel PCH

Gigabit Ethernet
7.1 Audio Codec
S-ATA
3 & 6Gbps
IDE & Floppy
Embedded vs. PC

TI OMAP 3730 Processor
512MB DDR@200MHz
PowerVR SGX530 Graphics
All soldered directly to the
board. Not intended for
replacements.
Booting Process
ROM Code

U-Boot
IPL
Startup
Kernel

X-Loader

U-Boot

Linux
Kernel

• On-Chip boot ROM code generally causes the CPU to
perform minimal initialization of peripheral such as
NAND Flash and instructs it to begin reading code from
there into memory and executing it.
• This code can be a standard embedded bootloader
such as U-Boot, or it can be an IPL.
• U-Boot loads the “IPL” image into memory, and begins
executing it.
• The “IPL” is an “Initial Program Loader” which is
responsible for initializing basic hardware and passing
control to “Startup” code, and subsequently the Kernel.

Embedded hardware: TI OMAP3730 SoC
IPL
•
•
•
•

Begin in assembly, performs initialization for HLL
Initialize CPU/(some) Peripheral Clocks
Initialize basic I/O (serial)
Minimal pin multiplexing for required peripherals
(i.e. SDHC hardware)

• Read in and decompresse “IFS” image (ramdisk +
kernel)

• Include basic (FAT) fi lesystem drivers for SDHC
reading
• Passes control to “Startup”
• Can start “minidrivers” for device interaction
before OS/Kernel even begins booting
Startup
• Startup begin in C language, initialize most
peripherals, and sets up important kernel
structures
• Kernel expects a “syspage” structure to exist at
a pre-defi ned location in memory. This structures
provides important information about the host
system.
• Enable CPU SMP operation (multiple-cores)
• Often re-do initialization done by IPL (such as
serial I/O) to enable more advanced functionality
• Inform minidrivers of new environment before
passing control to kernel.
System Information
• Indicate CPU type (e.g. ARM) and vital
information (e.g. number of cores), and other
supported features such as NEON extensions.
• Provide access to hardware-specifi c function
callouts made available to the system before the
Kernel was running
• Provide information about the memory
environment in which the kernel is running
• Information about bus devices, IRQs
• Information about connected peripherals and
device trees for /dev population
Cheap ARM Boards

check "Introduction to Raspberry Pi" by Computer
Science Club, University of Cyprus Student Clubs
Development flow using Open
Source Technologies
Baking Pi – Operating System
Development

• Operating Systems Development! Course by Alex
Chadwick. Version 1.0c (July 2013).

http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/

• Divided into several basic “blocks".
JTAG
• Initially devised for testing printed circuit boards with
its boundary scanning functionality JTAG is now used
extensively for debugging, programming CPLDS and
initialising flash memory.
• Can be useful to recover bricked devices or write new
firmware to NAND on restricted devices. But the IGEP
is un-brickable
• Tools like OpenOCD and GDB ARM have successfully
been used on OMAP530 devices like Beagleboard.
Conclusion
• BYOD (Build Your Own Device) and BYOD (Build
Your Own Operating System) are feasible and getting
easier with open source technologies
• Domain specific applications always expect
innovations from various sources including the
customized kernel and userland
• System trial with very low cost
Reference
• “Dingo: Taming Device Drivers”, Leonid Ryzhyk, Peter Chubb,
Ihor Kuz, Gernot Heiser, UNSW/NICTA/Open Kernel Labs
(2009)
• "Hardware and Device Drivers", Björn Döbel, TU Dresden
(2012)
• "Configuration Coverage in the Analysis of Large-Scale System
Software", Reinhard Tartler, Daniel Lohmann, Christian Dietrich,
Christoph Egger, Julio Sincero, Friedrich-Alexander University
(2011)
• “AIRAC: A Static Analyzer for Detecting All Buffer Overrun
Errors in C Programs", Kwangkeun Yi, Seoul National University
(2005)
• “CCured: Taming C Pointers”, George Necula, Scott McPeak,
Wes Weimer, Berkeley (2002)
http://0xlab.org

More Related Content

What's hot (20)

PPT
Báo cáo Đồ án tốt nghiệp
Danh Huỳnh
 
ODP
Linux Kernel Crashdump
Marian Marinov
 
PDF
Linux Internals - Part I
Emertxe Information Technologies Pvt Ltd
 
DOCX
Proyecto monitorización nagios_felix
Félix Aranda Palma
 
PPTX
IPv6 Les Bases
Aymen Bouzid
 
PDF
Making Linux do Hard Real-time
National Cheng Kung University
 
PDF
Qemu Introduction
Chiawei Wang
 
PPT
Linux Booting Steps
Anando Kumar Paul
 
PDF
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
VMware Tanzu
 
PDF
Xvisor: embedded and lightweight hypervisor
National Cheng Kung University
 
PDF
Android Virtualization: Opportunity and Organization
National Cheng Kung University
 
PDF
Basics of Linux Commands, Git and Github
Devang Garach
 
PPTX
LINUX DISTRIBUTIONS.pptx
rahul355835
 
PDF
Tuned
Reanimation Bk
 
PDF
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Anne Nicolas
 
DOC
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Viết thuê trọn gói ZALO 0934573149
 
PPTX
Linux Kernel Programming
Nalin Sharma
 
PPT
Red hat linux 9 ppt2003
ashishsjcit
 
PPT
Virtual machine subhash gupta
Subhash Chandra Gupta
 
Báo cáo Đồ án tốt nghiệp
Danh Huỳnh
 
Linux Kernel Crashdump
Marian Marinov
 
Proyecto monitorización nagios_felix
Félix Aranda Palma
 
IPv6 Les Bases
Aymen Bouzid
 
Making Linux do Hard Real-time
National Cheng Kung University
 
Qemu Introduction
Chiawei Wang
 
Linux Booting Steps
Anando Kumar Paul
 
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
VMware Tanzu
 
Xvisor: embedded and lightweight hypervisor
National Cheng Kung University
 
Android Virtualization: Opportunity and Organization
National Cheng Kung University
 
Basics of Linux Commands, Git and Github
Devang Garach
 
LINUX DISTRIBUTIONS.pptx
rahul355835
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Anne Nicolas
 
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Viết thuê trọn gói ZALO 0934573149
 
Linux Kernel Programming
Nalin Sharma
 
Red hat linux 9 ppt2003
ashishsjcit
 
Virtual machine subhash gupta
Subhash Chandra Gupta
 

Viewers also liked (11)

PDF
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
National Cheng Kung University
 
PDF
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
National Cheng Kung University
 
PDF
How A Compiler Works: GNU Toolchain
National Cheng Kung University
 
PDF
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
National Cheng Kung University
 
PDF
Lecture notice about Embedded Operating System Design and Implementation
National Cheng Kung University
 
PDF
Explore Android Internals
National Cheng Kung University
 
PDF
Implement Runtime Environments for HSA using LLVM
National Cheng Kung University
 
PDF
從線上售票看作業系統設計議題
National Cheng Kung University
 
PDF
Virtual Machine Constructions for Dummies
National Cheng Kung University
 
PDF
PyPy's approach to construct domain-specific language runtime
National Cheng Kung University
 
PDF
Priority Inversion on Mars
National Cheng Kung University
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
National Cheng Kung University
 
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
National Cheng Kung University
 
How A Compiler Works: GNU Toolchain
National Cheng Kung University
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
National Cheng Kung University
 
Lecture notice about Embedded Operating System Design and Implementation
National Cheng Kung University
 
Explore Android Internals
National Cheng Kung University
 
Implement Runtime Environments for HSA using LLVM
National Cheng Kung University
 
從線上售票看作業系統設計議題
National Cheng Kung University
 
Virtual Machine Constructions for Dummies
National Cheng Kung University
 
PyPy's approach to construct domain-specific language runtime
National Cheng Kung University
 
Priority Inversion on Mars
National Cheng Kung University
 
Ad

Similar to Develop Your Own Operating Systems using Cheap ARM Boards (20)

PPTX
Lect 1_Embedded Linux Embedded RTOS ppt
Varsha506533
 
PDF
Faults inside System Software
National Cheng Kung University
 
PDF
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
National Cheng Kung University
 
PPT
Chap1
adisi
 
PDF
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
The Linux Foundation
 
PDF
Hints for L4 Microkernel
National Cheng Kung University
 
PDF
Building SuperComputers @ Home
Abhishek Parolkar
 
PPTX
Device Drivers
Kushal Modi
 
PDF
Construct an Efficient and Secure Microkernel for IoT
National Cheng Kung University
 
PPTX
Operating system Virtualization_NEW.pptx
Senthil Vit
 
PPTX
Computer system organization
Syed Zaid Irshad
 
PDF
Introduction to os module 1 pdf operating system
PallaviBasavaraj1
 
PPTX
Embedded linux
Wingston
 
PPTX
Unit-I_part-II_Virtualization.pptx
DARKKNIGHT116809
 
PDF
What Linux can learn from Solaris performance and vice-versa
Brendan Gregg
 
PDF
L4 Microkernel :: Design Overview
National Cheng Kung University
 
PDF
OpenHPC: A Comprehensive System Software Stack
inside-BigData.com
 
PDF
Embedded Os [Linux & Co.]
Ionela
 
PPTX
Embedded Systems
Benjim Thomas Mathew
 
PDF
Operating Systems 1 (4/12) - Architectures (Windows)
Peter Tröger
 
Lect 1_Embedded Linux Embedded RTOS ppt
Varsha506533
 
Faults inside System Software
National Cheng Kung University
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
National Cheng Kung University
 
Chap1
adisi
 
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
The Linux Foundation
 
Hints for L4 Microkernel
National Cheng Kung University
 
Building SuperComputers @ Home
Abhishek Parolkar
 
Device Drivers
Kushal Modi
 
Construct an Efficient and Secure Microkernel for IoT
National Cheng Kung University
 
Operating system Virtualization_NEW.pptx
Senthil Vit
 
Computer system organization
Syed Zaid Irshad
 
Introduction to os module 1 pdf operating system
PallaviBasavaraj1
 
Embedded linux
Wingston
 
Unit-I_part-II_Virtualization.pptx
DARKKNIGHT116809
 
What Linux can learn from Solaris performance and vice-versa
Brendan Gregg
 
L4 Microkernel :: Design Overview
National Cheng Kung University
 
OpenHPC: A Comprehensive System Software Stack
inside-BigData.com
 
Embedded Os [Linux & Co.]
Ionela
 
Embedded Systems
Benjim Thomas Mathew
 
Operating Systems 1 (4/12) - Architectures (Windows)
Peter Tröger
 
Ad

More from National Cheng Kung University (13)

PDF
Making Linux do Hard Real-time
National Cheng Kung University
 
PDF
2016 年春季嵌入式作業系統課程說明
National Cheng Kung University
 
PDF
Interpreter, Compiler, JIT from scratch
National Cheng Kung University
 
PDF
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
National Cheng Kung University
 
PDF
The Internals of "Hello World" Program
National Cheng Kung University
 
PDF
Open Source from Legend, Business, to Ecosystem
National Cheng Kung University
 
PDF
Summer Project: Microkernel (2013)
National Cheng Kung University
 
PDF
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
National Cheng Kung University
 
PDF
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
National Cheng Kung University
 
PDF
Shorten Device Boot Time for Automotive IVI and Navigation Systems
National Cheng Kung University
 
PDF
Microkernel Evolution
National Cheng Kung University
 
PDF
Develop Your Own Operating System
National Cheng Kung University
 
PDF
olibc: Another C Library optimized for Embedded Linux
National Cheng Kung University
 
Making Linux do Hard Real-time
National Cheng Kung University
 
2016 年春季嵌入式作業系統課程說明
National Cheng Kung University
 
Interpreter, Compiler, JIT from scratch
National Cheng Kung University
 
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
National Cheng Kung University
 
The Internals of "Hello World" Program
National Cheng Kung University
 
Open Source from Legend, Business, to Ecosystem
National Cheng Kung University
 
Summer Project: Microkernel (2013)
National Cheng Kung University
 
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
National Cheng Kung University
 
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
National Cheng Kung University
 
Shorten Device Boot Time for Automotive IVI and Navigation Systems
National Cheng Kung University
 
Microkernel Evolution
National Cheng Kung University
 
Develop Your Own Operating System
National Cheng Kung University
 
olibc: Another C Library optimized for Embedded Linux
National Cheng Kung University
 

Recently uploaded (20)

PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Biography of Daniel Podor.pdf
Daniel Podor
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 

Develop Your Own Operating Systems using Cheap ARM Boards

  • 1. Develop Your Own Operating Systems using Cheap ARM Boards Jim Huang ( 黃敬群 ) <[email protected]> Jan 8, 2014 / NCTU, Taiwan
  • 2. Rights to copy © Copyright 2014 0xlab http://0xlab.org/ Corrections, suggestions, contributions and translations are welcome! Attribution – ShareAlike 3.0 Latest update: Jan 14, 2014 You are free to copy, distribute, display, and perform the work to make derivative works to make commercial use of the work Under the following conditions Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
  • 3. Goals of This Presentation • 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
  • 4. Agenda • • • • Yet another Operating System? Embedded Operating System Designs Cheap ARM boards Development flow using open source technologies
  • 6. Reasons of Home-brew OS • Escape from large-scale and uncertain code base – Linux is a good example: Mature but hard to fit everyone's need • Exploit new systematic methods – Hypervisor for virtualization, runtime isolation – Heterogeneous computing for both performance and power efficiency • Customization – Deeply embedded environments, security, education (xinu, minix, xv6), domain-specific language/runtime, mobile (OKL4; 1.5 billion shipment!) • "Just for Fun" – Linus Torvalds
  • 7. Techniques inspired by OS • Even Web/Application Framework learn the performance techniques from OS concepts. • Virtualization – Hypervisor, Resource Kernel (KVM), … – Intel VT-d , ARM Cortex-A15/A7, ARMv8 • Security – Dynamic tracing, analysis, and instrumentation using VM
  • 8. Statistics about Large-scale Systems • Drivers cause 85% of Windows XP crashes. – Michael M. Swift, Brian N. Bershad, Henry M. Levy: “Improving the Reliability of Commodity Operating Systems”, SOSP 2003 • Error rate in Linux drivers is 3x (maximum: 10x) higher than for the rest of the kernel – Life expectancy of a bug in the Linux kernel (~2.4): 1.8 years – Andy Chou, Junfeng Yang, Benjamin Chelf, Seth Hallem, Dawson R. Engler: “An Empirical Study of Operating System Errors”, SOSP 2001
  • 9. Some statistics • Causes for driver bugs – 23% programming error – 38% mismatch regarding device specification – 39% OS-driver-interface misconceptions – Leonid Ryzhyk, Peter Chubb, Ihor Kuz and Gernot Heiser: “Dingo: Taming device drivers”, EuroSys 2009
  • 10. Anecdote: Linux e1000 NVRAM bug • [Aug 8, 2008] Bug report: e1000 PCI-X network cards rendered broken by Linux 2.6.27-rc – overwritten NVRAM on card • [Oct 1, 2008] Intel releases quickfix – map NVRAM somewhere else • [Oct 15, 2008] Reason found: – dynamic ftrace framework tries to patch __init code, but .init sections are unmapped after running init code – NVRAM got mapped to same location – scary cmpxchg() behavior on I/O memory • [Nov 2, 2008] dynamic ftrace reworked for Linux 2.6.28-rc3 FTrace & NIC driver! instrumentation vs. device driver
  • 11. Linux Device Driver bugs [Dingo: Taming device drivers, 2009]
  • 12. Linux version 3.0 • consists of – 7702 features – 893 Kconfig files – 31281 source files – 88897 #ifdef blocks
  • 16. Bugs in Linux Device Driver
  • 17. Bugs in Linux Device Driver Device protocol violation examples: ✗ Issuing a command to uninitialized device ✗ Writing an invalid register value ✗ Incorrectly managing DMA descriptors
  • 18. Linux Device Driver Bug Portion
  • 19. Bugs in Linux Device Driver Mellanox Infinihost controller Driver if(cur_state==IB_RESET && new_state==IB_RESET){ return 0; }
  • 20. Linux Device Driver Bug Portion
  • 22. Further study about concurrency bugs • Markus Peloquin, Lena Olson, Andrew Coonce, University of Wisconsin–Madison, “Simultaneity Safari: A Study of Concurrency Bugs in Device Drivers" (2009) • Types of Device Driver Bugs
  • 23. Linux Device Driver Bug Portion
  • 25. IoT = I own Technologies, but... • You can only use the devices, services, rights, etc. without really owning them even if you buy the “products" in higher price. • Ecosystem is getting quite essential for applications.
  • 26. Deeply Embedded Devices • Power awareness; solid and limited applications • Multi-tasking or cooperative scheduling is still required • IoT (Internet of Things) is the specialized derivative with networking facility • Communication capability is built-in for some products • Example: AIRO wristband (health tracker) http://www.weweartech.com/amazing-new-uses-smart-watches/
  • 27. Work at AcoMo: Physiological Inspection • Analyze signals from various bio sensors and apply efficient algorithms to examine the healthy condition
  • 29. AcoMo built in-house OS for products and releases the basic part as an open source effort (invisible) Medical devices make sense in our life. :: home-care :: advance warning :: security
  • 30. Booting Process Power On PC Embedded BIOS Power On X-Loader Get Bootloader Get Bootloader GRUB U-Boot Get Kernel Kernel Embedded hardware: TI OMAP3730 SoC Get Kernel Kernel
  • 31. Embedded vs. PC • Hardware specification is not the major difference! – The functionality is. • PCs are a highly modular platform. Most components are in sockets or slots that permits easy replacement. • Embedded Systems tend to solder their components directly to the PCB as they don’t need to be replaced.
  • 34. Embedded vs. PC D i ff e r e n t P C I - E s t a n d a r d s V1.0/v2.0/v3.0 D i ff e r e n t l a n e c o u n t s x1/x2/x4/x8/x16 Also Legacy PCI support
  • 35. Embedded vs. PC USB 2.0 USB 3.0 Intel PCH Gigabit Ethernet 7.1 Audio Codec S-ATA 3 & 6Gbps IDE & Floppy
  • 36. Embedded vs. PC TI OMAP 3730 Processor 512MB DDR@200MHz PowerVR SGX530 Graphics All soldered directly to the board. Not intended for replacements.
  • 37. Booting Process ROM Code U-Boot IPL Startup Kernel X-Loader U-Boot Linux Kernel • On-Chip boot ROM code generally causes the CPU to perform minimal initialization of peripheral such as NAND Flash and instructs it to begin reading code from there into memory and executing it. • This code can be a standard embedded bootloader such as U-Boot, or it can be an IPL. • U-Boot loads the “IPL” image into memory, and begins executing it. • The “IPL” is an “Initial Program Loader” which is responsible for initializing basic hardware and passing control to “Startup” code, and subsequently the Kernel. Embedded hardware: TI OMAP3730 SoC
  • 38. IPL • • • • Begin in assembly, performs initialization for HLL Initialize CPU/(some) Peripheral Clocks Initialize basic I/O (serial) Minimal pin multiplexing for required peripherals (i.e. SDHC hardware) • Read in and decompresse “IFS” image (ramdisk + kernel) • Include basic (FAT) fi lesystem drivers for SDHC reading • Passes control to “Startup” • Can start “minidrivers” for device interaction before OS/Kernel even begins booting
  • 39. Startup • Startup begin in C language, initialize most peripherals, and sets up important kernel structures • Kernel expects a “syspage” structure to exist at a pre-defi ned location in memory. This structures provides important information about the host system. • Enable CPU SMP operation (multiple-cores) • Often re-do initialization done by IPL (such as serial I/O) to enable more advanced functionality • Inform minidrivers of new environment before passing control to kernel.
  • 40. System Information • Indicate CPU type (e.g. ARM) and vital information (e.g. number of cores), and other supported features such as NEON extensions. • Provide access to hardware-specifi c function callouts made available to the system before the Kernel was running • Provide information about the memory environment in which the kernel is running • Information about bus devices, IRQs • Information about connected peripherals and device trees for /dev population
  • 41. Cheap ARM Boards check "Introduction to Raspberry Pi" by Computer Science Club, University of Cyprus Student Clubs
  • 42. Development flow using Open Source Technologies
  • 43. Baking Pi – Operating System Development • Operating Systems Development! Course by Alex Chadwick. Version 1.0c (July 2013). http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ • Divided into several basic “blocks".
  • 44. JTAG • Initially devised for testing printed circuit boards with its boundary scanning functionality JTAG is now used extensively for debugging, programming CPLDS and initialising flash memory. • Can be useful to recover bricked devices or write new firmware to NAND on restricted devices. But the IGEP is un-brickable • Tools like OpenOCD and GDB ARM have successfully been used on OMAP530 devices like Beagleboard.
  • 45. Conclusion • BYOD (Build Your Own Device) and BYOD (Build Your Own Operating System) are feasible and getting easier with open source technologies • Domain specific applications always expect innovations from various sources including the customized kernel and userland • System trial with very low cost
  • 46. Reference • “Dingo: Taming Device Drivers”, Leonid Ryzhyk, Peter Chubb, Ihor Kuz, Gernot Heiser, UNSW/NICTA/Open Kernel Labs (2009) • "Hardware and Device Drivers", Björn Döbel, TU Dresden (2012) • "Configuration Coverage in the Analysis of Large-Scale System Software", Reinhard Tartler, Daniel Lohmann, Christian Dietrich, Christoph Egger, Julio Sincero, Friedrich-Alexander University (2011) • “AIRAC: A Static Analyzer for Detecting All Buffer Overrun Errors in C Programs", Kwangkeun Yi, Seoul National University (2005) • “CCured: Taming C Pointers”, George Necula, Scott McPeak, Wes Weimer, Berkeley (2002)