Pregunta

Estoy tratando de encontrar la manera de programar el PSRAM en el GBA tamaño EZ Flash 3 en 1 tarjeta. Básicamente repiten lo GBA Exploader y otros programas lo hacen.

Si selecciono un bloque y programarlo a continuación, lea de nuevo la primera media palabra es siempre 0x1500 o algo por el estilo, pero el resto de los datos está bien.

Si en la escritura selecciono el bloque anterior, empezar a escribir en 0x20000 bytes en ese bloque (el tamaño de un bloque de lo que he determinado). Posterior de la lectura del bloque deseado sigue mostrando esa primera media palabra tan mal, pero el resto de las medias palabras son correctas.

¿Fue útil?

Solución

Yo estaba presente "cerca que había tratado de copia de seguridad de uno y luego dos bloques, pero no tres, y que era el truco En trasera aviso de la vista de cómo muchas de las funciones de escritura a 0x08000000, 0x08020000 y 0x08040000:..

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

Los datos corruptos siempre fue 0x1500, que tiene sentido ahora también.

La solución es hacer copias de seguridad de tres (o más) bloques y la dirección hacia adelante tres (o más) bloques:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top