[ECOS] Changing flash wait state on SAM7

Andrew Lunn andrew@lunn.ch
Mon Apr 7 17:13:00 GMT 2008


On Mon, Apr 07, 2008 at 01:34:58PM -0300, Davies, Greg wrote:
> I've been having some strange memory issues that I've been talking about
> in the "eCos causing something.. Maybe?" thread. Basically I was seeing
> random values when I did a dump of any section of memory. The BDI folks
> suggested I change the flash wait state. I did this and the problem went
> away. 
> 
> I now have an issue similar to this while trying to debug. I can see
> that the first 3 instructions set the flash wait state to 1 (by writing
> 0x100 to 0xffffff60), but I need it to be 3. This seems to be in a
> function called reset_vector (or at least that's what gdb calls it). I
> tried changing what looked like the same code (but called
> __flash_init__) in
> packages\hal\arm\at91\at91sam7s\current\include\hal_platform_setup.h,
> and I rebuilt everything, but when I loaded on the new code, it still
> wrote the same value. Am I changing the flash wait state in the right
> spot?

Yes, but the dependencies don't always work for this. Delete
install/lib/vectors.o and recompile.

What how fast are you clocking your device? 

// Macro to initialise the Memory Controller
        .macro _flash_init
__flash_init__:
#if CYGNUM_HAL_ARM_AT91_CLOCK_SPEED > 30000000
        // When the clock is running faster than 30MHz we need a wait state
        ldr     r0,=AT91_MC
        ldr     r1,=(AT91_MC_FMR_1FWS)
        str     r1,[r0,#AT91_MC_FMR]
#endif
#if CYGNUM_HAL_ARM_AT91_CLOCK_SPEED > 60000000
        ldr     r1,=(AT91_MC_FMR_2FWS)
        str     r1,[r0,#AT91_MC_FMR]
#endif
        .endm


       Andrew

-- 
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