2009-05-18 31 views
0

我想知道如何在GBA大小的EZ Flash 3合成卡中編程PSRAM。基本上重複什麼樣的GBA Exploader和其他程序。在EZ Flash 3中寫入PSRAM 1

如果我選擇一個塊並對其進行編程,然後再讀回第一個半字始終是0x1500或類似的東西,但其餘的數據沒有問題。

如果在寫入時選擇前一個塊,則開始在0x20000字節處寫入該塊(從我已確定的塊的大小)。從期望的塊中讀回來仍然表明前半字是錯誤的,但剩下的半字是正確的。

+0

我是usi基於EZ Flash 512m的庫作爲基準。這些卡的ID報告爲0x227E2218 – 2009-05-18 05:23:45

回答

0

我是這個「接近我曾試圖備份一個,然後兩個街區,但不是三個,那就是把戲在後的視線通知多少的功能寫入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();