View source
digic6-dumper
  • Contributors
    1. Loading...
Author Commit Message Date Builds
Alex
Memory backend: use const char * for read-only strings
Alex
tasks: use const char * for DryOS task names
Alex
tasks.h: renamed current_task->name to current_task->task_name; updated old code to use get_current_task_name() instead. A few places still require raw access to the task_name field (e.g. tskmon).
Alex
get_current_task_name: updated interrupt ID for DIGIC 6/7/8 (no need to shift it by 2, unlike DIGIC 5 and earlier)
Alex
get_current_task_name: moved into tasks.h to remove duplicate code It was in 5 different places in ML source, not counting current_task->name and QEMU source.
Alex
log-d678: maximum MPU message size is 0xFF chars (no reason to use a smaller size)
Alex
log-d678: use 512 bytes for MPU messages; use the same buffer for both mpu_send/recv
Alex
log-d678: only check for MPU messages on the first CPU core (they don't arrive on the second core anyway, but our checks may cause race conditions)
Alex
log-d678: attempt to use Canon's cli/spinlock function on DIGIC 7/8 (200D for now) It appears to be some sort of cli/sei valid for both cores. To be tested.
Alex
arm-mcr.h: read_cpsr
Alex
spinlock: volatile keyword is required
Alex
Moved spinlock functions into arm-mcr.h (spin_lock, spin_unlock); refactored log-d678.c
Alex
log-d6: __sync_lock_test_and_set requires an explicit spinning loop https://stackoverflow.com/questions/1383363/is-my-spin-lock-implementation-correct-and-optimal
Alex
log-d678: attempt to log messages from both CPU cores on DIGIC 7/8 (to be tested on real hardware) http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka4175.html http://infocenter.arm.com/help/topic/com.arm.doc.ddi0388f/CBBDIIFI.html
Alex
Renamed log-d6.[ch] to log-d678.[ch] and minimal-d6.c to minimal-d678.c These files are starting to get code specific to DIGIC 7/8. They are not directly usable on DIGIC 8 yet, as most of the functions we need to override are in ROM. Only in QEMU for now.
Alex
arm-mcr.h, log-d6.h: renamed get_cpuid to get_cpu_id to avoid confusion with CPUID aka CPU model identification MPIDR is not 100% correct; we extract only specific bits from it. These bits are called "CPU ID" in ARM docs. http://infocenter.arm.com/help/topic/com.arm.doc.ddi0388e/CIHEBGFG.html
Alex
log-d6: refuse to run on CPU cores other than #0 Fixes corrupted logs on DIGIC 7/8 (confirmed on 200D by @names_are_hard ). Cause: race condition between the two processor cores. Even if we load ML on core #0 only, when overriding DebugMsg / ISR hooks / etc, the change is also visible from the second core. Disabling interrupts won't help. TODO: figure out how to do mutual exclusion between the two cores.
Alex
arm-mcr.h: get_cpuid() for multi-core processors (DIGIC 7/8)
Alex
5D4: hardcoded logging buffers, based on chris_overseas' experiment https://www.magiclantern.fm/forum/index.php?topic=17695.msg212320#msg212320 CONFIG_MMIO_TRACE works in QEMU.
Alex
io_trace: allow CONFIG_MMIO_TRACE for minimal targets, too (removed the 80D workaround)
chris_miller
5D4: updated the codebase to 1.1.2 3bf2df7, 73990b1, 24dbfdb, c0f8a82, 3e04262 from https://bitbucket.org/chris_miller/ml-fork/branch/5d4-112
Alex
check-stubs.py: also check ROM/RAM contents, 8 bytes for each stub (optional) RAM files should be created with the Portable ROM dumper. RAM files, if any, should be created with romcpy.sh (QEMU: -d romcpy).
Alex
check-stubs.py: updated heuristics for DIGIC 6/7/8 - everything above E0000000 is ROM - check parity differences (Thumb bit) - check "delta" changes (it's expected to drift, but no large jumps)
Alex
EOS R: skip 0x82000000-0x83000000 for CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP (apparently used as shared memory by a secondary core, codenamed Shirahama)
Alex
EOS R: UNCACHEABLE macro is no longer valid; using a workaround for CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP
Alex
EOS R, M50: updated CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP (see bee6ec3 for details and usage notes)
Alex
M50: uart_printf (not yet used, but... required to compile)
Alex
EOS R: added uart_printf for easier debugging
Alex
minimal-d78: need to call FIO_RemoveFile before FIO_CreateFile
Alex
EOS R: LED test code (not enabled by default)
Alex
EOS R: updated to 1.1.0 (note to self: check firmware version next time)
Alex
EOS R: initial platform directory - firmware 1.0.0 - boot process tested in QEMU - confirmed to boot on real hardware - very simple logging works (with Canon's DebugMsg) - ROM dumping from main firmware also works
Alex
reboot.c: debug code for jumping into Canon's main firmware (disabled by default)
Alex
DIGIC 8: MMIO tricks required to boot (tested on EOS R; maybe also needed on M50/SX70)
Alex
DIGIC 6: moved MMIO boot tricks in reboot.c - for consistency - 7D may use two different boot methods ("classic" and "cache hack"); keeping this in reboot.c reduces code duplication - in the future, we will want to be able to jump to any Canon firmware from the same binary; this will have to be done from reboot.c
Alex
7D, 7D2, 5DS, 5DSR: use CONFIG_DUAL_DIGIC (to enable the specific boot tricks)
Alex
CONFIG_DIGIC_version is now mandatory; defined CONFIG_DIGIC_IV on models using one.
Alex
7D2: added missing stubs and other definitions (to be tested - will it boot?)
Alex
5DS R: initial platform directory - boot process tested in QEMU (without file I/O) - boots on the camera (confirmed by @jcareaux) - basic logging works (including our DebugMsg) - todo: try the remaining 80D/5D4 experiments
Alex
Makefile: removed unnecessary AUTOEXEC_BASE and FIR_BASE sed -i.bak '/AUTOEXEC_BASE/d' */Makefile.platform.default sed -i.bak '/FIR_BASE/d' */Makefile.platform.default
Alex
reboot.c: make firmware signature mandatory fw-signature.h: fixed/added signatures for models that didn't compile (5D3.123, 700D.115, 5DS.111)
Alex
reboot.c: minor cleanups
Alex
5DS: compile as DIGIC 6 (to be tested)
Alex
Merged 5Ds_experiments into digic6-dumper
Alex
5DS: moved experimental minimal.c into platform/5DS.111 and reverted changes to main minimal.c (to help with merging)
Alex
DIGIC 7/8: use -march=armv7-a, thanks srsa https://www.magiclantern.fm/forum/index.php?topic=23296.msg211963#msg211963
Alex
DIGIC 7/8: updated comment about CPU type and Thumb-loaded binaries
Alex
760D, 77D, 6D2: fix compilation; minor Makefile cleanups (will compile the reboot-dumper experiments, i.e. LED blinking)
Alex
80D: minor cleanups - stubs: removed unused dm_set_store_level; updated comments for mpu_send/recv - Makefile: comments about RESTARTSTART
Alex
80D: firmware signature for 1.0.2
Alex
log-d6: only enable LOG_EARLY_STARTUP on 80D (this is to make sure the code works out of the box on other D6/7/8 models)
Alex
io_trace: log the entire MMIO range, including Omar/Zico communication https://www.magiclantern.fm/forum/index.php?topic=17360.msg211708#msg211708
Alex
io-trace: log the Thumb bit alongside with PC One may now tell whether MMIO events were triggered by ARM or Thumb code.
Alex
io_trace: also log LR for each MMIO event
Alex
io_trace: restore LR when re-executing the original instruction Does it help with any of the tricky ranges? e.g. BFE00000/200000 or BFF00000/100000
Alex
io_trace: fix number of MMIO events reported (minor)
Alex
log-d6: do not log MMIO events for our own timestamping code (slightly less noise in the logs)
Alex
io_trace: fully working on 80D in QEMU! To merge the logs: cat MMIO.LOG DEBUGMSG.LOG | sort -n
Alex
io_trace: minimalist DIGIC 6 port, with inline ARM/Thumb instruction re-execution Expected output: - on real hardware: - no crash, everything working as usual, including our logging code - no new information in the logs (yet) - in QEMU: - data abort exception for each MMIO event - every trapped instruction disassembled correctly, whether ARM/Thumb16/Thumb32 (printed as green) - code returning to next instruction (execution trace should be checked on 3 cases: ARM/…
Alex
io_trace: minimalist DIGIC 6 port, for debugging Only one MMIO event will be captured. Compile with: make CONFIG_MMIO_TRACE=y Expected outcome: - on real hardware: no crash - in QEMU, with `CONFIG_QEMU=y`: ./run_canon_fw.sh 80D,firmware=boot=1 -d exec,io,int,v,autoexec |& grep -a -B 10 -A 50 'Data Abort' 0xfe0d32ec: 6800 ldr r0, [r0, #0] ; instruction attempting to perform MMIO FE0D32EC: Taking exception 4 [Data…
Alex
Imported io_trace code from 296fdfb. Doesn't compile.
Alex
log-d6: fix some warnings
Alex
log-d6: attempt to use cacheable memory for logging buffer Expecting smaller overhead for the logging code.
Alex
Experiment - verbose startup logging on 80D Using hardcoded buffer address, as we don't have malloc during startup. https://www.magiclantern.fm/forum/index.php?topic=17360.msg211065#msg211065
Alex
Experiment - find unused memory areas on DIGIC 6 Usage: - compile with CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP enabled in src/config-defines.h - the startup process will be slower than usual (it might even lock up) - during the LED blinks (about 1 minute), exercise the camera a bit (open Canon menu, enter LiveView, take a photo and record a short video clip) - after the LED finishes blinking, a log file will be saved, showing what memory areas mig…
Alex
CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP: fixed compilation and updated for DIGIC 6/7/8 (it's slower than it should be on earlier models, but still functional)
Alex
log-d6: human-readable timestamps
Alex
Merged in ccritix/magic-lantern-3-200d/ccritix/stubss-edited-online-with-bitbucket-1536901475678 (pull request #945)
Alex
200D: file I/O stubs (passing stub_test_file_io from selftest.c)
Alex
Close branch
Alex
200D: memory allocation stubs
Alex
200D: keeping only stubs we are going to use; fixed Thumb bit
Cristian Campean
Several stubs found for 200D
Alex
M50: dumper finally works if ROM contents is copied to RAM first (file I/O DMA apparently unable to read directly from ROM?)
Alex
M50: memory allocation stubs
Alex
M50: FIO stubs (not tested)
Alex
boot-d78: cache maintenance routines apparently expected to preserve R3 M50 boots!
Alex
reboot.c: M50 (possibly others too) are loading FIR files on both CPU cores; since our startup core is not prepared for that, let's jump to main firmware on secondary cores
Alex
reboot-dumper.c: attempt to identify LED address on DIGIC 8 (for EOS R, based on M50 LED addresses; unsuccessful)
Alex
reboot-dumper.c: polyglot startup code
Alex
minimal-d6: updated LV RAW experiments
Alex
5D4: firmware signature for 1.0.4
Alex
minimal-d6: 5D4 VRAM experiments
Alex
log-d6: option to toggle between early startup logging (without malloc) and extended logging (with malloc => larger logs possible)
Alex
minimal-d6: LED blink test
Alex
5D4: updated startup code and ported the 80D logging experiments
Alex
5D4: make sure it compiles reboot-dumper
Alex
5D4: updated stubs; not tested yet
John Cheshire
Following on from Chris Miller's initial work, I have found so far 18 more stubs
chris_miller
5D4 - initial commit. Not much yet, just a few stubs filled in.
Alex
5D4: preparing to update to 1.0.4 (hg rename; updated comments and version numbers)
Alex
200D, M50: forgot to add empty gui.h
Alex
200D: fixed vsnprintf stub (previous one didn't work with large hex numbers, e.g. "%08X" % 0xE04BDCE7 printed "913")
Alex
200D: enabled logging code written for 80D (worked in QEMU after some minor changes)
Alex
log-d6: we've got a 32-bit DIGIC timer https://www.magiclantern.fm/forum/index.php?topic=17360.msg202319#msg202319
Alex
log-d6: minor changes to reduce stack memory usage
Alex
log-d6: use "const" for variables or data structures in the firmware
Alex
imath.h: macro for incrementing a variable modulo N
Alex
Boot process: patching the call to cstart is no longer needed (removed HIJACK_INSTR_BL_CSTART)
Alex
Merged patchmgr into digic6-dumper (arm-mcr.h updates)
Alex
arm-mcr.h: updated cache maintenance operations for DIGIC 7 & 8 (to be tested)
Alex
arm-mcr.h: minor cleanups, non-functional: - moved _sync_caches in the old place - commented out setup_memory_region et al
Alex
minimal-d6: fix compilation (ml_assert_handler as dummy stub)
Alex
Merged lua_fix into digic6-dumper
Alex
Init: removed dm_names (one less stub to worry about)
Alex
Init: removed CONFIG_EARLY_PORT (not working anyway; please use CONFIG_HELLO_WORLD instead)
Alex
Removed boot-hack.c and refactored the boot process: - moved platform-specific code into boot-*.c - moved platform-independent code into init.c - "cache hacked" boot process moved to boot-d45-ch.c - "AllocateMemory" boot process moved to boot-d45-am.c
Alex
Merged new-dryos-task-hooks into digic6-dumper
Alex
Tasks: new method for checking whether an interrupt is active (old method was not compatible with DIGIC 7; to be tested on all models)
Alex
80D, 200D, M50: timer stubs (for qemu-hptimer test)
Alex
Minimal targets & installer: moved platform-dependent startup code into boot-*.c / boot.h This change allows compiling the above targets on DIGIC 6, 7 and 8 models, alongside D4 and 5. TODO: same refactoring for VxWorks and 1300D.
Alex
80D: moved minimal logging code to top level, for easier porting to other DIGIC 6 models (80D.102/minimal.c,log.[ch] -> src/minimal-d6.c,log-d6.[ch]) Also enabled for 7D2, but not working yet (missing stubs; startup code needs tweaking).
Alex
DIGIC 6,7,8: preparing to fix minimal targets (not working yet) - do not override ML_MINIMAL_OBJ when compiling from minimal directory - use platform-specific CFLAGS for minimal targets
Alex
Merged qemu into digic6-dumper
Alex
M50: dm_set_store_level stub not needed
Alex
Makefile: when running "make install", copy ML-SETUP.FIR only for the generic profile (not for minimal or other targets)
Alex
Makefile: always check all minimal targets when running "make zip" (only check whether they compile without errors, just like with the installer)
Alex
Minimal target: moved the Hello World example into its own directory and removed old platform folders
Alex
Minimal targets: 5D3 1.1.3 hacks no longer needed
Alex
GDB scripts: fix IDC names containing spaces
Alex
QEMU: fix timeout in ImgPowDet emulation (there were nondeterministic errors in the FRSP test)
Alex
QEMU: emulate ADTGDMA interrupt (used on 100D and EOS M2) - fixes FA_CaptureTestImage on 100D - some LiveView screenshots changed on 100D - color palette in LiveView changed on M2; can be worked around by pressing L (updated menu tests)
Alex
M50: experimental startup code based on 80D's minimal.c (partially tested in QEMU)
Alex
200D: experimental startup code based on 80D's minimal.c (tested in QEMU)
Alex
fw-signature: always compute from ROMBASEADDR
Alex
Cleaned up firmware signature code a bit
Alex
Makefile: allow customizing minimal source/object file (i.e. using something other than minimal.c)
Alex
reboot.c: polyglot startup code for both ARM and Thumb, adapted from 13a391a. Rationale: if one swaps the card between two cameras, one of them being DIGIC 7/8 and another DIGIC <= 6, we want to be able to print an error message. TODO: also update the portable display code from disp_direct.c. Replaces pull request #937. Tested with: - gcc 5.4.1 (gcc-arm-none-eabi-5_4-2016q3) - gcc 7.2.1 (gcc-arm-none-eabi-7-2017-q4-major) - gcc 7.2.1 (gcc-linaro-7.2.1-2017.11-x86_64_arm-e…
Alex
M50: LED address (not tested) https://www.magiclantern.fm/forum/index.php?topic=19737.msg204984#msg204984
Alex
M50: preparing to upgrade to 1.0.1 (hg rename)
Alex
QEMU tests: ignore nondeterministic screenshot on 6D (may appear with or without free space)
Alex
GDB scripts: moved try_expand_ram_struct at the top
Alex
GDB scripts: minor whitespace fix
Alex
QEMU: ensure valid RAM address before executing EDMAC transfers (EOS M fails here when running FA_CaptureTestImage)
Alex
QEMU: image sensor power emulation (fixes FA_CaptureTestImage on 5D2; tested on all other models able to run the FRSP test)
Alex
QEMU: output dummy data (zeros) on read EDMAC connections Fixes FA_CaptureTestImage on 700D and 650D.
Alex
qemu-frsp: fix compiling for 70D
Alex
QEMU: allow reads to EDMAC CHSW registers (required for FA_CaptureTestImage emulation on 6D and others)
Alex
qemu-frsp: ensure valid exposure settings before the test (exposure time not too long, ISO other than Auto; required on 600D and others)
Alex
QEMU: fix YUV vertical scaling for 1100D (only the FRSP test uses it for now)
Alex
qemu-frsp: allocate a YUV buffer if there isn't one already set up (only with CONFIG_QEMU) Fixes preview on 5D3 and 1100D, where Canon firmware does not allocate one at startup.
Alex
QEMU tests: all models able to navigate Canon menu should pass the FRSP (FA_CaptureTestImage) test Most of them will fail; to be fixed.
Alex
QEMU tests: handle models not yet in mainline (FRSP and HPTimer tests are using this for now)
Alex
QEMU: updated gcc 7/8 patch for systems using virtio-9p
Alex
QEMU: updated gcc 7.x patch to also work with gcc 8.x
Alex
eos.c: fix gcc8 warnings
Alex
Makefile: allow "make install*" without a FIR file (for minimal targets and new platforms)
Alex
QEMU logging: attempt to identify tail calls by default (-d calls,notail to disable)
Alex
QEMU tests: updated for 200D 1.0.1
Alex
QEMU logging: moved IDC files into model subdirectories (for consistency with romcpy shell files)
Alex
QEMU logging: fix typo when using -d romcpy (output file path was not printed correctly)
Alex
QEMU tests: initial support for 800D (fixme: call trace not deterministic, same as 77D)
Alex
800D: minor stub fixes in GDB script
Ian Scott
qemu: add 800D to model_list.c, and add 800D/debugmsg.gdb
Alex
Config options: fix issue #2892 (custom presets not appearing in menu)
Alex
Merged config_var_refactor into lua_fix
Alex
Merged unified into lua_fix
Alex
Menu: fix config var incorrectly changed during fast toggles (e.g. 36 -> 35 without calling the CBR)
Alex
Config variables: declare all internal structures static (minor refactor)
Alex
Config variables: include the forward declaration in the CONFIG_INT_EX definition (no longer needed to declare CONFIG_VAR_CHANGE_FUNC's twice)
Alex
Config variables: use CONFIG_VAR_CHANGE_FUNC (similar to MENU_SELECT_FUNC); minor renames
Alex
Merged unified into config_var_refactor
Alex
audio-ak: fix compiling for 500D
Alex
menu: short joystick clicks should not be interpreted as SET outside ML menu (fixes incorrect trigger of Auto ETTR from joystick, for example)
David Milligan
rename xxx_update functions for config_vars to xxx_on_change
David Milligan
rename CONFIG_INT_UPDATE to CONFIG_INT_EX and .update to .on_change to avoid confusion and name conflicts with MENU_UPDATE_FUNCs
David Milligan
Merge
David Milligan
config var: refactor audio-lapis to use new config var CBR (not tested -> I have none of these cameras)
David Milligan
config var: refactor audio-ak and audio-common to use new config var CBR (TODO: audio-lapis)
Alex
Patch manager: provide a default sync_caches for targets that don't include it (minimal, installer, reboot)
Alex
Patch manager: moved sync_caches in patch.c and removed the "weak" trickery (fixes patch restoring when called from modules)
Alex
QEMU: experimental support for gdb-multiarch (latest Ubuntu no longer has gdb-arm-none-eabi...)
Alex
QEMU install: minor fixes
Alex
QEMU install: on some systems, building GDB requires makeinfo; skip it https://sourceware.org/bugzilla/show_bug.cgi?id=18113 Also show the last few lines from the compilation logs if there's an error.
Alex
QEMU install: on older Ubuntu, gcc/gdb installation without package manager may be required
Alex
QEMU install: minor fix for 32-bit Ubuntu (option 3: no 64-bit gcc available)
Alex
QEMU installer: removed option to allow old 64-bit GDB (hopefully no longer needed)
Alex
QEMU installer: minor fix regarding GDB installation (force compiling from source if a valid 64-bit gdb is already installed)
Alex
QEMU installer: attempt to compile gdb 8.1 from source if a 32-bit version is not available (in particular, Mac and WSL) https://www.magiclantern.fm/forum/index.php?topic=2864.msg200954#msg200954 (thanks t3r4n)
Alex
QEMU install: there's no DISPLAY variable on Mac
Alex
QEMU: better emulation for cache patches (uninstalling works, at least for dm-spy-experiments)
Alex
QEMU: fix CPU0 labels incorrectly appearing in DIGIC 6 logs (only DIGIC 7 should display these)
Alex
QEMU: moved ARM946EOS-specific functions (cache lockdown and WFI) from cpu.c to helper.c
Alex
Patch manager: reworked mechanism for re-applying cache patches when needed * arm-mcr.h: clean_d_cache and flush_i_cache are now private (sync_caches is the high-level function to be used) * replaced all calls to clean_d_cache/flush_i_cache with sync_caches * should fix issues with randomly "disappearing" cache patches * to be tested for performance issues etc
Alex
80D: reworked mpu_send logging (previous attempt appears to miss some messages)
Alex
80D: log MPU messages and some important Canon messages
Alex
80D: log all interrupts; updated interrupt names https://www.magiclantern.fm/forum/index.php?topic=21526.msg196300
Alex
80D: log interrupt IDs for debug messages printed from there
Alex
80D: early logging experiment, to catch initial MPU messages
Alex
80D: alternate method for logging MPU messages (directly from interrupt hooks, without overriding mpu_send/recv)
Alex
80D: use our DebugMsg for logging (experiment)
Alex
80D: debug messages for QEMU (to use them, compile with "make CONFIG_QEMU=y")
Alex
Merged qemu into digic6-dumper
Alex
Minimal targets: CONFIG_QEMU no longer hardcoded in Makefile (should be specified on the command line if desired)
Alex
Makefile: allow CONFIG_QEMU to work on all ML profiles, including minimal and installer By default, CONFIG options are only used for the generic profile. This enables qprintf for debugging DIGIC 6/7 ports using the minimal profile.
Alex
QEMU: fix printing callstack from GDB scripts (broken in 1834cd8)
Alex
GDB scripts: workaround for a crash occuring with 5D (possibly GDB bug; can't explain why it works)
Alex
qemu-frsp: fix compiling on lua_fix codebase (1200D and soon all others)
Alex
QEMU: updated expected test results for 1200D 1.0.2 (no stubs changed in debugmsg.gdb)
Alex
QEMU: removed bogus/unused BGMT_ISO
Alex
QEMU: fix Q button code for 1200D - https://www.magiclantern.fm/forum/index.php?topic=12627.msg200889#msg200889 - assuming the same applies to 1300D; unsure about 600D/1100D
Alex
QEMU: fix compiling on 32-bit x86 hosts Caveat: -d romcpy not working on x86 (requires int128_t)
Alex
QEMU README: initial notes on DIGIC 7
Alex
Merged in DieHertz/magic-lantern/6d2-platform-definitions (pull request #924)
Alex
Close branch
Alex
reboot-dumper: use uint32_t for addressing the LEDs
Alex
Merged in DieHertz/magic-lantern/DieHertz/got-rid-of-explicit-address-arithmetic-f-1524811082443 (pull request #922) reboot-dumper.c: got rid of explicit address arithmetic for LED access
Alex
Close branch
Alex
6D2: added to Makefile.platform.map
Andrey Mironov
Corrected firmware ID
Andrey Mironov
Added proper Canon FIR name
Andrey Mironov
Added 6D2 1.0.3 folder with nothing but LED address
Andrey Mironov
Got rid of explicit address arithmetic for LED access
Alex
QEMU: initial support for DIGIC 7 EOS (200D, 77D, 6D2) - added ROMID; updated MemDiv, XDMAC, SDIO - emulation starts many tasks, talks to MPU, initializes SD, creates the DCIM directory on the virtual card - fails with ERROR WaitPU1 TimeOut - dumpf does not save any logs (figure out why) - note: M5 ROM should now be loaded as ROM0
Alex
QEMU logging: initial support for DIGIC 7 (CPU0 only; exception vectors at nonzero address)
Alex
QEMU tests: ROM dumper needs larger timeout on slower computers; undo unwanted changes from cb93334
Alex
QEMU tests: fix expected results for restore after format after updating SD image
Alex
QEMU tests: reworked ROM dump test to wait as much or as little as each camera needs (fixme: 70D waits for some CFDMA messages that are for some other device)
Alex
QEMU: usleep patching no longer required on M3
Alex
QEMU: updated ROM dump tests to check SFDATA.BIN too (currently only applies to DIGIC 6)
Alex
QEMU: updated SD image with latest display test (changeset 9b37638)
Alex
QEMU: experimental UTimer emulation - these look pretty much like regular timers (same offsets), but behave like HPTimers! - UTimer patches from DIGIC 6 no longer needed! - fine-tuned HPTimer messages
Alex
QEMU: fix logging of MMIO registers from the same range as MREQ (eos_handle_mreq also receives a few other registers, unknown yet)
Alex
QEMU: specify actual RAM size for each model, rather than using generic values (emulating with larger size usually works, but doesn't catch some edge cases)
Alex
QEMU: reordered model definitions in model_list.c (grouped by DIGIC version and similarity)
Alex
QEMU: renamed IO_MEM_START/SIZE to MMIO_ADDR/SIZE for consistency; added MMIO_ADDR to model_list.c (possibly needed for future models)
Alex
QEMU: removed unused entries; moved ML helpers to a different GPIO range. Old range was not accessible on certain models, such as PowerShots and DIGIC 7. Old GPIOs are still accepted (debugging existing code from experimental branches is still possible without merging latest qemu).
Alex
QEMU logging: -d romcpy now output a shell script for extracting the copied blocks
Alex
QEMU: memfd patch to fix compilation with glibc 2.27 https://patchwork.openembedded.org/patch/147682/
Alex
QEMU installer: minor updates - option to "make clean" before renaming the old folder (to save disk space) - exit if QEMU fails to compile - check for a valid DISPLAY (important for WSL) - updated help links
Alex
QEMU: updated CPU definition for DIGIC 7; renamed for older models and reverted the HIVECS property back to false
Alex
QEMU tests: updated checksums for EOS M/M2 screenshots displaying date/time (fix commit 8c575ef99b7f)
Alex
QEMU tests: updated checksum for a screenshot affected by transparency - commit 5b274e3 (Canon quirk - it's not even a LiveView screenshot)
Alex
annotate_mpu_log.py: allow incomplete mpu_send/recv lines (such as the ones from 80D logs)
Alex
MPU spells: documented some AF-related properties
Alex
GDB scripts: also identify and name PTP handlers
Alex
77D: LED address identified, thanks alpha232
Alex
EOS M50: initial platform dir; attempt to guess LED address
Alex
DIGIC 7: binaries appear to be loaded as Thumb, unlike previous models
Alex
200D: initial platform dir; attempt to blink the WLAN LED (unsuccessful) https://www.magiclantern.fm/forum/index.php?topic=19737.msg196158#msg196158
Alex
77D: initial platform dir; attempt to guess LED address (unsuccessful)
Alex
arm-mcr.h: fix CONFIG_DIGIC_VI when used in reboot.c; preparing for CONFIG_DIGIC_VII (to be tested - is the 80D still booting?)
Alex
5D4: fix compilation
Alex
760D: fix compilation
Alex
Merged unified into digic6-dumper
Alex
GDB scripts: identify named functions during execution and export as IDC Named functions identified from: task_create, register_func, register_interrupt, CreateStateObject Tested on 5D3 1.1.3, EOSM2 1.0.3 and 80D 1.0.2 (missing stubs added).
Alex
QEMU: check whether the ROM contents are mirrored (whether dumped size is larger than actual ROM size) ``` [EOS] loading './50D/ROM0.BIN' to 0xF0000000-0xF0FFFFFF [EOS] mirrored data; unique 0x400000 bytes repeated 0x4 times [EOS] loading './50D/ROM1.BIN' to 0xF8000000-0xF8FFFFFF [EOS] mirrored data; unique 0x800000 bytes repeated 0x2 times ``` https://www.magiclantern.fm/forum/index.php?topic=2864.msg199837#msg199837
Alex
QEMU: SRM_SetBusy/ClearBusy emulation for 5D3/6D/70D
Alex
annotate_mpu_log.py: mark unknown MPU messages with ??? (this ensures all MPU messages are displayed to the terminal, including unknown ones)
Alex
lua_task: task name must be allocated by caller (it's not copied, so we must not modify it afterwards) Easiest way: use the same name for all tasks started by Lua scripts.
1699 commits not shown.