SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
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...
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

Contenu connexe

Tendances

IntelON 2021 Processor Benchmarking
IntelON 2021 Processor BenchmarkingIntelON 2021 Processor Benchmarking
IntelON 2021 Processor BenchmarkingBrendan Gregg
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsNational Cheng Kung University
 
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014Davidlohr Bueso
 
Quickboot on i.MX6
Quickboot on i.MX6Quickboot on i.MX6
Quickboot on i.MX6Gary Bisson
 
Performance Tuning EC2 Instances
Performance Tuning EC2 InstancesPerformance Tuning EC2 Instances
Performance Tuning EC2 InstancesBrendan Gregg
 
SFO15-302: Energy Aware Scheduling: Progress Update
SFO15-302: Energy Aware Scheduling: Progress UpdateSFO15-302: Energy Aware Scheduling: Progress Update
SFO15-302: Energy Aware Scheduling: Progress UpdateLinaro
 
Accelerated Linux Core Dump Analysis training public slides
Accelerated Linux Core Dump Analysis training public slidesAccelerated Linux Core Dump Analysis training public slides
Accelerated Linux Core Dump Analysis training public slidesDmitry Vostokov
 
Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Brendan Gregg
 
Profiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf ToolsProfiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf ToolsemBO_Conference
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBshimosawa
 
OpenCL Programming 101
OpenCL Programming 101OpenCL Programming 101
OpenCL Programming 101Yoss Cohen
 
High-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringScyllaDB
 

Tendances (20)

Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
 
IntelON 2021 Processor Benchmarking
IntelON 2021 Processor BenchmarkingIntelON 2021 Processor Benchmarking
IntelON 2021 Processor Benchmarking
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
 
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
 
Quickboot on i.MX6
Quickboot on i.MX6Quickboot on i.MX6
Quickboot on i.MX6
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
Quarkus k8s
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
 
Performance Tuning EC2 Instances
Performance Tuning EC2 InstancesPerformance Tuning EC2 Instances
Performance Tuning EC2 Instances
 
SFO15-302: Energy Aware Scheduling: Progress Update
SFO15-302: Energy Aware Scheduling: Progress UpdateSFO15-302: Energy Aware Scheduling: Progress Update
SFO15-302: Energy Aware Scheduling: Progress Update
 
Microkernel Evolution
Microkernel EvolutionMicrokernel Evolution
Microkernel Evolution
 
Accelerated Linux Core Dump Analysis training public slides
Accelerated Linux Core Dump Analysis training public slidesAccelerated Linux Core Dump Analysis training public slides
Accelerated Linux Core Dump Analysis training public slides
 
eBPF/XDP
eBPF/XDP eBPF/XDP
eBPF/XDP
 
Embedded Android : System Development - Part IV (Android System Services)
Embedded Android : System Development - Part IV (Android System Services)Embedded Android : System Development - Part IV (Android System Services)
Embedded Android : System Development - Part IV (Android System Services)
 
Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)
 
Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
 
Profiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf ToolsProfiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf Tools
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
 
OpenCL Programming 101
OpenCL Programming 101OpenCL Programming 101
OpenCL Programming 101
 
UEFI HTTP/HTTPS Boot
UEFI HTTP/HTTPS BootUEFI HTTP/HTTPS Boot
UEFI HTTP/HTTPS Boot
 
High-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uring
 

En vedette

中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學National Cheng Kung University
 
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明National Cheng Kung University
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明National Cheng Kung University
 
Lecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationLecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationNational Cheng Kung University
 
PyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimePyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimeNational Cheng Kung University
 

En vedette (13)

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

Similaire à Develop Your Own Operating Systems using Cheap ARM Boards

Chap1
Chap1Chap1
Chap1adisi
 
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...The Linux Foundation
 
Building SuperComputers @ Home
Building SuperComputers @ HomeBuilding SuperComputers @ Home
Building SuperComputers @ HomeAbhishek Parolkar
 
Computer system organization
Computer system organizationComputer system organization
Computer system organizationSyed Zaid Irshad
 
