building and porting embedded operating systems

33
Difference between booting a PC or an Embedded System BUILDING AND PORTING EMBEDDED OPERATING SYSTEMS

Upload: lucio

Post on 26-Feb-2016

49 views

Category:

Documents


4 download

DESCRIPTION

Building and Porting embedded operating systems. Difference between booting a PC or an Embedded System. The Booting Process. Power On. PC. Power On. Embedded. BIOS. X-Loader. Get Bootloader. Get Bootloader. GRUB. U-Boot. Get Kernel. Get Kernel. Kernel. Kernel. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Building and Porting embedded operating systems

Difference between booting a PC or an Embedded System

BUILDING AND PORTING EMBEDDED OPERATING

SYSTEMS

Page 2: Building and Porting embedded operating systems

THE BOOTING PROCESS

Power On

BIOS

GRUB

Kernel

Get Bootloader

Get Kernel

Power On

X-Loader

U-Boot

Kernel

Get Bootloader

Get Kernel

PC Embedded

Page 3: Building and Porting embedded operating systems

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 SYSTEM VS PC

Page 4: Building and Porting embedded operating systems

EMBEDDED SYSTEM VS PC

i7-930

i7-940

i7-960

i7-950

i7-970

i7-920

i7-980X

i7-965X

Page 5: Building and Porting embedded operating systems

EMBEDDED SYSTEM VS PC

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

Voltage1.2-1.5v

LatencyCS-RAS-CAS-WE

Page 6: Building and Porting embedded operating systems

EMBEDDED SYSTEM VS PC

Different PC I -E s tandardsV1 .0 /v2 .0 /v3 .0

D ifferent l ane countsx1 /x2 /x4 /x8 /x16

A lso Legacy PC I suppor t

Page 7: Building and Porting embedded operating systems

EMBEDDED SYSTEM VS PC

USB 2.0

7.1 Audio Codec

USB 3.0

Gigabit Ethernet

S-ATA3 & 6Gbps

IDE & Floppy

Intel PCH

Page 8: Building and Porting embedded operating systems

EMBEDDED SYSTEM VS PC

TI OMAP 3730 Processor512MB DDR@200MHzPowerVR SGX530 Graphics

All soldered directly to theboard. Not intended forreplacements.

Page 9: Building and Porting embedded operating systems

PC booting is a much longer process than for embedded systems.

Desktop PCs are by far the worst due to their massive compatibility issue

Laptops are faster because their components are much more controlled.

IGEPv2

Raspberry Pi

BCM97425

x86 Laptop

x86 Desktop

0 20 40

Time to Linux Kernel PromptTime to BootloaderTime to POST

EMBEDDED SYSTEM VS PC

Desktop PC: Gigabyte GA-X58A-UD3R, Intel Core i7-950 @ 4.2GHz, 12GB DDR3-1600, GeForce GTX580, Crucial M4 256GB SSDLaptop PC: Dell XPS 15 L502x, Intel Core i7-2670QM @ 2.2GHz, 6GB DDR3-1600, Intel HD3000 & GeForce GT540M, Western Digital Caviar Black 750GB.

Page 10: Building and Porting embedded operating systems

BIOS and Bootloaders

BUILDING AND PORTING EMBEDDED OPERATING

SYSTEMS

Page 11: Building and Porting embedded operating systems

• BIOS stands for Basic Input Output System

• First performs Power on self test and initializes Memory, PCI bus, Video, storage, Network(PXE), HID and any other systems a bootloader may need to load the OS.

• Allows user to choose hardware settings within a simple UI

• X86 always starts CPU in real mode.• 20 bit segmented memory address space• Only 1 MiB of addressable memory.

BIOS

Page 12: Building and Porting embedded operating systems

BIOS

Page 13: Building and Porting embedded operating systems

• Post POST search for a bootable drive and copy 512byte MBR to RAM.

