[U-Boot-Users] Optimized U-boot : Optimization of UCC and TFTP codes of UBOOT
Wolfgang Denk
wd at denx.de
Tue Nov 21 09:31:56 CET 2006
In message <1034141BCEB1424784F14A38BD006D82165BB5 at zin33exm22.fsl.freescale.net> you wrote:
>
> I am currently trying to optimize the Ethernet driver
> initialization code and the Tftp code of the U-boot so that it can fit
> into the I2CPROM of the 8321 LCDB board whose PROM size is 32 KB, but
> out of which only 18 KB is available for the code.
I recommend to check code and data sizes of a few objects in the
U-Boot tree, and to re-consiser if it is worth to spent effort on
this.
...
> do bare initialization of the Ethernet and does not implement any
> complex functionalities. The only functions that are required are the
> (1) TX event (2) RX event (3) Error Control and (4)CRC.
Yes, and you will need initialization of the CPU, the RAM (for stack
and I/O buffers, and you will need support for the environment and
code to read it (for things like MAC address), and you may want to be
able to see what's happening, so a minimal serial driver is needed,
which in turn asks for things like printf, and... and...
> The Tftp code (present in the net directory of the U-Boot) then should
> support a simple file transfer protocol implemented in a minimal
> fashion.
Right. That's what the initiual 'T' stands for. I don;t think that the
current code is overly bloated.
> The Ethernet initialization code and the Tftp code size should not be
> more than 18 KB.
Let's give it a quick check on a TQM834x system:
-> size cpu/mpc83xx/*.o net/*.o lib_generic/string.o lib_generic/vsprintf.o
text data bss dec hex filename
468 24 0 492 1ec cpu/mpc83xx/cpu.o
304 0 0 304 130 cpu/mpc83xx/cpu_init.o
1868 8 0 1876 754 cpu/mpc83xx/i2c.o
104 0 0 104 68 cpu/mpc83xx/interrupts.o
0 0 0 0 0 cpu/mpc83xx/resetvec.o
0 0 0 0 0 cpu/mpc83xx/spd_sdram.o
1260 248 0 1508 5e4 cpu/mpc83xx/speed.o
14584 92 0 14676 3954 cpu/mpc83xx/start.o
1804 76 0 1880 758 cpu/mpc83xx/traps.o
2296 120 0 2416 970 net/bootp.o
2588 76 12 2676 a74 net/eth.o
6528 324 204 7056 1b90 net/net.o
4784 208 2224 7216 1c30 net/nfs.o
576 48 0 624 270 net/rarp.o
0 0 0 0 0 net/sntp.o
2220 196 52 2468 9a4 net/tftp.o
1256 4 0 1260 4ec lib_generic/string.o
3032 24 0 3056 bf0 lib_generic/vsprintf.o
==============================================================
43467 1448
Just this fraction of the U-Boot code gives a total of more than 44 kB.
I doubt that you can optimize away 60% of this...
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The rule on staying alive as a program manager is to give 'em a num-
ber or give 'em a date, but never give 'em both at once.
More information about the U-Boot
mailing list