Embedded linux
Embedded linuxEmbedded linux
Embedded linuxWingston
 
Unit-I_part-II_Virtualization.pptx
Unit-I_part-II_Virtualization.pptxUnit-I_part-II_Virtualization.pptx
Unit-I_part-II_Virtualization.pptxDARKKNIGHT116809
 
What Linux can learn from Solaris performance and vice-versa
What Linux can learn from Solaris performance and vice-versaWhat Linux can learn from Solaris performance and vice-versa
What Linux can learn from Solaris performance and vice-versaBrendan Gregg
 
OpenHPC: A Comprehensive System Software Stack
OpenHPC: A Comprehensive System Software StackOpenHPC: A Comprehensive System Software Stack
OpenHPC: A Comprehensive System Software Stackinside-BigData.com
 
Embedded Os [Linux & Co.]
Embedded Os [Linux & Co.]Embedded Os [Linux & Co.]
Embedded Os [Linux & Co.]Ionela
 
Operating Systems 1 (4/12) - Architectures (Windows)
Operating Systems 1 (4/12) - Architectures (Windows)Operating Systems 1 (4/12) - Architectures (Windows)
Operating Systems 1 (4/12) - Architectures (Windows)Peter Tröger
 
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Intel® Software
 

Similaire à Develop Your Own Operating Systems using Cheap ARM Boards (20)

Faults inside System Software
Faults inside System SoftwareFaults inside System Software
Faults inside System Software
 
Chap1
Chap1Chap1
Chap1
 
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
 
Hints for L4 Microkernel
Hints for L4 MicrokernelHints for L4 Microkernel
Hints for L4 Microkernel
 
Building SuperComputers @ Home
Building SuperComputers @ HomeBuilding SuperComputers @ Home
Building SuperComputers @ Home
 
Device Drivers
Device DriversDevice Drivers
Device Drivers
 
Construct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoTConstruct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoT
 
Computer system organization
Computer system organizationComputer system organization
Computer system organization
 
Embedded linux
Embedded linuxEmbedded linux
Embedded linux
 
Unit-I_part-II_Virtualization.pptx
Unit-I_part-II_Virtualization.pptxUnit-I_part-II_Virtualization.pptx
Unit-I_part-II_Virtualization.pptx
 
What Linux can learn from Solaris performance and vice-versa
What Linux can learn from Solaris performance and vice-versaWhat Linux can learn from Solaris performance and vice-versa
What Linux can learn from Solaris performance and vice-versa
 
L4 Microkernel :: Design Overview
L4 Microkernel :: Design OverviewL4 Microkernel :: Design Overview
L4 Microkernel :: Design Overview
 
OpenHPC: A Comprehensive System Software Stack
OpenHPC: A Comprehensive System Software StackOpenHPC: A Comprehensive System Software Stack
OpenHPC: A Comprehensive System Software Stack
 
Embedded Os [Linux & Co.]
Embedded Os [Linux & Co.]Embedded Os [Linux & Co.]
Embedded Os [Linux & Co.]
 
Embedded Systems
Embedded SystemsEmbedded Systems
Embedded Systems
 
Operating Systems 1 (4/12) - Architectures (Windows)
Operating Systems 1 (4/12) - Architectures (Windows)Operating Systems 1 (4/12) - Architectures (Windows)
Operating Systems 1 (4/12) - Architectures (Windows)
 
Handout2o
Handout2oHandout2o
Handout2o
 
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
 
Lecture 4
Lecture 4Lecture 4
Lecture 4
 
1061 (m2)
1061 (m2)1061 (m2)
1061 (m2)
 

Plus de National Cheng Kung University

進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明National Cheng Kung University
 
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明National Cheng Kung University
 
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例National Cheng Kung University
 
Shorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsShorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsNational Cheng Kung University
 

Plus de National Cheng Kung University (12)

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

Dernier

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Dernier (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Develop Your Own Operating Systems using Cheap ARM Boards

  • 1. Develop Your Own Operating Systems using Cheap ARM Boards Jim Huang ( 黃敬群 ) <jserv@0xlab.org> 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
  • 14.
  • 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)