[U-Boot] u-boot hangs in spl fat load when Linux image size exceeds one cluster

Hi there,
I am using u-boot 2015.04. I am trying to use spl mode to boot Linux without loading u-boot. I am working on the Zynq-7000 zc706 board.
I enabled the debug mode and here is the output:
U-Boot SPL 2015.04 (Sep 07 2015 - 08:22:08)
spl:board_init_r()
using memory 0xffff10c0-0xffff20c0 for malloc() fpga_init mmc boot boot device - 1 mmc_init: 0, time 67 boot mode - FS
...(omitted, successfully initialize and load dts from SD card)
RootName: uimage, start: 0x90, size: 0x351478 Filesize: 3478648 bytes 64 bytes gc - clustnum: 144, startsect: 17520 Size: 3478648, got: 64 spl: payload image: Linu load addr: 0x7fc0 size: 3478648 reading uImage VFAT Support enabled FAT32, fat_sect: 1304, fatlength: 7540 Rootdir begins at cluster: 2, sector: 16384, offset: 800000 Data begins at: 16368 Sector size: 512, cluster size: 8 FAT read(sect=16384, cnt:8), clust_size=8, DIRENTSPERBLOCK=16 RootMismatch: |boot.bin|| RootMismatch: |system.dtb|| RootMismatch: |u-boot.img|| Rootvfatname: |uimage| RootName: uimage, start: 0x90, size: 0x351478 Filesize: 3478648 bytes 3478648 bytes FAT32: entry: 0x0090 = 144, offset: 0x0090 = 144 FAT32: ret: 00000091, offset: 0090 FAT32: entry: 0x0091 = 145, offset: 0x0091 = 145 FAT32: ret: 00000092, offset: 0091 FAT32: entry: 0x0092 = 146, offset: 0x0092 = 146 FAT32: ret: 00000093, offset: 0092 FAT32: entry: 0x0093 = 147, offset: 0x0093 = 147 FAT32: ret: 00000094, offset: 0093
...
FAT32: entry: 0x02fd = 765, offset: 0x02fd = 765 FAT32: ret: 000002fe, offset: 02fd FAT32: entry: 0x02fe = 766, offset: 0x02fe = 766 FAT32: ret: 000002ff, offset: 02fe FAT32: entry: 0x02ff = 767, offset: 0x02ff = 767 FAT32: ret: 00000300, offset: 02ff FAT32: entry: 0x0300 = 768, offset: 0x0000 = 0 <== notice here FAT32: ret: 00000301, offset: 0000 FAT32: entry: 0x0301 = 769, offset: 0x0001 = 1 FAT32: ret: 00000302, offset: 0001 FAT32: entry: 0x0302 = 770, offset: 0x0002 = 2 FAT32: ret: 00000303, offset: 0002 FAT32: entry: 0x0303 = 771, offset: 0x0003 = 3 FAT32: ret: 00000304, offset: 0003 FAT32: entry: 0x0304 = 772, offset: 0x0004 = 4 FAT32: ret: 00000305, offset: 0004 ...
FAT32: entry: 0x03da = 986, offset: 0x00da = 218 FAT32: ret: 000003db, offset: 00da FAT32: entry: 0x03db = 987, offset: 0x00db = 219 FAT32: ret: 000003dc, offset: 00db FAT32: entry: 0x03dc = 988, offset: 0x00dc = 220 FAT32: ret: 000003dd, offset: 00dc FAT32: entry: 0x03dd = 989, offset: 0x00dd = 221 FAT32: ret: 000003de, offset: 00dd FAT32: entry: 0x03de = 990, offset: 0x00de = 222 FAT32: ret: 000003df, offset: 00de FAT32: entry: 0x03df = 991, offset: 0x00df = 223 FAT32: ret: 000003e0, offset: 00df FAT32: entry: 0x03e0 = 992, offset: 0x00e0 = 224 FAT32: ret: 000003e1, offset: 00e0 gc - clustnum: 144, startsect: 17520
After the last line, u-boot does not proceed any more. I have tried loading the u-boot.img, which is much smaller than the uImage and that is successful. Could this a problem with fat load in the spl mode? In fs/fat/fat.c get_contents() function, it seems it only read at data from at most cluster.
I am sorry if I missed something. I am new to u-boot. Thank you very much in advance.
Best Regards, Lixun
participants (1)
-
Lixun.Lin@rohde-schwarz.com