Linux Bootup Time Reduction for Digital Still Camera

30
Linux Bootup Time Reduction for Digital Still Camera Chan Ju, Park SW Laboratories Samsung Electronics

description

Linux Bootup Time Reduction for Digital Still Camera. Chan Ju, Park SW Laboratories Samsung Electronics. Agenda. Introduction DSC Bootup Procedure Bootup time reduction methods Boot loader Kernel Root File system Application Optimization Suspend/resume Results Further works - PowerPoint PPT Presentation

Transcript of Linux Bootup Time Reduction for Digital Still Camera

Page 1: Linux Bootup Time Reduction for Digital Still Camera

Linux Bootup Time Reduction for Digital Still Camera

Chan Ju, ParkSW Laboratories

Samsung Electronics

Page 2: Linux Bootup Time Reduction for Digital Still Camera

Introduction DSC Bootup ProcedureBootup time reduction methods– Boot loader– Kernel – Root File system– Application Optimization– Suspend/resume

ResultsFurther worksConclusion

Agenda

Page 3: Linux Bootup Time Reduction for Digital Still Camera

terms

DSC– Digital still camera

Bootup time– The time from platform power on to preview state

Preview state– The DSC state for ready-to-shot

3A– Auto focus, auto white balance, auto expose

Suspend/resume– Suspend to dram

RFS– Root file system for Linux Kernel

Robust FS– Linux file system for OneNAND flash

Normal boot, suspend/resume boot

Page 4: Linux Bootup Time Reduction for Digital Still Camera

introduction

About this project– In samsung, Embedded Linux ported for many CE devices

• DTV, DMB, Mobile phone, DVR, other set top boxes, etc– But not DSC area– DSC use many RTOSes ( vxworks, pSos, uITRON, Nucleus, etc)– Project stated for evaluation of embedded linux

Why Linux in DSC– Technical Convergence in CE Devices– Plentiful of Application– Open S/W Platform– Cost?

Page 5: Linux Bootup Time Reduction for Digital Still Camera

Embedded Linux on DSC– There exist only few cases which was published– E.g. Ricoh Company made prototype Linux DSC

DSC & bootup time– Long bootup time diminish customer satisfaction– Bootup Time is more important in DSC

Page 6: Linux Bootup Time Reduction for Digital Still Camera

Linux Bootup Time– PC : 1 min or more– Embedded System : 2~10 sec– Depends on system, Applications, Policy

• Image loading, H/W peripherals, application init

applied Bootup methods for DSC– Normal Boot

• bootloader ~ preview application running– Suspend/Resume

• using suspend-to-ram

Goals– Normal boot : 2 sec– Suspend/resume : 1 sec

Page 7: Linux Bootup Time Reduction for Digital Still Camera

Test Environments

Target Platform– Core

• ARM926EJS– Image processor

• Samsung S5C7380x– System clock

• 216Mhz Fclock,108Mhz Hclock– Memory

• 64MB DDR, • 64MB One-NAND flash ( async mode )

– DSC Module & etc• 6M CCD(CMOS) censor, AF/Zoom/Shutter/Iris m

otor, Digital LCD, JPEG/MPEG codec, etc.• USB, ADC, SD/MMC Card, etc

Kernel– 2.4.20– Non-compressed Image– Size : about 1MB

File System– Root fs : Cramfs– Robust FS for Flash filesystem in

OneNAND

Page 8: Linux Bootup Time Reduction for Digital Still Camera

Bootup time reduction is

Every little makes a mickle

All kinds of techniques are needed– Firmware (boot loader)

• Minimal system init• shortening image copy time• Boot devices

– Hardware initialization• One time System initialization • Remove H/W probing time• Only initialize the device which was used when bootup• E.g. Dsc motors, storage (HDD, Card, Flash), DSP, etc

Page 9: Linux Bootup Time Reduction for Digital Still Camera

– Image small sizing• kernel, root fs (libraries), D/D Modules, etc• Depends on the kernel configuration

– Device driver initialization• Remove H/W probing & Initialization• Using hard coding• Module loading policy

– Using static module if needed– Other modules can load when needed

– application optimization• Resource loading• Memory allocation• App setup procedure

– Suspend/resume

Page 10: Linux Bootup Time Reduction for Digital Still Camera

