[U-Boot] Atmel AT91RM9200: U-Boot refuses to copy to a particular sector of flash memory

7words.sg at gmail.com 7words.sg at gmail.com
Mon Oct 20 16:59:10 CEST 2008


Hello,

The U-Boot version I am using is 1.1.2.

I forgot to mention my sector sizes: they are as given in the
AT49BV163D data sheet. Sectors up to address 0x0000ffff are 8KB in
size, while all others after 0x00010000 are 64KB.

And the commands I use are:

* tftpboot 20000000 uimage
* cp.b 20000000 10020000 fe4bc # my uimage is 0xfe4bc (1041516) bytes,
the copy will always fail here

I tried to copy in chunks of smaller sectors each but I cannot copy if
the range written to crosses the "special" byte 10102000:

* cp.b 200e0000 10100000 2000 # works, copies to 0x10100000 -
0x10101fff inclusive
* cp.b 200e0000 10100000 2001 # fails, even though it is writing to
the same 64KB sector as the previous copy

I tried erasing the problematic sector but it appears to be only half
erased - everything after 0x10102000 is intact.

U-Boot> protect off 10100000 1010ffff
Un-Protected 1 sectors
U-Boot> erase 10100000 1010ffff
Erasing sector 23 ... ok.
Erased 1 sectors
U-Boot> md 10101fe0 10
10101fe0: ffffffff ffffffff ffffffff ffffffff    ................
10101ff0: ffffffff ffffffff ffffffff ffffffff    ................
10102000: e3500000 1affffef ebfffeea e3500000    ..P...........P.
10102010: 0a00000f e3500003 979ff100 ea000009    ......P.........

Regards,
Ki Chi

On 10/20/08, Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com> wrote:
> On 17:16 Mon 20 Oct     , Ki Chi Leung wrote:
>> Hello list,
> hi
> Could you specify the U-Boot version.
>
> the command sequence that you use please
>
> Best Regards,
> J.
>>
>> I am trying to load a Linux 2.6.22 kernel uimage on the flash memory
>> of a custom Atmel AT91RM9200 board. From U-Boot the flash memory map
>> is as follows:
>>
>> U-Boot> flinfo
>> DataFlash:AT45DB161
>> Nb pages:   4096
>> Page Size:    528
>> Size= 2162688 bytes
>> Logical address: 0xC0000000
>> Area 0: C0000000 to C0007FFF (RO)
>> Area 1: C0008000 to C001FFFF (RO)
>> Area 2: C0020000 to C0027FFF
>> Area 3: C0028000 to C020FFFF
>>
>> Bank # 1: Atmel: AT49BV163D (16Mbit)
>>   Size: 2 MB in 39 Sectors
>>   Sector Start Addresses:
>>     10000000 (RO) 10002000 (RO) 10004000 (RO) 10006000      10008000
>>     1000A000      1000C000      1000E000 (RO) 10010000 (RO) 10020000
>>     10030000      10040000      10050000      10060000      10070000
>>     10080000      10090000      100A0000      100B0000      100C0000
>>     100D0000      100E0000      100F0000      10100000      10110000
>>     10120000      10130000      10140000      10150000      10160000
>>     10170000      10180000      10190000      101A0000      101B0000
>>     101C0000      101D0000      101E0000      101F0000
>>
> btw I supposed that 1000E000 (RO) 10010000 (RO) is your env sector, maybe
> you
> can put the env just after U-Boot itself to not loose space.
>
>> I also have 2x 48LC8M16A2 modules (32MB, SDRAM, address 0x20000000 -
>> 0x21ffffff) which I download the kernel to before copying to flash.
> do check that the uImage in ram is correct? (just to be sure)
>>
>> I have to copy the kernel into the flash starting at address
>> 0x10020000 (lower addresses reserved by U-Boot apparently). However,
>> when I try to copy the 1018KB uimage, the copy always fails with
>> "flash not erased", even after the sectors have been unprotected and
>> erased.
>
> Best Regards,
> J.
>


More information about the U-Boot mailing list