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

Lixun.Lin at rohde-schwarz.com Lixun.Lin at rohde-schwarz.com
Mon Sep 7 12:46:16 CEST 2015


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


More information about the U-Boot mailing list