El 27/11/17 a las 12:31, Ladislav Michl escribió:
Dear Jose Miguel,

On Mon, Nov 27, 2017 at 11:45:11AM +0100, Jose Miguel Sanchez Sanabria wrote:
Hi everyone.

I was testing the booting process from NAND using an UBI/UBIFS image in an
igepv2 board.
I'm happy to see someone from ISEE being interested in mainline support
for their own product.

However MLO tries to boot first kernel (falcon mode activated) and then
falls back to u-boot (as expected anyway I just wanted to load u-boot from
ubi) trying to load volume 0, but fails.
Due to size restrictions, MLO does contain only limited UBI functionality,
just enough to load image from static UBI volume.

U-Boot SPL 2017.11-dirty (Nov 24 2017 - 14:29:26)
Trying to boot from NAND
UBI warning: LEB 0 of 1 is missing
UBI warning: Failed to load volume 3
UBI warning: LEB 0 of 1 is missing
UBI warning: Failed to load volume 3
UBI warning: Failed
Loading Linux failed, falling back to U-Boot.
UBI warning: LEB 0 of 1 is missing
UBI warning: Failed to load volume 0
UBI warning: LEB 0 of 1 is missing
UBI warning: Failed to load volume 0
UBI warning: Failed
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
As noted above, ubispl loader is rather limited and identifies volumes
by volume id. u-boot.img is expected to be found in vol_id=0, while linux
zImage in vol_id=3. Log above indicates there are no such volumes.
What does u-boot's command 'ubi info l' show?

Heres the log of ubi info :

Volume information dump:
        vol_id          0
        reserved_pebs   82
        alignment       1
        data_pad        0
        vol_type        4
        name_len        9
        usable_leb_size 129024
        used_ebs        5
        used_bytes      539424
        last_eb_bytes   23328
        corrupted       0
        upd_marker      0
        name            ubirootfs
Volume information dump:
        vol_id          2147479551
        reserved_pebs   2
        alignment       1
        data_pad        0
        vol_type        3
        name_len        13
        usable_leb_size 129024
        used_ebs        2
        used_bytes      258048
        last_eb_bytes   2
        corrupted       0
        upd_marker      0
        name            layout volume


I created with:

ubi create ubirootfs 0xA00000 static 0

I just wanted a volume of 10 MiB (as I only pretend to load u-boot from it for 
now) so that went pretty good.

I can however mount the ubi image but suspicious log appear:

u-boot:> ubifsmount ubi0:ubirootfs
Now you are in u-boot, where different UBI implementation is used, so
you can identify volumes also by name.

I was mounting only to see the correct files were there (u-boot.img and uEnv.txt)

UBIFS assert failed in ubifs_change_lp at 540
UBIFS assert failed in ubifs_release_lprops at 278
UBIFS assert failed in ubifs_change_lp at 540
UBIFS assert failed in ubifs_release_lprops at 278

This has to do with the discussion about ubifs null deference so I suppose
it should not affect much to write operation.
Well, I do not use UBIFS in U-Boot at all. Just UBI to read and write volumes.

Ahh I see I was trying to "ubi write" onto volume the ubifs image which contained the (u-boot.img and uEnv.txt), but if I do like on your script (writing directly the u-boot.img and uEnv.txt) onto the volume it works perfectly.
I would finally like to know if the ubi/ubifs support is functional; which
would mean I did not use the ubi tools correctly to create the ubi image.
You will find script I'm using to bring board up at the end of this mail.
But note, that 'fdt memory' is hacked a bit and proper implementaion is welcome:
https://lists.denx.de/pipermail/u-boot/2017-January/279823.html

Also note 'setenv fdtfile "${soc_family}-${board_name}.dtb"' line. That's also
not in mainline as it needs also board revision too and the way it is currently
done, we cannot distinguish rev B. and rev F. Unfortunately this article
http://labs.isee.biz/index.php/IGEP_Technology_devices_revisions#IGEP0020_revisions
does not explain, how all those numbers map to board revisions ISEE is using
in vendor code.
thanks for reporting I'll keep and eye on this later.
That said, I enabled UBIFS for IGEPv2 only localy to verify my ubifs_finddir
reimplementation, but as I was even unable to mount ubifs, original reporter
did not confirm that at least mount works for him and I run out of the time,
ubifs issue is still unresolved.

Best regards,
        ladis
I could mount ubifs using ubifsmount command but there were a bit of warnings and then after trying to boot the spl did not find volume at all.

Thank you for your time.

echo "*** starting u-boot instalation script ***"
nandecc hw hamming
setenv has_onenand $?
# MLO ...
fatload mmc 0:1 $loadaddr MLO
if test $has_onenand -eq 0
then
        nand erase.part SPL
        nand write $fileaddr 0 $filesize
        nand write $fileaddr 20000 $filesize
        nand write $fileaddr 40000 $filesize
        nand write $fileaddr 60000 $filesize
        nandecc sw bch8
        nand read $loadaddr UBI 20000
        if test $? != 0
        then
                ubi detach
                nand erase.part UBI
        fi
else
        ubi part UBI
        ubi check loader
        if test $? != 0
        then
                ubi detach
                onenand erase
        else
                onenand erase 0 80000
        fi
        onenand write $fileaddr 0 20000
        onenand write $fileaddr 20000 20000
        onenand write $fileaddr 40000 20000
        onenand write $fileaddr 60000 20000
fi

# UBI volumes
ubi part UBI

echo "Creating UBI volumes..."
ubi check loader
if test $? != 0
then
        ubi createvol loader 100000 static 0
fi
ubi check config
if test $? != 0
then
        ubi createvol config 8000 static 1
fi
ubi check config_r
if test $? != 0
then
        ubi createvol   8000 static 2
fi
ubi check kernel
if test $? != 0
then
        ubi createvol kernel 400000 static 3
fi
ubi check dtb
if test $? != 0
then
        ubi createvol dtb 40000 static 4
fi
ubi check rootfs
if test $? != 0
then
        ubi createvol rootfs
fi

setenv fdtfile "${soc_family}-${board_name}.dtb"

# U-Boot ...
fatload mmc 0:1 $loadaddr u-boot.img
ubi write $fileaddr loader $filesize
# ... and root filesystem first
fatload mmc 0:1 $loadaddr root.ubifs
ubi write $fileaddr rootfs $filesize
# now load FDT blob ...
fatload mmc 0:1 $fdtaddr $fdtfile
# and fix it...
setenv bootargs "console=ttyO2,115200n8 root=ubi0:rootfs ubi.mtd=1 rootfstype=ubifs 
rw quiet"
fdt addr $fdtaddr
fdt resize 1000
fdt memory
fdt boardsetup
fdt chosen
fdt set /chosen bootargs "${bootargs}"
# store FDT blob
ubi write $fileaddr dtb 40000
# ... and finaly kernel image
fatload mmc 0:1 $loadaddr zImage
ubi write $fileaddr kernel $filesize
# boot into shinny new system
bootz $loadaddr - $fdtaddr

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to