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

Reply via email to