[U-Boot] [PATCH v3 3/5] jz4740 nand spl files

Scott Wood scottwood at freescale.com
Mon Jan 10 19:43:05 CET 2011


On Sun, 9 Jan 2011 23:48:01 +0800
Xiangfu Liu <xiangfu at openmobilefree.net> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi Scott
> 
> > 
> > I don't see any of my comments on v3 addressed or responded to:
> > http://lists.denx.de/pipermail/u-boot/2010-December/083601.html
> 
> 
> On 12/14/2010 08:05 AM, Scott Wood wrote:
> >>  nand_spl/nand_boot_jz4740.c               |  344 +++++++++++++++++++++++++++++
> > 
> > As I asked last time, is there any reason you can't use the standard
> > nand_boot.c?  Your non-SPL NAND driver looks like the type that would
> > work with it.
> 
> thanks for point out, in next version patches, I will remove the nand_boot_jz4740.c
> 
> > 
> >> +LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
> >> +LDFLAGS	= -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE)
> >> +AFLAGS	+= -DCONFIG_NAND_SPL
> >> +CFLAGS	+= -DCONFIG_NAND_SPL -O2
> > 
> > Are you sure you want -O2 and not -Os?  What are the space constraints
> > for this SPL?
> > 
> 
> the nand_spl must less then 8kb. 
> ~~~
> #The boot program can load two areas of data from NAND flash to internal SRAM, one is the normal
> #area up to 8KB starting from NAND flash address 0, the other is the backup area up to 8KB starting
> #from NAND flash address 0x2000. After reset, the boot program will first read the normal area data
> #from NAND flash using hardware Reed-Solomon ECC. If no ECC error is detected or ECC error is
> #correctable, the boot program then branches to internal SRAM at 4 bytes offset. If it detects an
> #uncorrectable ECC error, it will continue to read the backup area of data from NAND flash using
> #hardware Reed-Solomon ECC. 
> ~~~
> 
> I try to add "-Os", then I got some compile error:
> ~~~
> mipsel-openwrt-linux-gcc -g  -Os   -D__KERNEL__ -DCONFIG_SYS_TEXT_BASE=0x80100000 -I/home/xiangfu/workspace/PanGu/u-boot.upstream/include -fno-builtin -ffreestanding -nostdinc -isystem /home/xiangfu/workspace/PanGu/openwrt-xburst/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/lib/gcc/mipsel-openwrt-linux-uclibc/4.3.3/include -pipe  -DCONFIG_MIPS -D__MIPS__ -G 0 -mabicalls -fpic -msoft-float -march=4kc -mtune=4kc -mabicalls -mips32 -Wall -Wstrict-prototypes -fno-stack-protector -DCONFIG_NAND_SPL -Os -c -o jz4740_nand.o jz4740_nand.c
> jz4740_nand.c: In function 'board_nand_init':
> jz4740_nand.c:298: warning: implicit declaration of function 'usb_boot'
> cd /home/xiangfu/workspace/PanGu/u-boot.upstream/nand_spl/board/xburst/nanonote && mipsel-openwrt-linux-ld -Bstatic -T /home/xiangfu/workspace/PanGu/u-boot.upstream/nand_spl/board/xburst/nanonote/u-boot.lds -Ttext 0x80000000 $UNDEF_SYM start.o usbboot.o nand_boot.o cpu.o jz4740.o jz_serial.o jz4740_nand.o \
> 		-Map /home/xiangfu/workspace/PanGu/u-boot.upstream/nand_spl/u-boot-spl.map \
> 		-o /home/xiangfu/workspace/PanGu/u-boot.upstream/nand_spl/u-boot-spl
> jz4740.o: In function `sdram_init':
> jz4740.c:(.text+0x60): undefined reference to `memcpy'
> ~~~

Try -fno-builtin

> >> +$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl.bin
> >> +	dd bs=1024 count=8 if=/dev/zero of=$(nandobj)junk1
> >> +	cat $< $(nandobj)junk1 > $(nandobj)junk2
> >> +	dd bs=1024 count=8 if=$(nandobj)junk2 of=$(nandobj)junk3
> >> +	cat $(nandobj)junk3 $(nandobj)junk3 > $(nandobj)junk4
> >> +	dd bs=1024 count=256 if=/dev/zero of=$(nandobj)junk5
> >> +	cat $(nandobj)junk4 $(nandobj)junk5 > $(nandobj)junk6
> >> +	dd bs=1024 count=256 if=$(nandobj)junk6 of=$@
> >> +	rm -f $(nandobj)junk*
> > 
> > Again, please explain what's going on here.  Other boards don't do this.
> > 
> 
> add comments in "Makefile" in next patches.

Is there no way that can be simplified?  It looks like a very elaborate
and obfuscated means of getting some zero padding between the SPL and
the payload.  Other boards do this in a much more straightforward
manner.

-Scott



More information about the U-Boot mailing list