Here is what I get from grabserial... I know there is a 1 second delay that
can be changed to 0, but I'm still not happy with u-boot. As someone
suggested, I'll try building all kernel arguments into u-boot instead of
using uEnv.txt and see if that helps much.
Opening serial port /dev/ttyUSB1
115200:8N1:xonxoff=0:rtcdtc=0
Program will end in 30 seconds
Printing timing information for each line
Matching pattern 'Starting kernel.*' to set base time
Don't use any matching pattern. Grabserial will start counting at the
first character on the serial port. That'll give you a full bootup
timing view, rather than resetting the counter when the kernel goes.
It'll look like my Debian Grabserial log [1]. No counter resetting.
[1]: https://gist.github.com/3169679
Use Control-C to stop...
[0.000001 0.000001]
[0.000405 0.000404] U-Boot SPL 2011.09-00000-gf63b270-dirty (Apr 24 2012 -
09:51:01)
[0.010531 0.010126] Texas Instruments Revision detection unimplemented
[0.520104 0.509573] OMAP SD/MMC: 0
Look for big deltas, like that one. Half a second delta there. Go in
the SPL code and fix that, then, BAM half second faster boot.
Granted, I have no idea what's happening there, but I assume DDR and
mmc setup are needed. Probably some clock setup, too.
But, if you find things like USB or Ethernet in there, rip them out if
you don't need them and care about boot time.
[0.580368 0.060264] reading u-boot.img
[0.590224 0.009856] reading u-boot.img
[0.620390 0.030166]
[0.620482 0.000092]
[0.620514 0.000032] U-Boot 2011.09-00000-gf63b270-dirty (Apr 24 2012 -
09:51:01)
[0.621577 0.001063]
[0.621613 0.000036] I2C: ready
[0.670303 0.048690] DRAM: 256 MiB
[1.050050 0.379747] No daughter card present
If you don't have daughter cards that need detecting here, another 0.4
seconds. For example, if you have a kernel board-file that sets up
your muxing or you hard code it into u-boot.
[1.050555 0.000505] NAND: HW ECC Hamming Code selected
[1.051167 0.000612] No NAND device found!!!
[1.051620 0.000453] 0 MiB
[1.051769 0.000149] MMC: OMAP SD/MMC: 0
[1.060651 0.008882] *** Warning - readenv() failed, using default
environment
[1.066634 0.005983]
[1.110211 0.043577] Net: cpsw
[1.110508 0.000297] Hit any key to stop autoboot: 0
[2.180212 1.069704] SD/MMC found on device 0
1 second there. Get rid of 1 second "hit any key". Although setting
it to 0 still won't make this time be 0, unless you completely remove
that part from the u-boot code (which should be doable).
[2.191694 0.011482] reading uEnv.txt
[2.194353 0.002659]
[2.194384 0.000031] 14 bytes read
[2.194566 0.000182] Loaded environment from uEnv.txt
[2.194975 0.000409] Importing environment from mmc ...
If you code your env into u-boot, at most, you'll save those 5 lines
worth of time. Sum total of 15 ms or so. Not really worth doing till
you save the 1+ seconds I mentioned above.
[2.206105 0.011130] Loading file "/boot/uImage" from mmc device 0:2 xxa2
[2.410143 0.204038] 3145984 bytes read
[2.410547 0.000404] ## Booting kernel from Legacy Image at 80007fc0 ...
[2.420523 0.009976] Image Name: Linux-3.2.21+
[2.421053 0.000530] Image Type: ARM Linux Kernel Image (uncompressed)
[2.430350 0.009297] Data Size: 3145920 Bytes = 3 MiB
[2.433466 0.003116] Load Address: 80008000
[2.435549 0.002083] Entry Point: 80008000
[2.438275 0.002726] Verifying Checksum ... OK
[2.470121 0.031846] XIP Kernel Image ... OK
[2.480767 0.010646] OK
[2.480813 0.000046]
[2.480827 0.000014] Starting kernel ...
[0.009598 0.009598]
Don't restart the counter here. See comments above, near top.
[0.029180 0.019582] Uncompressing Linux... done, booting the kernel.
[2.954216 2.925036] systemd-fsck[59]: Angstrom: clean, 4806/218592 files,
46635/873534 blocks
[5.410707 2.456491]
[5.426543 0.015836] .---O---.
[5.431993 0.005450] | | .-. o o
[5.436936 0.004943] | | |-----.-----.-----.| | .----..-----.-----.
[5.443069 0.006133] | | | __ | ---'| '--.| .-'| | |
[5.454040 0.010971] | | | | | |--- || --'| | | ' | | | |
[5.454932 0.000892] '---'---'--'--'--. |-----''----''--' '-----'-'-'-'
[5.457144 0.002212] -' |
[5.457531 0.000387] '---'
[5.459227 0.001696]
[5.459261 0.000034] The Angstrom Distribution beaglebone ttyO0
[5.466914 0.007653]
[5.466954 0.000040] Angstrom v2012.01-core - Kernel 3.2.21+
[5.467643 0.000689]
[5.476671 0.009028] beaglebone login:
An 8 second boot is pretty good. Especially if you're enabling
networking and starting a few services.
-Andrew