Boot Loader System initialization

Kernel image copy to RAM

Kernel Initialization

Init kernel

Init device driver

Mount root file system

Application Initialization

start RC script

DSC Process creation

DSC application initialization

Preview Mode (ready-to-shot)

DSC Booting Procedure

Page 11: Linux Bootup Time Reduction for Digital Still Camera

bootloader – reset ~ OneNAND boot loader(xloader) execute– xloader copied to SDRAM & execute at SDRAM– xloader copy u-boot to RAM– DSC motor init– u-boot execute & copy kernel Image to SDRAM

kernel init– Kernel Init code execute– init kernel subsystem– init static module– mount cramfs– execute init script

application init– execute basic DSC application module– setup preview mode sequence– display preview & OSD Image

Page 12: Linux Bootup Time Reduction for Digital Still Camera

Boot time measurements

Using H/W devices– Expensive – Target code modification is needed– Exact

Using serial outputs– ARM or MIPS has no counter register (x86:TSC reg.)– Using host serial in cross development environments– features

• Cheap• No or few modification for the target code• Can collect much data• Comparatively small differences

Page 13: Linux Bootup Time Reduction for Digital Still Camera

Initial bootup time (before optimization)

540

12.6(ms)

4840

560

6.74

Just after kernel and D/D portingUsing NAND flash, zImage

System init (bootloader)

Image copy

zImage decompressing

linux kernel start

linux kernel initialize

DSC Process creation & initialization

Preview state

Page 14: Linux Bootup Time Reduction for Digital Still Camera

Applied methods

Normal bootup– bootloader

• OneNAND booting (more faster than Nand flash, 2 times)– Kernel / device driver

• use Preset LJP (Loop Per Jiffies) • module init optimization• use non-compressed kernel image • size optimization ( kernel, library )• remove kernel message

– File system– application optimization

Suspend/resume

Page 15: Linux Bootup Time Reduction for Digital Still Camera

Not using u-boot except development periodBoot loader– initializes a system– loads the Kernel image into RAM

Minimal initialization– Memory, clock

Boot device– NAND Flash– OneNAND Flash

• When power on, xloader (1KB bootloader of OneNAND flash) is executed automatically

• hardly influence to bootup time• More fast than nand flash (2 times)

Boot loader

Page 16: Linux Bootup Time Reduction for Digital Still Camera

Flash Partition Usage (OneNAND flash)

bootloader paramters

Linux Kernel Image

CRAMFS(Code & Library files)

‘boot’ partitionxloader

Robust FS(System Config Files &

User Data Files)

64MB OneNAND

0

128K

256K

2MB

20MB

‘param’ partition

‘kernel’ partition

‘root’ partition

‘Robust FS’ partition

Reserved Area

Page 17: Linux Bootup Time Reduction for Digital Still Camera

Kernel & D/D

Using uncompressed Image– Save decompressing time

Preset loops_per_jiffy– Find out loops_per_jiffy values, and hard coding

Disable Console Output– Just add ‘quiet’ option to command line when compile

Remove root file system check routineConcurrent driver init – DSC Motor has long initialization time– Modification zoom motor init code

• More than 1sec• Motor init can be parallelized

– Initialize at start of the bootloader

Remove the static device driver– It makes smaller kernel– Save the module init time at bootup– The modules which is not need at bootup time can be loaded after bootup.

Page 18: Linux Bootup Time Reduction for Digital Still Camera

Saving memory allocation time for Image processing– Using boot-time allocation methods– Kernel doesn’t know about area– Can save mem alloc time– Can using the big area DMA memory

• Max : 12MB contiguous memory required (capture mode)

Page 19: Linux Bootup Time Reduction for Digital Still Camera

Issues of Root File System– Save copy time at bootloader – Save decompressing time when kernel initialized– small size image

• Using busy box

CRAMFS– Read only nand file system – Modifiable directory has to mount another R/W file system

– We use robust file system for OneNAND– It include bad block management algorithms

– Partial uncompressed cramfs– Save decompressing time– Not tested at this time

Root File system

Page 20: Linux Bootup Time Reduction for Digital Still Camera

Application init & loading

Loading OSD data– When system bootup, load only need data

DSC application– If preview mode, other process creation init & loading can delay

Memory allocation, copy– Time spending– DSC processing much Image data

