AW: [ECOS] cat zImage >/dev/mtd1 does not work
Gary Thomas
gary@mlbassoc.com
Fri Jan 19 17:50:00 GMT 2007
Weiguang Shi wrote:
> Thanks very much Alex. That makes things clear.
>
> Now for the CDL (please excuse me since I'm a newbie
> to RedBoot), could you explain more? Do I need to build
> Redboot with the correct options and store it in the
> flash?
Note: you don't really need to change RedBoot. Just update the
FIS [directory] entry for the image you are changing, either with
the corrected checksum, or the value 0. RedBoot ignores the checksum
when the stored value is 0.
>
> --- "Neundorf, Alexander" <Alexander.Neundorf@jenoptik.com> wrote:
>
>>> 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
>
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list