|
||||||||||
Boot time optimization for automobile and consumer applicationsRamya Ravichandran, Prabhuraj Tavag (Pathpartner Technology Pvt Ltd) Abstract: Embedded systems are fast becoming part of day to day life for comfort, convenience, entertainment, health care and security. With most of the pros like the increased use of smartphones, decreased hardware chip set cost, ease of use and availability of free and open source OS like Linux has enabled the use of embedded systems in multitudes. Be it phones, automobiles, home appliances and consumer targeted drones everything is getting “smart” and connected. One common and most crucial requirement for any device based on Linux is to boot as quickly as possible. For many of the applications like automobiles and health care devices it becomes very critical for a device to boot fast and resume few end user services. At Pathpartner, we have invested significant amount of efforts and time to anlalyse and provide optimum boot time solutions catering different segments on multiple platforms. INTRODUCTION In the modern world, booting a device quickly is very important for any system ,be it a consumer appliance /automotive infotainment systems or the upcoming home appliance like camera-drones. LINUX DEVICE BOOT SEQUENCE: Typically, a linux device boots in three phases. At power on, a basic hardware specific code loads from ROM, executes few instructions, initializes peripherals needed to run the bootloader. Bootloader will do a basic initialization of peripherals required to load the kernel into the memory. The kernel takes control, once it gets loaded to RAM from secondary memory storage. After kernel, device drivers are loaded and initialized with the devices as per sponsor requirements/applications. The kernel then initializes the file system, runs the init scripts and finally starts the user interactive layer. Let us look into three major components of boot sequence : Bootloaders Bootloader is a program that loads the operating system to memory. The primary services provided by a bootloader are initializing peripherals and loading the kernel to memory. Typical boot loader in Linux based systems is Das U-Boot. There are many methods and techniques to optimize various parts of u-boot, interms of code, size and load time from secondary storage like flash. Kernel The operating system after performing basic initializations and loads the device drivers included in the kernel. The Linux kernel is a monolithic kernel, supporting true preemptive multitasking (both in user mode and in kernel mode), virtual memory, shared libraries, demand loading, shared copy-on-write executables, memory management, the Internet protocol suite, and threading. The methods to optimize the linux kernel include configuring the kernel for the target end user applications, removing unwanted driver initializations, reducing the kernel size, deferring and loading the drivers at later time. File system and Applications The root file system when mounted, executes a set of init scripts which are part of it and are run by the init process. The scripts executed are generic and device specific initialization is also performed here. Applications are started towards the end of init scripts. We can optimize by removing unused/non executed legacy scripts/processes and optimizing time dependent services, rearranging the scripts init sequence and by optimizing application for quick loading. HARDWARE REFERENCE PLATFORMS: We have extensively worked on various platforms for boot time optimization. For reference we have considered following platforms :
METHODS AND TECHNIQUES Kernel Features related to performance that are removed for improving boot-time optimisation in SX configuration file: 1. HIGH_RES_TIMERS - High Resolution Timer Support asks if high resolution timer support can be enabled
2. Changing the device driver load sequence: Generally, Consumer applications have the following priority :
3. Invoking quiet mode Disabling the console/logs would provide efficient decrease in boot time for production .
BOOT TIME OPTIMISATION RESULTS :
In iMX 6 dual core - Tizen (Automotive infotainment reference platform) (1GHz dual core, Tizen 2.0, Genivi compliance 1.0, kernel 3.0.35, U-boot ver. 2012)
In SX series – Consumer electronics Applications (Kernel 3.10, U-boot ver. 2012)
CHARTS AND GRAPHS Figure 1: iMX platform – Boot time optimisation chart Figure 2:Davinci platform- Boot time optimisation If you wish to download a copy of this white paper, click here
|
Home | Feedback | Register | Site Map |
All material on this site Copyright © 2017 Design And Reuse S.A. All rights reserved. |