Reply by Ulf Samuelsson●September 11, 20072007-09-11
"Haroldp" <hplooijer@hotmail.com> skrev i meddelandet
news:zcednbdjtL2xBn_bnZ2dnUVZ_vamnZ2d@giganews.com...
> Hello all,
>
> I have built a board that contains (besides a lot of other stuff) an
> AT91RM9200 and an AT45DB642 dataflash chip.
> Now I'm trying to code a homebrew boot loader. For a number of reasons, I
> cannot use U-boot.
> The boot loader works fine when loaded using a JTAG debugger (J-link), but
> it won't work when I try to load it using the boot ROM code that's built
> into the MCU.
> The MCU actually loads something from the SPI (I can see that using a
> 'scope) that's a lot longer than just the 32 bytes that it wants to
> inspect in order to boot from flash. When I interrupt execution, I find
> that it puts something in IRAM that looks like what I've put into the
> flash, but the IRAM image is corrupt:
> - The first 0x0400 bytes are OK.
> - The following 0x400 bytes contain garbage (mostly 0xff).
> - At 0x0800, I find 0x0400 bytes of code that *should* be at 0x0400!
> - At 0x1000, 0x0400 bytes of garbage (again)
> and so on.
> It looks like the MCU wants to load 2048-byte pages from flash (where this
> beast only supports 1024-byte pages).
> I use the following code at vector 6:
> 0x10 | (0x0d << 13) | (0x400 << 17)
> Meaning: 8 k of code, inside an AT45DB642 configured for "binary" page
> size (i.e., 1024 bytes vs. the 1056-byte default page size).
>
> Anyone seen this before? Suggestions for corrections to Vector 6?
>
> Any ideas welcomed.
>
> Rgds,
> Harold.
>
>
You want to load dataflashboot.bin at address zero in the dataflash.
This will handle vector 6, and will allow you to download your app
to the rest of the dataflash
--
Best Regards,
Ulf Samuelsson
This is intended to be my personal opinion which may,
or may not be shared by my employer Atmel Nordic AB
Reply by Haroldp●September 8, 20072007-09-08
Hello all,
I have built a board that contains (besides a lot of other stuff) an
AT91RM9200 and an AT45DB642 dataflash chip.
Now I'm trying to code a homebrew boot loader. For a number of reasons, I
cannot use U-boot.
The boot loader works fine when loaded using a JTAG debugger (J-link), but
it won't work when I try to load it using the boot ROM code that's built
into the MCU.
The MCU actually loads something from the SPI (I can see that using a
'scope) that's a lot longer than just the 32 bytes that it wants to
inspect in order to boot from flash. When I interrupt execution, I find
that it puts something in IRAM that looks like what I've put into the
flash, but the IRAM image is corrupt:
- The first 0x0400 bytes are OK.
- The following 0x400 bytes contain garbage (mostly 0xff).
- At 0x0800, I find 0x0400 bytes of code that *should* be at 0x0400!
- At 0x1000, 0x0400 bytes of garbage (again)
and so on.
It looks like the MCU wants to load 2048-byte pages from flash (where this
beast only supports 1024-byte pages).
I use the following code at vector 6:
0x10 | (0x0d << 13) | (0x400 << 17)
Meaning: 8 k of code, inside an AT45DB642 configured for "binary" page
size (i.e., 1024 bytes vs. the 1056-byte default page size).
Anyone seen this before? Suggestions for corrections to Vector 6?
Any ideas welcomed.
Rgds,
Harold.