diff --git a/doc/radioinit b/doc/radioinit index 2ca4094f5..b1dd2ac8c 100644 --- a/doc/radioinit +++ b/doc/radioinit @@ -89,9 +89,6 @@ then maybe buckbypass sequence... 4 entries from r4+16 0x402b64 : 0x80003000 0x00000018 0x80003048 0x00000f04 0x402b74 : 0x00000000 0x000161a8 0x80003048 0x00000ffc - - - RadioInit is (roughly): SMAC_InitFromMemory(gRadioTOCCal1,40); @@ -101,6 +98,9 @@ RadioInit is (roughly): SMAC_InitFromMemory(gRadioInit_RegReplacement_c,344); SMAC_InitFromFlash(0x1F000); SMAC_InitFlybackSettings(); + SMAC_InitFromMemory(gBuckByPass_c,16); + + fill_ram_struct(&u8RamValues); uint8_t i; uint8_t buffer_radio_init[16]; @@ -109,6 +109,43 @@ RadioInit is (roughly): } +Some kind of success! + +This replacment works: + + + // RadioInit(PLATFORM_CLOCK, gDigitalClock_PN_c, u32LoopDiv); // need this to work + + /* my replacment for RadioInit, flyback and vreg have been separated out */ + radio_init(); + // SMAC_InitFromMemory(gRadioTOCCal1,40); + // *(volatile uint32_t *)0x80009000 = 0x80050100; + // SMAC_InitFromMemory(gRadioTOCCal2_24MHz_c,8); + // SMAC_InitFromMemory(gRadioTOCCal3_c,88); + // SMAC_InitFromMemory(gRadioTOCCal5,32); + // SMAC_InitFromMemory(gRadioInit_RegReplacement_c,344); + SMAC_InitFromFlash(0x1F000); + // SMAC_InitFlybackSettings(); + flyback_init(); + // SMAC_InitFromMemory(gBuckByPass_c,16); + vreg_init(); + + *((uint32_t *)&u8RamValues) = 0x4c20030a; + fill_ram_struct(&u8RamValues); + + for(j=0; j<16; j++) { + // buffer_radio_init[j] = get_ctov(j,u8RamValues[3]); + buffer_radio_init[j] = get_ctov(j,0x4c); //0x4c loads the right values into buffer_radio_init... but why isn't RamValues correct? + } + + +Which means my radio_init, and vreg_init are good. It also means that +my intreprtation of buffer_radio_init is correct. It may also mean +that u8RamValues isn't important since I just set it's value. + +That means I only have InitFromFlash to replace now! + + /* After init from flash and flyback settings ram_init_val - 004055d0 diff --git a/doc/ws.dis b/doc/ws.dis index a87691f16..091490104 100644 --- a/doc/ws.dis +++ b/doc/ws.dis @@ -5265,10 +5265,10 @@ Disassembly of section P2: 403080: 480f ldr r0, [pc, #60] (4030c0 ) // 6: 403082: f000 f881 bl 403188 // and a call to fill ram struct --- maybe important to the program? 403086: 2400 movs r4, #0 - 403088: 78e9 ldrb r1, [r5, #3] // appears to be 0x9b + 403088: 78e9 ldrb r1, [r5, #3] // appears to be 0x4c 40308a: 0620 lsls r0, r4, #24 // clobber high 24 bits 40308c: 0e00 lsrs r0, r0, #24 - 40308e: f000 f86d bl 40316c //v=get_ctov(0,0x9b) + 40308e: f000 f86d bl 40316c //v=get_ctov(0,0x4c) 403092: 1929 adds r1, r5, r4 // r4 = 0, r5 is &ram_init_val 403094: 7208 strb r0, [r1, #8] 403096: 1c64 adds r4, r4, #1 // r4 = r4+1 @@ -5373,8 +5373,8 @@ Disassembly of section P2: 403168: bfffffff .word 0xbfffffff 0040316c : - 40316c: 4a04 ldr r2, [pc, #16] (403180 ) - 40316e: 4350 muls r0, r2 + 40316c: 4a04 ldr r2, [pc, #16] (403180 ) r2=0x00dfbe77 + 40316e: 4350 muls r0, r2 403170: 0589 lsls r1, r1, #22 403172: 1840 adds r0, r0, r1 403174: 4903 ldr r1, [pc, #12] (403184 ) diff --git a/src/maca.c b/src/maca.c index abf1bf63d..6973113a1 100644 --- a/src/maca.c +++ b/src/maca.c @@ -61,6 +61,7 @@ void reset_maca(void) 4030e8: 00ffffff .word 0x00ffffff */ +/* tested and is good */ #define FLYBACK_BASE 0x80009a000 void flyback_init(void) { uint32_t val8, or; @@ -128,6 +129,8 @@ const uint32_t addr_reg_rep[MAX_DATA] = { 0x80004118,0x80009204,0x80009208,0x800 const uint32_t data_reg_rep[MAX_DATA] = { 0x00180012,0x00000605,0x00000504,0x00001111,0x0fc40000,0x20046000,0x4005580c,0x40075801,0x4005d801,0x5a45d800,0x4a45d800,0x40044000,0x00106000,0x00083806,0x00093807,0x0009b804,0x000db800,0x00093802,0x00000015,0x00000002,0x0000000f,0x0000aaa0,0x01002020,0x016800fe,0x8e578248,0x000000dd,0x00000946,0x0000035a,0x00100010,0x00000515,0x00397feb,0x00180358,0x00000455,0x00000001,0x00020003,0x00040014,0x00240034,0x00440144,0x02440344,0x04440544,0x0ee7fc00,0x00000082,0x0000002a }; + +/* has been tested and it good */ void vreg_init(void) { volatile uint32_t i; *(volatile uint32_t *)(0x80003000) = 0x00000018; /* set default state */ @@ -137,6 +140,8 @@ void vreg_init(void) { *(volatile uint32_t *)(0x80003048) = 0x00000ff8; /* start the regulators */ } + +/* radio_init has been tested to be good */ void radio_init(void) { uint32_t i; /* sequence 1 */