This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

AW: cat zImage >/dev/mtd1 does not work


> Von: ecos-discuss-owner@ecos.sourceware.org
> 
> Hi, 
> 
> I'm running snapgear-3.4.0 on an IXDP425 board with RedBoot as 
> the bootloader and I want to
> be able to upgrade my kernel and filesystem, i.e., zImage and 
> ramdisk.gz on the flash, under Linux.
> 
> So I shipped the zImage and ramdisk.gz onto the running system
> and did
>     # cat zImage >/dev/mtd1
>     # cat ramdisk.gz >/dev/mtd2
> 
> after eraseall the two partitions. To my surprise, when I reboot,
> RedBoot gave 
>                         RedBoot> fis load ramdisk             
>                 
>                         ** Warning - checksum failure.  
> stored: 0x33dbe19b, computed:
>                         0xc9d7dfef                            
>                 
>                         RedBoot> fis load kernel              
>                 
>                         ** Warning - checksum failure.  
> stored: 0xfb99dd45, computed:
>                         0x788bb713                            
>                 
>                         RedBoot> exec -c 
> "console=ttyS0,115200 root=/dev/ram0 
>                         initrd=0x00800000,6M 
> mem=32M@0x00000000" 0x01600000   
>                         Can't execute Linux - invalid entry 
> address           
> and refused to boot.
> 
> I understand here the newly flashed images (as it was not 
> done in RedBoot but in the OS) may
> not have the same checksum as RedBoot calculated for the 
> earlier images. And this caused the problem.

When Redboot stores an image, it stores:
-the actual data length
-the size of the "partition"
-the calculated checksum

If the checksum doesn't match, it fails.
If the actual size of the kernel is bigger than what it stored in the FIS, it won't load everything and it probably will not work.

You could:
-disable the checksum in Redboot, I think this is possible via a cdl option
-when storing the kernel via Redboot, use the partition size also as data length, so it will always load everything as long as it fits in the partition.

Bye
Alex

--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]