• This 512bytes is the MBR• Partition table 64b• Two byte boot signature• Optional Disk timestamps and signatures• First stage Bootstrap code takes up the rest

• The BIOS yields control to the bootstrap who's only task is to locate and execute a more complex second stage bootloader (grub,BOOTMGR,NTLDR)

BIOS

Page 14: Building and Porting embedded operating systems

What is a bootloader?• Program used to load an operating system or another boot loader.• Boot loaders run in Real mode and use BIOS provided code • Operating systems replace BIOS code with their own.

What is a second stage bootloader?• Programs like GRUB, LILO or NTLDR • allow multi-boot systems• They are aware of file systems• Allow creation of ram discs in memory to boot the linux kernel• Once the kernel has retrieved all the information it requires in Real mode it will

change the cpu to protected mode providing support for virtual memory, memory protection, multitasking and code privilege levels.

Bootloader

Page 15: Building and Porting embedded operating systems

What is it?• Unified Extensible Firmware Interface

• Replacement for BIOS

Improvements• Not a single piece of firmware but a programmable software

interface. • It is hardware independent

• It provides a standard method of interfacing with firmware during the boot process

• It's faster due to using Block I/O over interrupts

UEFI – The Future?

Page 16: Building and Porting embedded operating systems

• 64bit version can address all system memory while booting.

• Can boot from disks larger than 2TB

• Pre-boot networking support

• Mouse usable in boot options

• You can mount partitions and read file systems

• Doesn't solve the problem of requiring two drivers. One for the firmware and one for the operating system.

• Secure Boot(arguably)

UEFI – The Future?

Page 17: Building and Porting embedded operating systems

IGEPv2 framework

BUILDING AND PORTING EMBEDDED OPERATING

SYSTEMS

Page 18: Building and Porting embedded operating systems

IGEP boot process

ROM Code U-BootX-Loader Kernel

Page 19: Building and Porting embedded operating systems

ROM CodeWhat does the IGEP ROM code do?• Code is executed in a known location in ROM• Minimal Configuration is performed

• Some clocks set• Some memories and peripherals initialised

• Searches boot devices for suitable boot image

• Supports serial, SD card, NAND flash and USB amongst others.

• Boot order is defined by a set of GPIO configuration pins referred to as SYSBOOT

• On finding the first x-loader image it is copied to SRAM and then executed

Page 20: Building and Porting embedded operating systems

Serial Boot• ID is written out to the serial port and a response is waited for.• If response received within time limit ROM will transfer data received from serial port to

SRAM and execute it.

SD Boot• The ROM code looks for a suitably formatted SD card on the MMC controllers.

If a readable partition is found directory is scanned for a specially signed file called an "MLO" . Assuming the file is as expected, it is transferred into the internal SRAM and control is passed to it.

NAND\eMMC• If NAND is in the boot list the ROM code will attempt to load the first sector, skipping it if its

bad, corrupt or blank. If it reaches the 4th sector and no good sector has been found it will move on. If a good sector is found then it will load the contents to ram and then start executing it.

ROM Code

Page 21: Building and Porting embedded operating systems

X-loaderWhat is x-loader?• X-loader is a first stage boot-loader that implements a subset of the features of u-boot.• It's small enough to fit in on-chip memory but still provides the ability to configure the pin

muxing, clocks, serial console and DDR access to load the fully featured u-boot into the second stage boot loader.

• In IGEP a copy of the x-loader is part of the NAND• Not limited to 512bytes

MLO files• Through MLO files the need for a second stage boot loader can be removed. • An MLO file is a an x-loader file that has been given a header with the size of the image

and deployment memory location.• You can optionally define clock frequency amongst other things• MLO files allow zImages to be booted without the need for a second stage boot loader

Serial and SD• X-loader supports transfering an image to the board using kermit over a serial connection

and will also load a uboot.bin file stored on the SD.

Page 22: Building and Porting embedded operating systems

Watch out!Boot-loaders are doing configuration

that the kernel is not!

