سؤال

واني اسعى الى معرفة كيفية برمجة PSRAM في GBA الحجم EZ فلاش 3 في 1 بطاقة. في الأساس تكرار ما GBA Exploader والبرامج الأخرى القيام به.

إذا كنت تحديد كتلة وبرنامج لها ثم تلا ذلك إعادة halfword الأول هو دائما 0x1500 أو شيء من هذا القبيل، ولكن بقية البيانات على ما يرام.

إذا على الكتابة I تحديد كتلة السابق، وبدء الكتابة في 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