Storage device Init & mount time– Sd/mmc card initialization– Initialization can be delayed

Background processing– Card Device Init (device init, mount, etc)– storage information reading– Init DCF/Exif S/W module

Page 21: Linux Bootup Time Reduction for Digital Still Camera

Results

Boot Stage NAND flash

Boot Loader

Boot loader 439

Kernel Image copy to RAM

730

KernelKernel basic

setup 899

Application

mount file system

Application (preview) start

650

Total (ms) 2718

OneNAND flash

500

899

650

2049

Page 22: Linux Bootup Time Reduction for Digital Still Camera

Results

Booting Operation Time

Bootloader Initialize CPU & RAM & Uboot 50

Copy kernel image (from flash to ram) 450

Kernel Init setup_arch() 50

trap_init() 10

kmem_cache_init() 10

mem_init() 20

vfs_caches_init() 20

page_cache_init() 10

rest_init() do_basic_setup() 190

prepare_namespace() 20

console open 20

Application ready to use file system 480

DSC process (preview mode) 650

Total 1980

Page 23: Linux Bootup Time Reduction for Digital Still Camera

Suspend / Resume

suspend-to-ramDuring system suspend, the ram change to self-refresh modeissues– The cost of suspend/resume to Ram

• Power consumption

– Self refresh mode of DRAM– power off all devices except but RAM– Boot flags registers

• If it locates at DSP, consume more power• Using power management unit (PMU)

– Other information will be stored at global variables in DRAM• CPU register, stack, I/O register values

Page 24: Linux Bootup Time Reduction for Digital Still Camera

System suspend procedure

CPU Register Save to RAM

IO Register Contents save to RAM

Set to self refresh mode of RAM

Power off Button Push

Save flag of fast boot to PMU Register

Power off CPU &

all devices except PMU & RAM

Page 25: Linux Bootup Time Reduction for Digital Still Camera

System resume procedure

Reset vector

DSC H/W init

Disable Interrupt

Check if suspendedCheck if suspended

Clock, Memory Init

NormalNormal

Kernel loading & jump

Restore HW register values

Execute DSC app

Set interrupt for resume

Restore variables &

CPU register values

DSC HW / App init &

Check DSC Mode

suspended

Resume boot processResume boot process

Boot Boot

loaderloader

PMU power on

Normal boot processNormal boot process

Power on

* PMU: Power Management Unit* PMU: Power Management Unit

Page 26: Linux Bootup Time Reduction for Digital Still Camera

Results of suspend/resume

from reset to preview state– About 800 ms

For power saving– It is possible to full shutdown when user does not operate

during settled time

Page 27: Linux Bootup Time Reduction for Digital Still Camera

Excepted methods

Kernel XIP– Executing code directly from flash– Reduce boot time and save cost, etc– Current platform has no proper devices (e.g Nor Flash)

Parallelizing of services execution– applying techniques of parallelizing RC-scripts at system / user space start up – Effectiveness depends on the number of services– Embedded system such as DSC has not many services

Page 28: Linux Bootup Time Reduction for Digital Still Camera

Further works

prelink (library execution optimization)BootcacheSuspend-to-diskBoot process analyzing with tools – Ex) Bootchart

optimized block copy in OneNAND– OneNAND cached copy– synchronous mode

Page 29: Linux Bootup Time Reduction for Digital Still Camera

Conclusion

There exist many methods for reducing the Linux Bootup timeThe Reduction methods are variant

from the DSC H/W or scenario,So we have to choice the proper policy.

Linux Bootup methods for DSC– normal boot– Suspend/resume

Many reduction methods can be adopted but,– choice & evaluation is needed

Embedded Linux can satisfy the requirements of DSC Bootup time

Page 30: Linux Bootup Time Reduction for Digital Still Camera

References

Linux on a Digital Camera, Porting 2.4 Linux kernel to an existing digital camera,Alain Volmat, Ricoh Company Ltd.Methods to Improve Bootup Time in Linux

Tim R. Bird, Sony ElectronicsIBM developer white paper, “Boot linux faster, parallelize

Linux system services to improve boot speed”|http://w w w -106.ibm .com /dev eloperw orks/linux /library /l-boot.htm l?ca= dg r-lnxw 04BootFaster