Alright, so this route is likely not an easy one. Let's try what worked on 5DS (blindly, assuming their bootloaders are similar). Apply this patch on top of the digic6-dumper branch:
diff -r b2e0efa1d090 platform/7D2.104/Makefile.platform.default
--- a/platform/7D2.104/Makefile.platform.default
+++ b/platform/7D2.104/Makefile.platform.default
@@ -22,3 +22,2 @@
ML_MINIMAL_OBJ = minimal-d6.o
-ML_SRC_EXTRA_OBJS += log-d6.o stdio.o
endif
diff -r b2e0efa1d090 src/boot-d6.c
--- a/src/boot-d6.c
+++ b/src/boot-d6.c
@@ -52,2 +52,10 @@
+#if defined(CONFIG_5DS) || defined(CONFIG_7D2)
+static void set_S_TX_DATA(int value)
+{
+ while ( !(MEM(0xD0034020) & 0x10) );
+ MEM(0xD0034014) = value;
+}
+#endif
+
void
@@ -96,2 +104,6 @@
+ #if defined(CONFIG_5DS) || defined(CONFIG_7D2)
+ set_S_TX_DATA(0x20040);
+ #endif
+
// We enter after the signature, avoiding the
diff -r b2e0efa1d090 src/minimal-d6.c
--- a/src/minimal-d6.c
+++ b/src/minimal-d6.c
@@ -13,4 +13,18 @@
+static void led_blink(int times, int delay_on, int delay_off)
+{
+ for (int i = 0; i < times; i++)
+ {
+ MEM(CARD_LED_ADDRESS) = LEDON;
+ msleep(delay_on);
+ MEM(CARD_LED_ADDRESS) = LEDOFF;
+ msleep(delay_off);
+ }
+}
+
static void DUMP_ASM dump_task()
{
+ /* LED blinking test */
+ led_blink(5, 500, 500);
+
#if 0
@@ -32,6 +46,2 @@
#endif
-
- /* save a diagnostic log */
- log_finish();
- call("dumpf");
}
@@ -41,3 +51,2 @@
{
- log_start();
}
This disables the code parts for which we don't have the stubs defined yet, and enables a simple LED blinker on top of the main firmware (tested in QEMU). If that works, you'll be pretty much at the same stage as 80D after finding the missing stubs.
If that doesn't work, we'll need a good copy of the bootloader...