[U-Boot] Can't read kernel if bad blocks are present in partition

Scott Wood scottwood at freescale.com
Thu Apr 26 21:28:21 CEST 2012


On 04/26/2012 12:11 PM, Peter Barada wrote:
> On 04/26/2012 07:27 AM, Alexandre Gambier wrote:
>> Hi,
>>
>> I'm working on a STM chip under linux and U-Boot 1.3.1.
>>
>> Here's my problem.
>> To boot linux up I load the kernel stored in a NAND device. If a bad 
>> block is present in the nand I can't load the kernel.
>>
>> To store the kernel I first erase the partition and write the kernel image.
>> During the erase stage, U-Boottells that a bad block has been skipped 
>> but everything's fine.
>>
>>    NAND erase: device 0 offset 0x520000, size 0x400000
>>    Skipping bad block at  0x005c0000
>>    Erasing at 0x900000 -- 100% complete.
>>    OK
>>
>> When I write the kernel image, U-Boottells that everything's fine.
>>
>>    NAND write: device 0 offset 0x520000, size 0x400000
>>     4194304 bytes written: OK
>>
>> But when I try to read the kernel, it fails.
>>
>>    NAND read: device 0 offset 0x520000, size 0x1a4bff
>>     1723391 bytes read: ERROR
>>
>>
>> I though U-Boot was able to handle bad block when reading back data..
>>
>> Did I forget to initialize something ?
>>
> Did you use "nand write.i"  to write the kernel and "nand read.i" to
> read the kernel? the ".i" tells u-boot to skip bad blocks...

That has been the default for a while now.  Why use something as ancient
as 1.3.1?

-Scott



More information about the U-Boot mailing list