Page 23: Building and Porting embedded operating systems

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 the beagleboard.

Page 24: Building and Porting embedded operating systems

Das U-BootBUILDING AND PORTING EMBEDDED OPERATING

SYSTEMS

Page 25: Building and Porting embedded operating systems

OS/Bootloader Coupling in:

BUILDING AND PORTING EMBEDDED OPERATING

SYSTEMS

Page 26: Building and Porting embedded operating systems

QNX is a Canadian microkernel-based RTOS. Device drivers are all run as userspace applications

outside the kernel. Used in many applications, mainly automotive systems. HAM (High Availability Manager). Adaptive Partitioning Scheduler. Safety critical certification. QNX owned by RIM. Tightly coupled bootloader and kernel. Transparent distributed networking.

QNX?

Page 27: Building and Porting embedded operating systems

Most general purpose operating systems (such as linux) avoid becoming too tightly coupled with their bootloaders.

This has led to bootloaders which support a multitude of functions.

An RTOS developer can take advantage of this by using the generic bootloader (and it’s more advanced capabilit ies (NFS, ping) to ensure hardware works, and easily bring it to l ife.

During development this general purpose bootloader can be effectively used as a “bootloader loader”.

The high-functionality (and easy to hack!) bootloader (i.e. U-Boot) can then be removed from a shipped product, leaving behind only a basic tightly-coupled version.

BOOTLOADER/OS INTERACTION

Page 28: Building and Porting embedded operating systems

QNX BOOTING

U-Boot

Startup

QNX Kernel

On-Chip boot ROM code generally causes the CPU to perform minimal initialisation 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 a QNX IPL.

U-Boot loads the QNX “IPL” image into memory, and begins executing it.

The “IPL” is an “Initial Program Loader” which is responsible for init ial ising basic hardware and passing control to “Startup” code, and subsequently the QNX Kernel.

IPL

Page 29: Building and Porting embedded operating systems

Begins in assembly, performs initialisation for HLL. Initialises CPU/(some) Peripheral Clocks. Initialises basic I/O (serial). Minimal pin multiplexing for required peripherals (i.e.

SDHC hardware). Reads in and decompresses “IFS” image (ramdisk +

kernel). Includes basic (FAT) filesystem drivers for SDHC reading. Passes control to “Startup” Can start “minidrivers” for device interaction before

OS/Kernel even begins booting.

QNX IPL

CODE

CODE

Page 30: Building and Porting embedded operating systems

Startup begins in C language, initialises most peripherals, and sets up important kernel structures.

The QNX kernel expects a “syspage” structure to exist at a pre-defined location in memory. This structures provides important information about the host system.

Enables CPU SMP operation (multiple-cores).Often re-does initialisation done by IPL (such as serial

I/O) to enable more advanced functionality. Informs minidrivers of new environment before passing

control to kernel.

QNX STARTUP

CODE

Page 31: Building and Porting embedded operating systems

Indicates CPU type (e.g. ARM) and vital information (e.g. number of cores), and other supported features such as NEON extensions.

Provides access to hardware-specific function callouts made available to the system before the Kernel was running.

Provides 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.

SYSPAGE

Page 32: Building and Porting embedded operating systems

Prevents need for auxillary processors for instant-on peripheral ineraction.

Linked against bootloader code.Called periodically during startup, initially with

polling and then interrupts when they become available.

Full drivers are allowed access to minidriver memory once the kernel has loaded so they can take over without data loss.

Make use of I/O hardware within 10ms of power-on.

MINIDRIVERS

Page 33: Building and Porting embedded operating systems

QNX Implements its own FS-aware bootloader (IPL).This bootloader is tightly coupled with its own system

initialisation and kernel.This bootloader is only configurable via source code,

unlike U-Boot or Grub.Source code for bootloader and startup is freely

available for a variety of hardware (kernel is not):http://

community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/BSPAndDrivers

Questions?

SUMMARY