Pergunta

Eu estou tentando descobrir como programar o PSRAM no GBA tamanho EZ Flash 3 em 1 carta. Basicamente repetir o GBA Exploader e outros programas fazer.

Se eu selecionar um bloco e programá-lo, em seguida, lê-lo de volta a primeira halfword é sempre 0x1500 ou algo parecido, mas o resto dos dados é muito bem.

Se na gravação eu selecionar o bloco anterior, começar a escrever a 0x20000 bytes em que o bloco (do tamanho de um bloco a partir do que eu determinei). Leitura de volta do bloco desejado ainda mostra que o primeiro halfword como errado, mas o resto das meias palavras estão corretas.

Foi útil?

Solução

eu era esta "perto que eu tinha tentado fazer backup de um e depois dois blocos, mas não três, e que era o truque Em comunicado corça quantas das funções gravar 0x08000000, 0x08020000 e 0x08040000:..

void            OpenNorWrite()
{
        *(vuint16 *)0x9fe0000 = 0xd200;
        *(vuint16 *)0x8000000 = 0x1500;
        *(vuint16 *)0x8020000 = 0xd200;
        *(vuint16 *)0x8040000 = 0x1500;
        *(vuint16 *)0x9C40000 = 0x1500;
        *(vuint16 *)0x9fc0000 = 0x1500;
}

Os dados corruptos sempre foi 0x1500, o que faz sentido agora também.

A solução é fazer backup de três (ou mais) blocos e endereço para a frente três (ou mais) blocos:

CloseNorWrite();
SetRompage(0x180-3);
OpenNorWrite();
rb=FLASHBASE+(0x20000*3);
for(ra=0;ra<(sizeof(prog)>>2);ra++)
{
    rc=prog[ra];
    PUT16(rb,(rc>> 0)&0xFFFF); rb+=2;
    PUT16(rb,(rc>>16)&0xFFFF); rb+=2;
}
CloseNorWrite();
SetRomPage(0x180);
reboot();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top