Beruflich Dokumente
Kultur Dokumente
EE382N-4 Project
Outline
Motivation Objectives Hardware of BeagleBoard Techniques in optimizing boot time Boot time result Conclusions Future work Live demo
EE382N-4 Project
Motivation:
Why Faster Boot Time?
Boot time definition: Time from turning on power to a shell welcome prompt (or a GUI).
Impact the first perception an end user has of the product Critical to obtain a positive end user experience Save power
EE382N-4 Project
Objectives
Optimize software in BeagleBoard for speed 1. bootloader 2. Linux Kernel 3. user-space applications
Achieve a 5-second fast boot time in BeagleBoard. Original boot time second was about 15 seconds.
EE382N-4 Project
BeagleBoard Hardware
OMAP 3530 Processor 600 MHz ARM Cortex-A8 with NEON A8 256MB on-chip RAM 256MB NAND Flash Peripheral I/Os DVI-D, SD/MMC+, S-Video, USB 2.0 Video, Stereo In/Out, RS232 Serial Power USB or 5V DC
EE382N-4 Project
EE382N-4 Project
Boot Sequence
EE382N-4 Project
Strategies
Load from NAND Flash
X-loader/u-boot loading speed in SVC32 cpu mode: NAND = 1MB, MMC = 500KB/s boot NANDs block size is 128 KB per reading. We modified x x-loader to only load 2 blocks (instead of 7 blocks originally).
EE382N-4 Project
Strategies (cont.)
Reduce user response time
1. Set bootdelay to zero in u-boot (so user can't interrupt u boot u-boot) 2. Turn off serial output by passing 'quiet' parameter to Kernel
Strategies (cont.)
User-space optimization
1. Build Linux rootfs from scratch. By carefully tuning uclibc and busybox, we reduced total size of rootfs to about 780KB without losing desired features. 2. Minimize init script: disable syslogd and klogd, remove unused tty and rc scripts.
EE382N-4 Project
EE382N-4 Project
EE382N-4 Project
Conclusions
We achieved shorter boot time than we expected expected. We established a website with wiki pages, all modified source code and binaries: http://code.google.com/p/swiftbeagle/ We obtained a good understanding on 1. BeagleBoard hardware 2. What are required in writing a bootloader (such as disabling MMU/dcache, detecting machine ID and passing ATAGS to Kernel). We wrote our own bootloader called S-Boot. However, development of S-Boot is still in debugging phase and Kernel stalls after uncompressing itself. 3. Patching Kernel source 4. Building a Linux rootfs from scratch 5. Compiler optimization techniques (we believe we found a defect in Code Sourcery's latest ARM gcc compiler/library)
EE382N-4 Project
Delay (second) Loading u-boot from NAND Loading Kernel from NAND Execution (x-loader + u-boot) Uncompressing Kernel Execution (Kernel) Mounting Memory Card User-space applications Total 0.22 1.28 0.06 0.73 0.29 0.27 0.07 0.42
uncompressed Kernel
faster FS/driver
EE382N-4 Project
Demo Time
EE382N-4 Project