[U-Boot] Help about a simplified bootloader.

os user gnusercn at gmail.com
Wed Apr 8 09:12:22 CEST 2009


On Wed, Apr 8, 2009 at 2:42 PM, Shankar Ganesh <shankarganeshk at gmail.com> wrote:
>
>
> On Tue, Apr 7, 2009 at 11:02 AM, os user <gnusercn at gmail.com> wrote:
>>
>> Hi,
>>
>> The data in NAND chip(linux kernel and RootFS)  is the same when
>> booting linux from U-Boot and from the simple loader. :-(
>>
>> On Sat, Apr 4, 2009 at 12:53 AM, Scott Wood <scottwood at freescale.com>
>> wrote:
>> > On Fri, Apr 03, 2009 at 02:44:03PM +0800, os user wrote:
>> >> I want to boot linux by a simplified bootloader. I use Atmel's ARM
>> >> chip (AT91SAM9RL64EK board). Now, I can boot linux with my small
>> >> program. The small program will parse the image generaed by "mkimage"
>> >> and copy the kernel bianry from NAND flash to SDRAM, construct the tag
>> >> list, disable I/D cache, disable interrupt and then jump to kernel
>> >> entry point. The system can startup, but when accessing rootfile
>> >> system(the rootfile system was also in the NAND chip), a lot of CRC
>> >> errors were found. See below,
>> >> mtd->read(0x1fb2c bytes from 0x1804d4) returned ECC error
>> >> mtd->read(0x1fa38 bytes from 0x3e05c8) returned ECC error
>> >> mtd->read(0x1f7dc bytes from 0x7c0824) returned ECC error
>> >> jffs2_scan_inode_node(): CRC failed on node at 0x007c37a4: Read
>> >> 0xd9b2bc33, calculated 0xda4805c1
>> >>
>> >> and sometimes the sytem even crashed when R/W filesystem.
>> >>
>> >> But with the same linux kernel and rootfile system, if I use U-Boot to
>> >> boot linux, everything seems OK.
>> >>
>> >> Can anyone tell is there any trick that's related with linux NAND
>> >> driver in U-Boot? Or any suggestion to help me moving on?
>
> How about ECC calculation ? is it h/w  (GPMC) or s/w ECC ?
>

I used software ECC.

I don't think this problem is related to ECC calculation. As metioned
before, I used the same OS kernel image and root filesystem
image(JFFS2). Both are stored in NAND flash. For the good case,
Atmel's bootstrap code will launch U-Boot, and U-Boot will copy kernel
image from NAND chip to SDRAM, build tag list, do some clean
job(diable interrupt, flush/disable cache), and then jump to kernel
entry point. If I follow this path, everything is OK. This means my
linux kernel(2.6.27) and root filesystem are OK.

But In my small loader(based on Atmel's bootstrap), I also copy kernel
image from NAND chip to SDRAM, build tag list, do some clean
job(diable interrupt, flush/disable cache), and then jump to kernel
entry point. The kernel image can be decompressed without any error
and can startup sometimes. But I can see a lot of errors complained by
MTD layer. And sometimes, the system even crashed.

Hope to receive your suggestions, Thanks!


More information about the U-Boot mailing list