문제

내가 노력하는 방법을 파악 프로그램 PSRAM GBA 크기의 EZ Flash3 1 카드입니다.기본적으로 반복 GBA Exploader 과 다른 프로그램 않습니다.

면 블록을 선택하고 프로그램은 그것을 다시 읽는 첫 번째 halfword 은 항상 0x1500 또는 그런 것 같지만,나머지 데이터는 괜찮습니다.

는 경우에 쓰기에 선택한 이전의 블록,쓰기 시작하에 0x20000 바이트로는 블록(의 크기에서 내가 결정).을 읽고 뒤에서 원하는 블록 여전히 표시하는 첫 번째 halfword 으로 잘못이지만 나머지 halfwords 이 올바른 것입니다.

도움이 되었습니까?

해결책

이"가깝습니다.하려고 했던 다시 한 다음 두 블록을 하지만 삼는다.에서 뒷다리 시 얼마나 많은 기능을 작성하 0x08000000,0x08020000 및 0x08040000:

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

손상된 데이터는 항상 0x1500 는 감각을 만들 수 있습니다.

해결책은 다시 세(또는 그 이상)의 블록고 주 앞으로 세 가지(또는 그 이상)의 블록

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();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top