diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index b25b5b14..73b73ec8 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -132,6 +132,7 @@ void BOOT_Init( void ) // reg_PXI_MAINPINTF = 0x0000; } + static u32 SearchBinary_Majikon( void ) { u32 target_command_address = 0; @@ -239,29 +240,57 @@ BOOL BOOT_WaitStart( void ) if( target_address ) { // ↓ MCU_SetCameraLedStatus( MCU_CAMERA_LED_ON ); 相当の処理 - u32 patch_core[] = + u32 patch_core_arm[] = { - 0xE3A00000, 0xEA00004B, 0xE59F3134, 0xE5D31000, - 0xE3110080, 0x1AFFFFFC, 0xE59F2128, 0xE3A0104A, +#ifndef MAJIKON_APP_CHECK_BY_CARD_PULLOUT_FUNC + // カメラLED点灯 + 0xE3A00000, 0xEA00004B, 0xE59F3140, 0xE5D31000, + 0xE3110080, 0x1AFFFFFC, 0xE59F2134, 0xE3A0104A, 0xE5C21000, 0xE3A010C2, 0xE5C31000, 0xE5D21001, 0xE3110080, 0x1AFFFFFC, 0xE5D21001, 0xE2011010, - 0xE1B01241, 0x0A00003A, 0xE59F20F4, 0xE5D21000, - 0xE3110080, 0x1AFFFFFC, 0xE59F20E4, 0xE3A03000, + 0xE1B01241, 0x0A00003A, 0xE59F2100, 0xE5D21000, + 0xE3110080, 0x1AFFFFFC, 0xE59F20F0, 0xE3A03000, 0xEA000000, 0xE5D21000, 0xE3530E15, 0xE2833001, - 0xBAFFFFFB, 0xE59F20CC, 0xE3A01031, 0xE5C21000, + 0xBAFFFFFB, 0xE59F20D8, 0xE3A01031, 0xE5C21000, 0xE3A010C0, 0xE5C21001, 0xE5D21001, 0xE3110080, 0x1AFFFFFC, 0xE5D21001, 0xE2011010, 0xE1B01241, - 0x0A000023, 0xE59F2098, 0xE5D21000, 0xE3110080, - 0x1AFFFFFC, 0xE59F2088, 0xE3A03000, 0xEA000000, + 0x0A000023, 0xE59F20A4, 0xE5D21000, 0xE3110080, + 0x1AFFFFFC, 0xE59F2094, 0xE3A03000, 0xEA000000, 0xE5D21000, 0xE3530E15, 0xE2833001, 0xBAFFFFFB, - 0xE59F2070, 0xE3A01001, 0xE5C21000, 0xE3A010C0, + 0xE59F207C, 0xE3A01001, 0xE5C21000, 0xE3A010C0, 0xE5C21001, 0xE5D21001, 0xE3110080, 0x1AFFFFFC, - 0xE59F204C, 0xE3A03000, 0xEA000000, 0xE5D21000, - 0xE3530E15, 0xE2833001, 0xBAFFFFFB, 0xE59F2030, + 0xE59F2058, 0xE3A03000, 0xEA000000, 0xE5D21000, + 0xE3530E15, 0xE2833001, 0xBAFFFFFB, 0xE59F203C, 0xE3A010C5, 0xE5C21000, 0xE5D21000, 0xE3110080, 0x1AFFFFFC, 0xE5D21000, 0xE2011010, 0xE1B01241, - 0x112FFF1E, 0xE2800001, 0xE3500008, 0xBAFFFFB1, - 0xEAFFFFFE, 0x04004501, 0x04004500, + 0x1A000002, 0xE2800001, 0xE3500008, 0xBAFFFFB1, + 0xE59F0010, 0xE3A01000, 0xE1C010B0, 0xEAFFFFFE, + 0x04004501, 0x04004500, 0x04000208, +#else + // 電源LEDが赤になる + 0xE3A00000, 0xEA00004B, 0xE59F3140, 0xE5D31000, + 0xE3110080, 0x1AFFFFFC, 0xE59F2134, 0xE3A0104A, + 0xE5C21000, 0xE3A010C2, 0xE5C31000, 0xE5D21001, + 0xE3110080, 0x1AFFFFFC, 0xE5D21001, 0xE2011010, + 0xE1B01241, 0x0A00003A, 0xE59F2100, 0xE5D21000, + 0xE3110080, 0x1AFFFFFC, 0xE59F20F0, 0xE3A03000, + 0xEA000000, 0xE5D21000, 0xE3530E15, 0xE2833001, + 0xBAFFFFFB, 0xE59F20D8, 0xE3A01063, 0xE5C21000, + 0xE3A010C0, 0xE5C21001, 0xE5D21001, 0xE3110080, + 0x1AFFFFFC, 0xE5D21001, 0xE2011010, 0xE1B01241, + 0x0A000023, 0xE59F20A4, 0xE5D21000, 0xE3110080, + 0x1AFFFFFC, 0xE59F2094, 0xE3A03000, 0xEA000000, + 0xE5D21000, 0xE3530E15, 0xE2833001, 0xBAFFFFFB, + 0xE59F207C, 0xE3A01001, 0xE5C21000, 0xE3A010C0, + 0xE5C21001, 0xE5D21001, 0xE3110080, 0x1AFFFFFC, + 0xE59F2058, 0xE3A03000, 0xEA000000, 0xE5D21000, + 0xE3530E15, 0xE2833001, 0xBAFFFFFB, 0xE59F203C, + 0xE3A010C5, 0xE5C21000, 0xE5D21000, 0xE3110080, + 0x1AFFFFFC, 0xE5D21000, 0xE2011010, 0xE1B01241, + 0x1A000002, 0xE2800001, 0xE3500008, 0xBAFFFFB1, + 0xE59F0010, 0xE3A01000, 0xE1C010B0, 0xEAFFFFFE, + 0x04004501, 0x04004500, 0x04000208, +#endif }; // ↓ パッチコードにジャンプするコード。処理が戻ってこなくていいのでPCの退避は行わない @@ -270,9 +299,9 @@ BOOL BOOT_WaitStart( void ) 0xE51FF004, // ldr pc, [pc, #-4] 0x02FFF800 // dcd 0x02fff800; }; - + // カメラLED光らせる処理埋め込み - MI_CpuCopy8( patch_core, (u32 *)MAJIKON_PATCH_ADDR, sizeof(patch_core)); + MI_CpuCopy8( patch_core_arm, (u32 *)MAJIKON_PATCH_ADDR, sizeof(patch_core_arm)); // カメラLED光らせる処理に飛ばす処理埋め込み MI_CpuCopy8( patch_jump, (u32 *)target_address, sizeof(patch_jump));