I've applied the M50 DIGIC8 QEMU draft patch by alex (https://www.magiclantern.fm/forum/index.php?topic=23296.msg210088#msg210088) and used the M50 instead of 200D as a template for the RP.
It immediately crashed on the first try with the following error:
After changing the RPs LED Address in model_list.c from M50 to 200D it is now booting even further. It is now booting the second core of the CPU and locks up a little bit later then before:
romcpy does now generate a few more address:
This is my current EOSRP definition in models_list.c:
It immediately crashed on the first try with the following error:
Code Select
qemu-system-arm: /home/nimble-test/ML/qemu-eos/qemu-2.5.0/hw/arm/../eos/eos.c:2568: eos_handle_card_led: Assertion `s->card_led' failed.
After changing the RPs LED Address in model_list.c from M50 to 200D it is now booting even further. It is now booting the second core of the CPU and locks up a little bit later then before:
Code Select
00000000 - 3FFFFFFF: eos.ram
40000000 - 7FFFFFFF: eos.ram_uncached
DF000000 - DFFFFFFF: eos.ram_extra
E0000000 - E1FFFFFF: eos.rom0
E2000000 - E3FFFFFF: eos.rom0_mirror
E4000000 - E5FFFFFF: eos.rom0_mirror
E6000000 - E7FFFFFF: eos.rom0_mirror
E8000000 - E9FFFFFF: eos.rom0_mirror
EA000000 - EBFFFFFF: eos.rom0_mirror
EC000000 - EDFFFFFF: eos.rom0_mirror
EE000000 - EFFFFFFF: eos.rom0_mirror
F0000000 - F1FFFFFF: eos.rom1
F2000000 - F3FFFFFF: eos.rom1_mirror
F4000000 - F5FFFFFF: eos.rom1_mirror
F6000000 - F7FFFFFF: eos.rom1_mirror
F8000000 - F9FFFFFF: eos.rom1_mirror
FA000000 - FBFFFFFF: eos.rom1_mirror
FC000000 - FDFFFFFF: eos.rom1_mirror
FE000000 - FFFFFFFF: eos.rom1_mirror
BFE00000 - DEFFFFFF: eos.mmio
[EOS] enabling memory access logging (RW).
[EOS] loading './EOSRP/ROM0.BIN' to 0xE0000000-0xE1FFFFFF
[EOS] loading './EOSRP/ROM1.BIN' to 0xF0000000-0xF1FFFFFF
[MPU] FIXME: using generic MPU spells for EOSRP.
[MPU] FIXME: no MPU button codes for EOSRP.
Start address: 0xE0000000
Setting BOOTDISK flag to 0
[CPU0] E0008450: MRC p15,0,Rd,cr0,cr0,5: MPIDR -> 0x80000000
[CPU0] E0008460: MCR p15,0,Rd,cr12,cr0,0: VBAR <- 0xE000001D
[CPU0] E000848C: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x8C50078
[CPU0] E0008482: MCR p15, ... : CACHEMAINT x1 (omitted)
[CPU0] E000848C: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C50878
[CPU0] E0004B62: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C50878
[CPU0] E0004B62: MCR p15, ... : CACHEMAINT x2 (omitted)
[CPU0] E0004B62: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C51878
[ROMCPY] 0xE0008634 -> 0xDF001000 size 0x600 at 0xE000699C
Logging ROM-copied blocks to EOSRP/romcpy.sh.
[CPU0] E00084D8: MRC p15,0,Rd,cr0,cr0,5: MPIDR -> 0x80000000
[CPU0] E0004B86: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C51878
[CPU0] E0004C50: MCR p15, ... : CACHEMAINT x512 (omitted)
[CPU0] E0004B86: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C50878
[CPU0] E0004B96: MCR p15, ... : CACHEMAINT x1 (omitted)
[CPU0] E0004AE2: MCR p15,0,Rd,cr3,cr0,0: DACR <- 0x55555555
[CPU0] E0004AEA: MCR p15,0,Rd,cr2,cr0,0: TTBR0_EL1 <- 0xE0004800
[CPU0] E0004AEE: MCR p15,0,Rd,cr2,cr0,1: TTBR1_EL1 <- 0xE0000080
[CPU0] E0004AF2: MCR p15,0,Rd,cr13,cr0,1: CONTEXTIDR(S) <- 0x0
[CPU0] E0004AF6: MCR p15,0,Rd,cr2,cr0,2: TTBCR <- 0x7
[CPU0] E0004AFE: MCR p15,0,Rd,cr8,cr7,0: TLBIALL <- 0x0
[CPU0] E0004B06: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C50878
[CPU0] E0004B06: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C50879
[CPU0] E0008546: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C50879
[CPU0] E0008546: MCR p15, ... : CACHEMAINT x1 (omitted)
[CPU0] E0008546: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C51879
[CPU0] E000855E: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C51879
[CPU0] E000855E: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C5187D
[CPU0] E000856A: MRC p15,0,Rd,cr1,cr0,1: ACTLR_EL1 -> 0x45
[CPU0] E000856A: MCR p15,0,Rd,cr1,cr0,1: ACTLR_EL1 <- 0x45
[CPU0] E000856A: MRC p15,0,Rd,cr15,cr0,0: A9_PWRCTL -> 0x0
[CPU0] E000856A: MCR p15,0,Rd,cr15,cr0,0: A9_PWRCTL <- 0x1
[CPU0] E000858A: MRC p15,0,Rd,cr15,cr0,1: A9_DIAG -> 0x0
[CPU0] E000858A: MCR p15,0,Rd,cr15,cr0,1: A9_DIAG <- 0x400000
[CPU0] E0004900: MRC p15,0,Rd,cr0,cr0,5: MPIDR -> 0x80000000
[CPU0] E00049A6: MCR p15,0,Rd,cr12,cr0,0: VBAR <- 0xDF000000
[ROMCPY] 0xE0008C34 -> 0xDF000000 size 0x100 at 0xE0004966
BootL[ROMCPY] 0xE0008D50 -> 0x40100000 size 0x116D4 at 0xE0007F4C
[ROMCPY] 0xE0000000 -> 0x40700000 size 0x4900 at 0x10F46C
oade[CPU0] 001008F6: MCR p15, ... : CACHEMAINT x584 (omitted)
[CPU0] E0040000: MCR p15,0,Rd,cr12,cr0,0: VBAR <- 0xE073A000
[CPU0] E004000A: MRC p15,0,Rd,cr0,cr0,5: MPIDR -> 0x80000000
Wake up CPU1
Wake up CPU1
[ROMCPY] 0xE12F43EC -> 0x4000 size 0x247CC at 0xE004003C
[CPU1] E0008450: MRC p15,0,Rd,cr0,cr0,5: MPIDR -> 0x80000001
[CPU1] E0008460: MCR p15,0,Rd,cr12,cr0,0: VBAR <- 0xE000001D
[CPU1] E000848C: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x8C50078
[CPU1] E0008482: MCR p15, ... : CACHEMAINT x1 (omitted)
[CPU1] E000848C: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C50878
[CPU1] E0004B62: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C50878
[CPU1] E0004B62: MCR p15, ... : CACHEMAINT x2 (omitted)
[CPU1] E0004B62: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C51878
[CPU1] E0004B86: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C51878
[CPU1] E0004C40: MCR p15, ... : CACHEMAINT x512 (omitted)
[CPU1] E0004B86: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C50878
[CPU1] E0004B96: MCR p15, ... : CACHEMAINT x1 (omitted)
[CPU1] E0004AE2: MCR p15,0,Rd,cr3,cr0,0: DACR <- 0x55555555
[CPU1] E0004AEA: MCR p15,0,Rd,cr2,cr0,0: TTBR0_EL1 <- 0xE0004880
[CPU1] E0004AEE: MCR p15,0,Rd,cr2,cr0,1: TTBR1_EL1 <- 0xE0000080
[CPU1] E0004AF2: MCR p15,0,Rd,cr13,cr0,1: CONTEXTIDR(S) <- 0x1
[CPU1] E0004AF6: MCR p15,0,Rd,cr2,cr0,2: TTBCR <- 0x7
[CPU1] E0004AFE: MCR p15,0,Rd,cr8,cr7,0: TLBIALL <- 0x0
[CPU1] E0004B06: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C50878
[CPU1] E0004B06: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C50879
[CPU1] E0008546: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C50879
[CPU1] E0008546: MCR p15, ... : CACHEMAINT x1 (omitted)
[CPU1] E0008546: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C51879
[CPU1] E000855E: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C51879
[CPU1] E000855E: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C5187D
[CPU1] E000856A: MRC p15,0,Rd,cr1,cr0,1: ACTLR_EL1 -> 0x45
[CPU1] E000856A: MCR p15,0,Rd,cr1,cr0,1: ACTLR_EL1 <- 0x45
[CPU1] E000856A: MRC p15,0,Rd,cr15,cr0,0: A9_PWRCTL -> 0x0
[CPU1] E000856A: MCR p15,0,Rd,cr15,cr0,0: A9_PWRCTL <- 0x1
[CPU1] E000858A: MRC p15,0,Rd,cr15,cr0,1: A9_DIAG -> 0x0
[CPU1] E000858A: MCR p15,0,Rd,cr15,cr0,1: A9_DIAG <- 0x400000
[CPU1] E0004AA2: MRC p15,0,Rd,cr1,cr0,0: SCTLR -> 0x48C5187D
[CPU1] E0004AA2: MCR p15,0,Rd,cr1,cr0,0: SCTLR <- 0x48C5107D
[ROMCPY] 0xE1318BB8 -> 0x223B000 size 0xD1748 at 0xE0040050
[CPU0] E0040104: MRC p15,0,Rd,cr0,cr0,5: MPIDR -> 0x80000000
[ROMCPY] 0xE13EA300 -> 0xDF002800 size 0xB94 at 0xE0040088
K433 READY
4:4294966.271 [EEP] InstEEP: Rng_MDS(0x0 != 0x8000)
5:4294966.271 [EEP] InstEEP: Srvc_MDS(0x0 != 0x100)
8:4294966.271 [EEP] Rng_EEPH_RDS Invalid:0x0
9:4294966.271 [EEP] Srvc_EEPH_RDS Invalid:0x0
12:4294966.271 [STARTUP] K433 ICU Firmware Version 1.5.0 ( 3.8.7 )
romcpy does now generate a few more address:
Code Select
dd if=ROM0.BIN of=EOSRP.0xDF001000.bin bs=1 skip=$((0x8634)) count=$((0x600))
dd if=ROM0.BIN of=EOSRP.0xDF000000.bin bs=1 skip=$((0x8C34)) count=$((0x100))
dd if=ROM0.BIN of=EOSRP.0x40100000.bin bs=1 skip=$((0x8D50)) count=$((0x116D4))
dd if=ROM0.BIN of=EOSRP.0x40700000.bin bs=1 skip=$((0x0)) count=$((0x4900))
dd if=ROM0.BIN of=EOSRP.0x4000.bin bs=1 skip=$((0x12F43EC)) count=$((0x247CC))
dd if=ROM0.BIN of=EOSRP.0x223B000.bin bs=1 skip=$((0x1318BB8)) count=$((0xD1748))
dd if=ROM0.BIN of=EOSRP.0xDF002800.bin bs=1 skip=$((0x13EA300)) count=$((0xB94))
This is my current EOSRP definition in models_list.c:
Code Select
{
.name = "EOSRP",
.digic_version = 8,
.ram_size = 0x40000000, /* 1GB */
.card_led_address = 0xD208016C, // 200D /* WLAN LED 0xD2080190 */
.current_task_addr = 0x28, /* fixme: read from virtual memory */
.uart_rx_interrupt = 0x15D,
.uart_tx_interrupt = 0x16D,
.rom0_size = 0x02000000, /* 32MB (main ROM) */
.rom1_size = 0x02000000, /* 32MB (secondary ROM) */
.dedicated_movie_mode = 0, // camera has support for it. Set to 1 later.
},