1、Linux Bootup Time Reduction for Digital Still Camera,Chan Ju, Park SW Laboratories Samsung Electronics,Introduction DSC Bootup Procedure Bootup time reduction methods Boot loader Kernel Root File system Application Optimization Suspend/resume Results Further works Conclusion,Agenda,terms,DSC Digital
2、 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, susp
3、end/resume boot,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 linuxWhy Linux in DSC Tech
4、nical Convergence in CE Devices Plentiful of Application Open S/W Platform Cost?,Embedded Linux on DSC There exist only few cases which was published E.g. Ricoh Company made prototype Linux DSCDSC & bootup time Long bootup time diminish customer satisfaction Bootup Time is more important in DSC,Linu
5、x Bootup Time PC : 1 min or more Embedded System : 210 sec Depends on system, Applications, Policy Image loading, H/W peripherals, application initapplied Bootup methods for DSC Normal Boot bootloader preview application running Suspend/Resume using suspend-to-ramGoals Normal boot : 2 sec Suspend/re
6、sume : 1 sec,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 motor, Digital LCD, JPEG/MPEG codec, etc. USB, ADC, SD
7、/MMC Card, etc,Kernel 2.4.20 Non-compressed Image Size : about 1MBFile System Root fs : Cramfs Robust FS for Flash filesystem in OneNAND,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
8、devicesHardware 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,Image small sizing kernel, root fs (libraries), D/D Modules, etc Depends on the kernel configurationDevice
9、 driver initialization Remove H/W probing & Initialization Using hard coding Module loading policy Using static module if needed Other modules can load when neededapplication optimization Resource loading Memory allocation App setup procedureSuspend/resume,DSC Booting Procedure,bootloader reset OneN
10、AND 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 SDRAMkernel init Kernel Init code execute init kernel subsystem init static module mount cramfs execute init scriptapplication init execute basi
11、c DSC application module setup preview mode sequence display preview & OSD Image,Boot time measurements,Using H/W devices Expensive Target code modification is needed ExactUsing serial outputs ARM or MIPS has no counter register (x86:TSC reg.) Using host serial in cross development environments feat
12、ures Cheap No or few modification for the target code Can collect much data Comparatively small differences,Initial bootup time (before optimization),Just after kernel and D/D porting Using NAND flash, zImage,Applied methods,Normal bootup bootloader OneNAND booting (more faster than Nand flash, 2 ti
13、mes) 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 optimizationSuspend/resume,Not using u-boot except development period Boot loader initializes a s
14、ystem loads the Kernel image into RAM Minimal initialization Memory, clockBoot 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,Flash Partition Usage (One
15、NAND flash),bootloader paramters,Linux Kernel Image,CRAMFS (Code & Library files),boot partition,xloader,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,Kernel & D/D,Using uncompress
16、ed 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 routine Concurrent driver init DSC Motor has long initialization time Modification zoom mot
17、or 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.,Saving memory allocation time for Imag
18、e processing Using boot-time allocation methods Kernel doesnt know about area Can save mem alloc time Can using the big area DMA memory Max : 12MB contiguous memory required (capture mode),Issues of Root File System Save copy time at bootloader Save decompressing time when kernel initialized small s
19、ize image Using busy boxCRAMFS 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,Applicatio
20、n 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 c
21、an be delayed Background processing Card Device Init (device init, mount, etc) storage information reading Init DCF/Exif S/W module,Results,Results,Suspend / Resume,suspend-to-ram During system suspend, the ram change to self-refresh mode issues The cost of suspend/resume to Ram Power consumption Se
22、lf 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,System suspend procedure,CPU Register Sav
23、e 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,System resume procedure,Reset vector,DSC H/W init,Disable Interrupt,Check if suspended,Clock, Memory Init,Normal,Kernel
24、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 process,Boot loader,PMU power on,Normal boot process,Power on,* PMU: Power Management Unit,Results of suspend/resume,fro
25、m reset to preview state About 800 msFor power saving It is possible to full shutdown when user does not operate during settled time,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
26、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,Further works,prelink (library execution optimization) Bootcache Suspend-to-disk Boot process analyz
27、ing with tools Ex) Bootchart optimized block copy in OneNAND OneNAND cached copy synchronous mode,Conclusion,There exist many methods for reducing the Linux Bootup time The Reduction methods are variant from the DSC H/W or scenario,So we have to choice the proper policy. Linux Bootup methods for DSC
28、 normal boot Suspend/resume Many reduction methods can be adopted but, choice & evaluation is neededEmbedded Linux can satisfy the requirements of DSC Bootup time,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 Electronics IBM developer white paper, “Boot linux faster, parallelize Linux system services to improve boot speed”| http:/