Boot Time
"Boot Time" referred in this page is the time elapsed from "chip coming out of reset" to "Linux Prompt" This page considers under 2 seconds boot time as fast boot
In short
Reuse the existing knowledge. Lot of knowledge is available inside and outside of TI /* provide relevant links here */. Measure and identify boot time spenders. Optimize them. U-boot probably is one of the key areas to target.
Techniques
- Optimize U-Boot
- Choose the optimal EMIF settings based on NOR used
- Optimize the NOR to RAM copy
- Optimize Crc32
- Avoid printfs
- Avoid I2C or any other slow peripheral access during U-boot
- Optimize Kernel
- Remove unused components from Kernel
- Use loadable modules option to defer initialization of components to after-boot.
Example: network initialization. - Avoid Linux timer calibration loop
- Avoid Kernel printks
- Optimize Filesystem
- Rebuild Rootfilesystem with minimal components
- Use cramfs as rootfilesystem
Linux Boot Sequence
- ARM boots and starts executing U-boot code from NOR in-place
- U-boot copies Kernel to RAM
- U-boot copies filesystem to RAM (copy can be avoided using flash filesystem /* link to relevant page here */ )
- U-Boot sets parameters and starts Kernel
- Kernel uncompresses itself
- Kernel initialization
- Driver Initialization
- Init
- Init scripts
- Shell
目前把yaffs2改成的cramfs 启动速度在10s左右
Avoid Linux timer calibration loop 可以再试试