Hi Nicolas, 2010/7/28 Nicolas Luna <[email protected]>
> Hi guys, > > I'm trying to make by board boot as quick as possible. I did some > optimisation with the "All This For 1 Second Boot" wiki and other website. I > would like to reduce a little bit more the boot time and I wonder if you > guys could give me some clues. > Did you also look at: http://processors.wiki.ti.com/index.php/Boot_Time_Optimization http://processors.wiki.ti.com/index.php/Measuring_Boot_Time > > I copied my boot log below. For sure I'll remove the uboot autoboot delay > and probably build a new kernel with modules. I putted in bold part that I > think it is possible to do more optimisation. > > 1- See bullet #3. > 2- The verifying Checksum is about 400 msec is it possible to skip it? > use: set verify n 3- It takes ~1 sec to start booting the kernel and there is a other ~1 sec > delay between the starting kernel and the beginning of the uncompressing. > Why it's so long? Ok maybe there is the copy from NOR to RAM but it should > not take more than few msec. > In the links above there was the possibility to use EDMA to copy from NOR to RAM. It is also possible to use uncompresses kernel and there is a trade of about uncompressing kernel and managing a bigger uncompressed kernel image. > 4- It takes ~1 sec to the kernel to free 120K memory... I got enought RAM > is it possible to remove it? > I don't know.. but interesting. > > I got custom hardware based on OMAP-L138 with FS (jffs2) and compressed > kernel in NOR Flash. > Have you used JFFS2_SUMMARY ? UBIFS? Have you checked cpu frequency? Have you checked NOR bus timings? > Thanks a lot > > Nicolas > > > ------------------------------------------------------------------------------------- > > 0.000 0.000: OMAP-L138 initialization passed! > 0.000 0.000: Booting TI User Boot Loader > 0.004 0.004: UBL Version: 1.65 > 0.004 0.000: UBL Flashtype: NOR > 0.008 0.004: Starting NOR Copy... > 0.008 0.000: CFI Query...passed. > 0.012 0.004: NOR Initialization: > 0.012 0.000: Command Set: Intel > 0.012 0.000: Manufacturer: INTEL > 0.016 0.004: Size: 0x00000020 MB > 0.020 0.004: Valid magicnum, 0x55424CBB, found.. > 0.184 0.164: DONE > 0.188 0.004: Jumping to entry point at 0xC1080000. > Delete every messages not absolutely critical. Did you skip from .config every DEBUG,KALLSYMS and similar configs? > 0.504 0.316: > 1.548 1.044: Hit any key to stop autoboot: 0 > *2.372 0.824: ## Booting kernel from Legacy Image at c0007fc0 ...* > 2.372 0.000: Image Name: Linux-2.6.34 > 2.380 0.008: Image Type: ARM Linux Kernel Image (uncompressed) > 2.380 0.000: Data Size: 1505956 Bytes = 1.4 MB > 2.384 0.004: Load Address: c0008000 > 2.388 0.004: Entry Point: c0008000 > *2.808 0.420: Verifying Checksum ... OK* > 2.808 0.000: Loading Kernel Image ... OK > 2.808 0.000: OK > 2.808 0.000: > *2.812 0.004: Starting kernel ...* > *2.812 0.000:* > *3.860 1.048: Uncompressing Linux... done, booting the kernel.* > 4.264 0.404: Linux version 2.6.34 (i...@idt-ubuntu-linux) (gcc version 4.3.3 > (Sourcery G++ Lite 2009q1-203) ) #89 PREEMPT Thu Jul 22 15:24:03 EDT 2010 > 4.268 0.004: CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 > 4.272 0.004: CPU: VIVT data cache, VIVT instruction cache > 4.276 0.004: Machine: DaVinci DA850/OMAP-L138 EVM > 4.280 0.004: Memory policy: ECC disabled, Data cache writeback > 4.284 0.004: DaVinci da850/omap-l138 variant 0x0 > 4.288 0.004: Built 1 zonelists in Zone order, mobility grouping on. Total > pages: 32512 > 4.300 0.012: Kernel command line: lpj=747520 mem=128M > console=ttyS2,115200n8 root=/dev/mtdblock2 rootfstype=jffs2 rw ip=off > 4.304 0.004: PID hash table entries: 512 (order: -1, 2048 bytes) > 4.308 0.004: Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) > 4.316 0.008: Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) > 4.316 0.000: Memory: 128MB = 128MB total > 4.324 0.008: Memory: 126752k/126752k available, 4320k reserved, 0K highmem > 4.324 0.000: Virtual kernel memory layout: > 4.332 0.008: vector : 0xffff0000 - 0xffff1000 ( 4 kB) > Put 'quiet' at the end of bootargs > 4.336 0.004: fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) > 4.340 0.004: DMA : 0xff000000 - 0xffe00000 ( 14 MB) > 4.344 0.004: vmalloc : 0xc8800000 - 0xfea00000 ( 866 MB) > 4.348 0.004: lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) > 4.352 0.004: modules : 0xbf000000 - 0xc0000000 ( 16 MB) > 4.356 0.004: .init : 0xc0008000 - 0xc0026000 ( 120 kB) > 4.360 0.004: .text : 0xc0026000 - 0xc02e8000 (2824 kB) > 4.364 0.004: .data : 0xc02e8000 - 0xc0307a60 ( 127 kB) > 4.372 0.008: SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, > CPUs=1, Nodes=1 > 4.376 0.004: Hierarchical RCU implementation. > 4.376 0.000: NR_IRQS:245 > 4.380 0.004: Console: colour dummy device 80x30 > 4.384 0.004: Calibrating delay loop (skipped) preset value.. 149.50 > BogoMIPS (lpj=747520) > 4.388 0.004: Mount-cache hash table entries: 512 > 4.392 0.004: CPU: Testing write buffer coherency: ok > 4.396 0.004: DaVinci: 144 gpio irqs > 4.396 0.000: NET: Registered protocol family 16 > 4.400 0.004: bio: create slab <bio-0> at 0 > 4.404 0.004: SCSI subsystem initialized > 4.408 0.004: usbcore: registered new interface driver usbfs > 4.412 0.004: usbcore: registered new interface driver hub > 4.416 0.004: usbcore: registered new device driver usb > 4.416 0.000: Switching to clocksource timer0_1 > 4.420 0.004: musb_hdrc: version 6.0, pio, host, debug=0 > 4.424 0.004: Waiting for USB PHY clock good... > 4.428 0.004: musb_hdrc musb_hdrc: MUSB HDRC host driver > 4.432 0.004: musb_hdrc musb_hdrc: new USB bus registered, assigned bus > number 1 > 4.436 0.004: hub 1-0:1.0: USB hub found > 4.440 0.004: hub 1-0:1.0: 1 port detected > 4.444 0.004: musb_hdrc musb_hdrc: USB Host mode controller at fee00000 > using PIO, IRQ 58 > 4.448 0.004: NET: Registered protocol family 2 > 4.456 0.008: IP route cache hash table entries: 1024 (order: 0, 4096 bytes) > 4.460 0.004: TCP established hash table entries: 4096 (order: 3, 32768 > bytes) > 4.464 0.004: TCP bind hash table entries: 4096 (order: 2, 16384 bytes) > 4.468 0.004: TCP: Hash tables configured (established 4096 bind 4096) > 4.472 0.004: TCP reno registered > 4.476 0.004: UDP hash table entries: 256 (order: 0, 4096 bytes) > 4.480 0.004: UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) > 4.484 0.004: NET: Registered protocol family 1 > 4.488 0.004: RPC: Registered udp transport module. > 4.492 0.004: RPC: Registered tcp transport module. > 4.496 0.004: RPC: Registered tcp NFSv4.1 backchannel transport module. > 4.500 0.004: JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. > 4.504 0.004: msgmni has been set to 247 > 4.508 0.004: io scheduler noop registered (default) > 4.512 0.004: da8xx_lcdc da8xx_lcdc.0: GLCD: Found Sharp_LK043T1DG01 panel > 4.516 0.004: Console: switching to colour frame buffer device 60x34 > 4.520 0.004: Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled > 4.528 0.008: serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a 16550A > 4.532 0.004: serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a 16550A > 4.540 0.008: serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a 16550A > 4.540 0.000: console [ttyS2] enabled > 4.548 0.008: brd: module loaded > 4.556 0.008: physmap platform flash device: 02000000 at 60000000 > 4.564 0.008: physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank > 4.568 0.004: Intel/Sharp Extended Query Table at 0x010A > 4.572 0.004: Intel/Sharp Extended Query Table at 0x010A > 4.576 0.004: Intel/Sharp Extended Query Table at 0x010A > 4.580 0.004: Intel/Sharp Extended Query Table at 0x010A > 4.584 0.004: Intel/Sharp Extended Query Table at 0x010A > 4.588 0.004: Using buffer write method > 4.588 0.000: Using auto-unlock on power-up/resume > 4.592 0.004: cfi_cmdset_0001: Erase suspend on write enabled > 4.596 0.004: RedBoot partition parsing not available > 4.600 0.004: Using physmap partition information > 4.604 0.004: Creating 3 MTD partitions on "physmap-flash.0": > 4.608 0.004: 0x000000000000-0x000000080000 : "bootloaders + env" > 4.620 0.012: 0x000000080000-0x000000280000 : "kernel" > 4.628 0.008: 0x000000280000-0x000002000000 : "filesystem" > 4.636 0.008: physmap-flash.0: failed to claim resource 0 > 4.644 0.008: NAND device: Manufacturer ID: 0x2c, Chip ID: 0xdc (Micron NAND > 512MiB 3,3V 8-bit) > 4.652 0.008: Creating 2 MTD partitions on "davinci_nand.1": > 4.656 0.004: 0x000000000000-0x000001900000 : "data" > 4.664 0.008: 0x000001900000-0x000020000000 : "else" > 4.672 0.008: davinci_nand davinci_nand.1: controller rev. 2.5 > 4.680 0.008: spi_davinci spi_davinci.1: Controller at 0xfef0e000 > 4.692 0.012: tun: Universal TUN/TAP device driver, 1.6 > 4.696 0.004: tun: (C) 1999-2004 Max Krasnyansky <[email protected]> > 4.704 0.008: ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > 4.708 0.004: ohci ohci.0: DA8xx OHCI > 4.712 0.004: ohci ohci.0: new USB bus registered, assigned bus number 2 > 4.716 0.004: Waiting for USB PHY clock good... > 4.720 0.004: ohci ohci.0: irq 59, io mem 0x01e25000 > 4.788 0.068: hub 2-0:1.0: USB hub found > 4.788 0.000: hub 2-0:1.0: 1 port detected > 4.796 0.008: Initializing USB Mass Storage driver... > 4.804 0.008: usbcore: registered new interface driver usb-storage > 4.804 0.000: USB Mass Storage support registered. > 5.804 1.000: i2c_davinci i2c_davinci.1: controller timed out > 5.808 0.004: i2c_davinci i2c_davinci.1: initiating i2c bus recovery > 5.812 0.004: tps6507x-ts: probe of tps6507x-ts failed with error -110 > what's happening? if you don't have tps650 delete its initialization. if you don't have any other chip on the board skip its config. > 5.820 0.008: omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0 > 5.824 0.004: omap_rtc: RTC power up reset detected > 5.824 0.000: omap_rtc: already running > 5.828 0.004: i2c /dev entries driver > 5.832 0.004: TCP cubic registered > 5.836 0.004: Clocks: disable unused i2c1 > 5.840 0.004: Clocks: disable unused emac > 5.848 0.008: davinci_emac_probe: using random MAC addr: 72:93:72:ad:15:13 > 5.852 0.004: emac-mii: probed > 5.860 0.008: omap_rtc omap_rtc: setting system clock to 2000-01-01 01:34:03 > UTC (946690443) > 6.136 0.276: VFS: Mounted root (jffs2 filesystem) on device 31:2. > *6.140 0.004: Freeing init memory: 120K* > *7.356 1.216: Mounting proc* > > _______________________________________________ > Davinci-linux-open-source mailing list > [email protected] > http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source > > bootchart: t0=0 t1=Starting Kernel=*2.812* set verify n If it is possible to know... t2=init ... how much? t3=yourapplicationworking ... how much? I hope these info can help you. Let me know, if possible, the new t1,t2,t3,t4 you may suggestions. Regards, Raffaele
_______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
