cancel
Showing results for 
Search instead for 
Did you mean: 

Bank switching progblems

id2
Associate II
Posted on February 22, 2008 at 07:30

Bank switching progblems

1 REPLY 1
id2
Associate II
Posted on May 17, 2011 at 09:50

I am experiencing some problems with bank switching, I read the forums but I cannot find a solution.

I use: Keil Compiler, STR912FAW44X6 rev H and ULINK2.

Bank 0: Main program (FMI not configured)

Bank 1: Bootloader (FMI: NBBank 512K, 0x80000, BBank 32K 0x0). The RemapBank 1 is uncommented from 91x_fmi.h

Hardware remap using CSX bit activated to boot always from bank 1.

I start from Bank 1, and jump to Bank 0 using the following function stored in RAM:

FMI->BBSR = 0; //Size 32K

FMI->NBBSR = 6; //Size 512K

FMI->NBBADR = 0x0 >> 2 ;

FMI->BBADR = 0x80000 >> 2;

FMI->CR |= 0x18;

Jump_To_Application = (pFunction) 0x00;

Jump_To_Application();

The program gets blocked. If I press reset or power-off the program starts again from bank 1, but never jumps to bank 0.

Trick: I load a program on bank 0 with FMI BBank: 512K, 0x0, NBBank 32K, 0x80000 and then load again the same program on Bank 0 with the FMI not configured. In this case the jump from Bank 1 to 0 is done OK. If I press reset, the program starts again from Bank 1 and the jump is always done OK.

The problem is that when I disconnect the power, the program starts again from Bank 1 but gets blocked when jumping to 0 (as if FMI was not configured on bank 0). It seems that some register stored the first time I loaded the program on bank 0 with FMI configured, is mantained until the power is switched off. And when switching off, the FMI on bank 0 is not configured and this is why it crashes (not sure about that).

Please I need some help to resolve this problem and find the correct FMI configuration to switch between banks.

Thank you very much,

XS