View source
recovery
  • Contributors
    1. Loading...
Author Commit Message Date Builds
67 commits behind unified.
Alex
Recovery tool: fix model ID autodetection for EOS R / DIGIC 8 - model ID may be with MSB set (EOS R) or without it (all other models so far) - don't try to read from serial flash - use main address (0xE1FF9014), rather than a mirrored copy (0xE9FF9014)
Alex
Recovery tool: refuse to run on other CPU cores (DIGIC 7/8) Apparently required by EOS R. How did it work on M50 without this?
Alex
Recovery tool: on EOS R, print messages to UART (display not working yet)
Alex
Portable ROM dumper: card init function could not be autodetected on EOS R (let's try with hardcoded address)
Alex
disp_direct: initial support for EOS R (same backend as M50, but higher resolution)
Alex
prop_diag: use shorter descriptions on narrow displays e.g. "Camera model: Canon EOS REBEL T3 / Kiss X50" would overflow the screen, but "Camera: Canon EOS REBEL T3 / Kiss X50" would fit or, "Camera model: Canon PowerShot SX70 HS / EC805" would overflow, but "Cam: Canon PowerShot SX70 HS / EC805" would fit the narrower screen
Alex
prop_diag: initial support for the old 5D
Alex
Portable ROM dumper: 5DS/R require boot_drive = 2, just like 7D2 (tested in QEMU on 5DS bootloader)
Alex
Portable ROM dumper: copy data to RAM before saving it to file 1300D appears to lock up if we do this: https://www.magiclantern.fm/forum/index.php?topic=16534.msg210655#msg210655
Alex
Portable ROM dumper: 1300D has a different ROM layout. Assuming the same for all other DIGIC 4+ models.
Alex
Recovery tool: only disable caches when using old I/O routines on pre-DIGIC 7 (back to old behavior). DIGIC 6 method for disabling caches does not work on DIGIC 7/8. Cache disabling is not required on DIGIC 7.
Alex
Recovery tool: only save a log file if either: - FullFAT is enabled (new-style file I/O, less buggy, no real reason to skip the log) - old-style ROM dumper is enabled (we are already using file I/O) - CPUINFO is enabled (log file required) In other words, do not save a log for Hello World and similar tests (i.e. back to old behavior).
Alex
Recovery tool: print "DONE" after saving RESCUE.LOG (saving the log file may take a few seconds; user might be tempted to take the battery out when seeing "DONE") Side effect: "DONE" is no longer printed in the log file.
Alex
Recovery tool: attempt to fix screen turning off on 7D. Does it work? https://www.magiclantern.fm/forum/index.php?topic=16534.msg210546#msg210546
Alex
Recovery tool: our cache sync routine is not working well for DIGIC 8, but operating in Canon's uncacheable memory is helpful (tested on M50)
Alex
Recovery tool: sync caches after patching card init functions (old models only) To see the difference, comment out the call to sync_caches_portable from print_line. Without this, card init functions might fail.
Alex
disp_direct: removed cache workarounds. Still working?
Alex
Recovery tool: let's try to run with caches enabled (FullFAT only) Included a short cache coherency test (disabled by default).
Alex
Recovery tool: run everything with caches disabled (troubleshooting)
Alex
FullFAT config: only save the main FAT (do not write the backup one) Advantages: - it no longer "renames" the card to EOS_DEVELOP - better chances to recover the data if something goes wrong
Alex
Recovery tool: 7D2 file I/O appears to work on SD only (tested in QEMU) https://www.magiclantern.fm/forum/index.php?topic=13746.msg205531#msg205531
Alex
font_direct: fix double newline at the very end of the line
Alex
FullFAT: fine-tuned configuration - update free space (required by QEMU tests) - write-through cache (just in case) - non-greedy space allocation - no LFN (patents are still valid)
Alex
Recovery tool: sync caches before disabling them To see the issue before this change, move some printf before the cache disabling routines. It will be visible in QEMU, but not on real hardware. Tested on 5D2 and 5D3.
Alex
disp_direct: fix YUV buffer allocation (was overflowing on 5D4)
Alex
disp_direct: fix YUV411 gradient (5D2, 50D, 7D) Image content was dependent of where the compiler allocated the YUV buffer, i.e. (pointer address / 4) modulo 3...
Alex
Recovery tool: interpret backspaces before saving RESCUE.LOG (log files are plain-text now; no longer need to "cat" them to a terminal)
Alex
Recovery tool: imported scnprintf/vscnprintf from Linux kernel - fixes buffer overflow in RESCUE.LOG - see commit e8bb011bcb0b for details - todo: refactor the entire codebase to use these functions (vsnprintf branch)
Alex
Recovery tool: don't include our non-standard stdio.c just for toupper/tolower (they are available in dietlibc, too)
Alex
Recovery tool: fixed I/O initialization on some old models - card init routine uses a boolean flag that prevents it from running twice - on some models, this flag is not cleared when turning off the card - card is turned off right before launching AUTOEXEC.BIN - as a result, the init routine does not run if we call it again; need to patch that flag - a few models (5D2, 50D etc) have two card init routines (both requiring patching) - card init is now manda…
Alex
Portable ROM dumper: fine-tuned appearance; simple progress indicator
Alex
Recovery tool: reworked ROM dumper to allow both FullFAT and Canon I/O routines - sd_direct no longer used; rather, we look for Canon's sector-level I/O routines - compatible with most (if not all) models from DIGIC 2 to DIGIC 8 (!) - compatible with large cards (!) - bleeding edge, to be tested thoroughly - old method: CONFIG_BOOT_DUMPER=y - new method: CONFIG_BOOT_DUMPER=y CONFIG_BOOT_FULLFAT=y
Alex
Recovery tool: attempt to find sector-level I/O routines on all models - these are present in all EOS models from DIGIC 2 to DIGIC 8 (!) - compatible with large cards (!) - tested only in QEMU for now - enable with: CONFIG_BOOT_DUMPER=y CONFIG_BOOT_FULLFAT=y
Alex
Recovery tool: M50/SX70 dumper Boot file I/O routines no longer present. Using FullFAT and sector-level I/O routines; not using sd_direct.
Alex
Recovery tool: updated memory map; custom stack for our code
Alex
Recovery tool: only enable serial flash dumper on models known to use one (skips unnecessary warnings on other models)
Alex
prop_diag: also scan ROM1 on DIGIC7/8 models
Alex
disp_direct: nicer handling of displays with different sizes (removed hardcoded width/height constants in caller code) Not very pretty on 640-wide displays, but at least readable.
Alex
prop_diag: nicer representation for unknown property data (attempt to guess strings, otherwise perform a hex dump)
Alex
prop_diag: alternate camera model property (used in both old and new models)
Alex
prop_diag: cleaned up includes to allow string functions
Alex
prop_diag: allow empty property blocks (found in M50, SX70, 500D)
Alex
prop_diag: updated for 1300D and M50 https://www.magiclantern.fm/forum/index.php?topic=16534.msg210385#msg210385
Alex
prop_diag: fix compiling on Mac; fix some warnings https://www.magiclantern.fm/forum/index.php?topic=16534.msg210389#msg210389
Alex
Recovery tool: display support for DIGIC 8 (tested on M50 and SX70)
Cristian Campean
Recovery tool: model ID address for DIGIC 4+ (pull request #949)
Alex
Recovery tool: boot flag enabling tool for 5D Mark IV (confirmed to work!)
Alex
cpuinfo_v5: QEMU exception no longer needed (going to fix the emulator)
Alex
Makefile: removed old rule for "make install_qemu"
Alex
Recovery tool: serial flash dump support for DIGIC 5 models (tested in QEMU)
Alex
Portable startup code: fix error message with certain compilers: https://www.magiclantern.fm/forum/index.php?topic=13746.msg205494#msg205494
Alex
Recovery tool: boot flag enabler for DIGIC 7 (tested in QEMU)
Alex
cpuinfo: enabled DBGDSCR; debug register descriptions
Alex
cpuinfo: experimental debug register support for DIGIC 6 and 7 (to be tested: it might work or it might lock up)
Alex
cpuinfo: allow DIGIC 6/7 specific code (ARMv7 PMSA/VMSA) in the same binary
Alex
cpuinfo: allow both ARMv5 (DIGIC 2..5) and v7 (DIGIC 6 & 7) in the same binary
Alex
Recovery tool: allow changing printf font size at runtime (for cpuinfo and for future use)
Alex
Recovery tool: allow using CONFIG_BOOT_CPUINFO alongside with other options
Alex
Recovery tool: save a log file at the end, if the file wite stubs were used
Alex
Recovery tool: more verbose error handling
Alex
Recovery tool: fix SROM dumper initialization https://www.magiclantern.fm/forum/index.php?topic=17360.msg195513#msg195513 (tested in QEMU on 80D, 750D, 760D and 5D4)
Alex
asm.c: replaced find_func_called_after_string_ref with something more generic that can also scan backwards (find_func_called_near_string_ref)
Alex
Recovery tool: skip scanning the slow ROM when looking for ROMBASEADDR on DIGIC 7
Alex
Recovery tool: progress indicator for find_firmware_start; avoid unaligned memory access (DIGIC 7 appears to have a very slow ROM above 0xF0000000)
Alex
ROM layout: check for repeated byte as a special case, before recursivity (reduces stack usage for very large areas repeating the same byte over and over)
Alex
cpuinfo_v7: initial support for DIGIC 7 (incomplete, only what worked in QEMU from DIGIC 6)
Alex
Recovery tool: minor cleanups
Alex
Recovery tool: fine-tuned ROM layout autodetection - do not scan unused ranges that may result in lock-up - minor algorithm update
Alex
Recovery tool: moved model list at the top
Alex
prop_diag: fix scan range for DIGIC 6 (based on ROM layout autodetection results)
Alex
Recovery tool: ROM layout autodetection experiment To be tested on ALL models from DIGIC 2 to DIGIC 7 (and soon 8); might lock up on some of them.
Alex
Recovery tool: portable way to find ROMBASEADDR (tested on DIGIC 2 ... DIGIC 7 in QEMU)
Alex
disp_direct: fix display buffer size for 5D4
Alex
disp_direct: re-applied the uncacheable trick from 7dadc58 (likely the reason for blue screen on DIGIC 6) https://www.magiclantern.fm/forum/index.php?topic=17360.msg200622#msg200622
Alex
Recovery tool: allocate memory for serial flash in our BSS (to be tested; seems OK in QEMU)
Alex
disp_direct: allocate display buffers statically in our BSS Should fix conflicts with Canon code reusing the (previously hardcoded) memory on DIGIC 6/7. Should also fix booting on 1000D (only 64MB RAM).
Alex
Recovery tool: zero BSS (should fix issues with variables initialized to 0)
Alex
Recovery tool: experimental ROM dumper for DIGIC 7 (confirmed on 77D and 200D so far)
Alex
Recovery tool: initial support for DIGIC 7 - disp_direct: bootloader now runs Thumb code; display buffer register changed - ROM layout: 32MB at E0000000 + 16MB at F0000000, boot flags at 0xE1FF8000 - polyglot startup code to autodetect whether we were loaded as ARM or as Thumb (D7 loads autoexec.bin as Thumb) - ROM dumping not working yet, but display confirmed working on 77D - display gets initialized on M50 (DIGIC 8), but doesn't show an…
Alex
Recovery tool: added recent models
Alex
disp_direct: undo 7dadc58; to be tested (sombree reported it's no longer necessary)
Alex
Recovery tool: portable cache disabling for ROM dumper (to be tested)
Alex
arm-mcr.h: adapted DIGIC 6 cache routines from digic6-dumper branch (commmits cca4a72, 0f83f3b, 9ec2b64, f492292, d3b5ec9, f6e763a)
Alex
Recovery tool: enable the shareable bit on main memory for DIGIC 6 (to be tested)
Alex
Recovery tool: no need to run under uncacheable memory it doesn't help, as Canon code still allocates a cacheable buffer for file I/O https://www.magiclantern.fm/forum/index.php?topic=16534.msg170417#msg170417
Alex
prop_diag: fix warnings; do not print user name by default
Alex
Serial flash dumper: further cleanups, stub autodetection for D6 models (tested on 80D, 750D, 760D and 5D4 in QEMU)
Alex
asm.c: debug messages for QEMU
Alex
Merged qemu into recovery (for debugging with CONFIG_QEMU)
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
t3r4n
initial attempts for a serial flash dumping routine (squashed from https://bitbucket.org/t3r4n/magic-lantern/branch/sf_dump_trial )
Alex
Makefile: made printing build info optional to fix compiling from platform/portable.000
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
Merged unified into recovery
Alex
disp_direct: fix vertical scrolling (should have been included in e3a406f)
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
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
Menu: QEMU hack 90f702c no longer needed for EOS M/M2 (keeping changes to gui.h and button_codes.h)
Alex
run_canon_fw.sh: fix printing GDB command line on systems where process name is limited to 15 chars; only look at processes started by the same parent as this script (to avoid false positives) to be tested on Mac and WSL
Alex
QEMU: EOS M and M2 appear to handle the Q/SET button just like 100D https://www.magiclantern.fm/forum/index.php?topic=21765.msg198769#msg198769
Alex
QEMU: enabled MPU properties for EOS M (no more issues after LiveView emulation)
Alex
QEMU: allow any argument for PROP_LEO_LENSID (EOSM); documented PROP_LEO_LENS* Should fix emulation with ROMs saved with a different lens (apparently lens ID goes into ROM - property 0xC000004) https://www.magiclantern.fm/forum/index.php?topic=9741.msg198847#msg198847
Alex
QEMU: send PROP_LV_LENS message at initialization (5D3 1.1.3; 1.2.3 commented; the message is model-specific) Useful for LiveView emulation (display focal length, focus distance etc) Message sent in a different place (not as in the logs), as it interferes with our (broken) LiveView emulation
Alex
QEMU: experimental bitmap transparency support (doesn't match the hardware exactly, but it's better than nothing)
Alex
QEMU: experimental movie mode switch (V key) Some cameras have dedicated movie mode on the dial, others use a switch and can record video in any mode dial position.
Alex
QEMU: key mapping for Zoom In / Zoom Out (they don't do anything interesing yet); allow defining different keybindings on the same physical key (5D3/6D: only one zoom button, unlike most others) cleaned up zoom button handling on 5D3 and 6D (unpress zoom out should not be sent from keyboard, for example)
Alex
QEMU: fix copy/paste error in HPTimer emulation (no side effects)
Alex
QEMU tests: large timeouts appear to help in some tricky cases (such as mode switches, which may be slower than usual)
Alex
QEMU: updated GUI tests for LiveView. EOS M/M2: no more reason to start with the date/time dialog. Still some color palette issues; usually can be worked around by switching to other video mode and back. Minor call trace differences for 650D and 700D (missed from previous commit)
Alex
QEMU: LiveView works!!! (GUI elements only, no image) Credits go to Greg for the first PoC https://www.magiclantern.fm/forum/index.php?topic=2864.msg179867#msg179867 Tests not yet updated, just to check whether the implementation is really without side effects outside LV. Only one screenshot changed - on EOS M (that screenshot was already in LiveView). Note: 70D uses more EDMAC connections; increased number from 48 to 64.
Alex
MPU spells: identified some more properties while looking into the EOSM shutter bug https://www.magiclantern.fm/forum/index.php?topic=21728.0
Alex
QEMU: validate calls to eos_trigger_int allow missing UART RX/TX interrupt and just print a warning (affected: Eeko and EOS M5; fix not obvious)
Alex
QEMU: removed unnecessary assertion in interrupt controller (triggered very rarely under "normal" conditions, but happens very often with io_trace)
Alex
QEMU tests: run the GDB test for 10 seconds (these logs will be used for building the interrupt map)
Alex
QEMU: fix alignment of MMIO messages before starting tasks (-d io)
Alex
QEMU: fix HPTimer handling of periodic triggers (VxWorks models use a HPTimer as heartbeat, unlike DryOS) No visible differences on the UI, but heartbeat is now triggering on all VxWorks models. Minor emulation differences on 60D, 600D, 650D, 700D, 100D, EOSM, 6D (besides VxWorks models).
Alex
GDB scripts: EOSM.202 stubs for logging properties (related: af43d85)
Alex
annotate_mpu_log.py: fix handling logs with Windows newlines https://www.magiclantern.fm/forum/index.php?topic=21728.msg198330#msg198330
Alex
QEMU: delay EDMAC reads by one timer step (apparently reads are supposed to finish after writes) Change required to pass the memory benchmark on 5D3 and 6D. 700D gives the same error if writes are delayed. Minor changes to call/return trace on 60D, 600D, 1200D and 1300D (no visible effects).
Alex
QEMU tests: updated EOSM2 call/return trace for latest SFDATA.BIN from dfort (previously, SFDATA.BIN for 100D was assumed; no visible changes)
Alex
QEMU: declared silent control events for 5D3 (not used; only for annotations)
Alex
MPU spells: found PROP_LV_APERTURE and PROP_SILENT_CONTROL_STATUS
Alex
QEMU: declared internal zoom in/out events for 5D3 (they are sent by the MPU during GUI mode switches)
Alex
QEMU: fix LV button code for 5D3
Alex
annotate_mpu_log.py: more output options (to stdout, to file, auto rename)
Alex
MPU spells: script to annotate logs with mpu_send/recv events (known MPU messages moved to known_spells.py)
Alex
Makefile: fix "make install_qemu CONFIG_QEMU=y" for minimal targets
Alex
QEMU: workaround to emulate io_trace (without it, many MMIO events are missed, apparently because of QEMU's TLB cache)
Alex
NotifyBox: log messages to QEMU console
Alex
GDB scripts: replaced *(int*)(x) with MEM(x) (for consistency with other ML code, and maybe slightly easier to read)
Alex
QEMU: experimental Q button emulation for 100D (not 100% sure about it, but seems to emulate the long Q/SET press correctly)
Alex
run_ml_all_cams.sh: fix QEMU_DIR once more
Alex
run_ml_all_cams.sh: fix QEMU_DIR
Alex
Menu: hack to allow browsing ML menu on EOSM and EOSM2 (requires CONFIG_QEMU=y)
Alex
Merged makefile-updates into qemu (also updated README regarding "make install_qemu" on modules)
Alex
QEMU: moved default installation directory to qemu-eos Rationale: user is likely to have another qemu directory, unrelated to ML (such as the vanilla qemu repo) Can be changed by setting QEMU_DIR, e.g. "export QEMU_DIR=qemu" before running install.sh will install QEMU in the old path To be thoroughly tested.
Alex
QEMU: trim HTML logs to 10000 lines if higher (very slow to render; also, at these sizes, browsing/grepping plain text is way faster)
Alex
GDB scripts: logging hook for prop_deliver
Alex
GDB scripts: logging hooks for CreateStateObject useful to find all state objects created during the emulation http://www.magiclantern.fm/forum/index.php?topic=17969.msg196010#msg196010
Alex
QEMU installer: fine-tuned prompt when reinstalling
Alex
QEMU: fix Q button handling on 550D, 600D, 1100D (to be tested)
Alex
QEMU readme: table of contents; minor typos
Georg Hofstetter
QEMU readme: GPIO section update
Alex
dump_srec.py: updated to decode lens firmware updates (*.lfu) http://www.magiclantern.fm/forum/index.php?topic=20969
Alex
QEMU readme: misc updates (formatting, rephrasing); GPIO section
Alex
QEMU installer: make it clear the script expects user input when it's asking whether to compile QEMU
Daniel Fort
eject removes the disk image completely while unmount doesn't remove the disk image from /dev.
Georg Hofstetter
reworked description of the peripherals
Alex
QEMU install: fix mistakes
Alex
QEMU readme: typos, formatting
Alex
QEMU readme: note for Bitbucket not always rendering the RST (reloading the page usually works; apparently it doesn't need javascript, so what's going on?)
Alex
QEMU readme: some basic concepts related to how the DIGIC hardware works (some parts adapted from https://jsandler18.github.io/ )
Alex
QEMU readme: misc notes - tip to save SD images as qcow2 (they take less disk space) - instrumentation tools - history updates - minor formatting fixes
Alex
QEMU: use 600D MPU messages for 1300D fixes toggling drive mode, http://www.magiclantern.fm/forum/index.php?topic=17969.msg196013#msg196013
Alex
GDB scripts: hide warnings about undefined task addresses when running with patches.gdb (when running with debugmsg.gdb, full context info is printed)
Alex
GDB scripts: fix address in log_result (LR is no longer valid, as we are no longer at the beginning of a function call)
Alex
QEMU install.sh: recent git no longer accepts empty identities http://www.magiclantern.fm/forum/index.php?topic=20214.msg195892#msg195892
Alex
QEMU scripts: removed hardcoded references to ../magic-lantern and documented how the directories can be customized
Alex
QEMU readme: documented directory structure
Alex
QEMU logging: cleaned up hacks around memory logging options (logging tools may require any memory logging backends, but in the logs, only those items specifically requested by user will be printed)
Alex
run_canon_fw.sh: hide osascript messages on Mac (when trying to bring the QEMU window in foreground, but there isn't any)
Alex
QEMU install: keep the 64-bit gdb warning prompt on Mac and WSL (to be tested)
Alex
QEMU install: attempt to fix warnings about 64-bit gdb on Mac and WSL (to be tested) the script should print warnings about them, but accept them as valid
Alex
QEMU install: fix path issue after compilation
Alex
QEMU install: fix warning about lsb_release on Mac or other systems without it
Alex
QEMU install: attempt to fix warnings about 64-bit GDB on Mac (to be tested)
Alex
QEMU install: fine-tuned QEMU compilation, to be tested (error handling, display the next steps after compilation finished)
Alex
QEMU install: on WSL and Mac, try the latest 64-bit toolchain (to be tested) Linux installation still uses the 32-bit one (older version) TODO: attempt to compile a 32-bit GDB for Mac Reworded warnings, as a 32-bit GDB is now only needed for development; it's no longer mandatory for running the examples, since http://www.magiclantern.fm/forum/index.php?topic=2864.msg190823#msg190823
Alex
QEMU: simplified SFDMA mapping by removing model-specific redirection (they are fairly consistent across all models)
Alex
QEMU tests: 40D call trace still not fully deterministic (CF uses some status polling, not just DMA) re-applying workaround (only check the "basic" call trace, without function arguments and extra info)
Alex
QEMU: documented SD detect registers on recent DIGIC 5 models (non-functional)
Alex
QEMU: refactored CFDMA/UartDMA handling to remove model-specific redirections enabled UartDMA on all models (including VxWorks), but it's not working yet 70D: IFE DMA handling moved from SDDMA to CFDMA (minor, no noticeable side effects other than breaking the tests)
Alex
QEMU: fix 5D3 CF emulation (disabled by default; can be enabled from mpu_spells/5D3.h)
Alex
QEMU: documented property groups ("complex" MPU messages) including GDB logging hooks to find them
Alex
QEMU tests: relaxed shutdown checks (some false positives caused by non-deterministic emulation) (note: menu tests are executed non-determinstically, unlike the call trace, so each run is different)
Alex
QEMU: attempt to get deterministic execution on CF models when using -icount operations are slowed down to avoid timing variations default behavior (without -icount) is not affected on main firmware, the call/return trace test is now deterministic on all models! fixme: CF emulation in PIO mode is still non-deterministic
Alex
GDB scripts: generic logging hooks
Alex
QEMU readme: example of identifying the location of an assertion using gdb and -d callstack; minor updates
Alex
QEMU: updated 750D/760D GDB scripts and tests; file I/O works! (using 750D SFDATA.BIN)
Alex
Alex
QEMU: fix some MPU spells (typos caught by automated checking)
t3r4n
Added the serial flash line for 750D and 760D into model_list. See https://www.magiclantern.fm/forum/index.php?topic=17627.msg195357#msg195357
Alex
QEMU readme: minor link updates
Alex
QEMU readme: moved developer and reverse engineering notes to a new file (reason: bitbucket seems to have trouble rendering large files)
Alex
QEMU readme, GDB scripts: info on debugging symbols; more symbol-file choices in comments (depending on what you are debugging - regular ML, reboot shim or Canon firmware)
Alex
QEMU readme, GDB scripts: recommend '-ex quit' after patches.gdb, but not after debugmsg.gdb reason: when running with patches.gdb, you may not want to type "quit" after stopping the emulation however, this trick removes the ability to use interactive breakpoints in GDB (it would quit as soon as reaching one), so don't recommend it for debugmsg.gdb
Alex
QEMU readme: fix typos; minor updates
Alex
QEMU: fix serial flash DMA on DIGIC 6 (tested on 80D, 5D4 and 750D with PR #894); refactored serial flash to use its own DMA (not shared with SD)
Alex
QEMU: updated 80D test results for actual serial flash contents http://www.magiclantern.fm/forum/index.php?topic=17360.msg195519#msg195519
Alex
QEMU readme: formatting
Alex
QEMU readme: GDB scripting examples, including callstack
Alex
QEMU readme: use em-dashes instead of simple dashes
Alex
QEMU: changed I/O logging behavior - "-d io" implies "-d nochain -singlestep" (this prints correct PC values, but emulation is slower) - "-d io_quick" to get the old behavior (faster, with incorrect PC values) - "-d io_log" to print mmio_log entries for dm-spy-experiments - "-d nochain" always implies "-singlestep" (easier to enable this mode on other kind of logs that may need it) - updated README
Alex
QEMU readme: moved the "Incorrect firmware version" section to Hacking (it's no longer an issue for regular users)
Alex
QEMU readme: started to document the steps needed to emulate Canon GUI
Alex
QEMU readme: minor updates, corrections
Alex
QEMU tests: updated after changing the SD image - format screenshots slightly different at free space (before only) - call/return traces are also different (different layout on the SD image)
Alex
QEMU: updated sd.img.xz with latest portable display test (main change: fix identification of firmware version - 7889972)
Alex
GDB scripts: fix assert handling on EOS M10
Alex
QEMU: moved 7D2 patches to GDB scripts; initial GDB script for 7D2 slave
Alex
QEMU: defined FPGA memory regions for 5D2 and 50D (just to prevent some warnings; nothing changed in functionality)
Alex
QEMU tests: run all cleanups on CTRL-C (stop all background tasks, make sure QEMU is no longer running, remove temporary files...)
Alex
QEMU: enabled serial flash emulation on 5D4 (emulation on main firmware doesn't go that far, but can be tested from bootloader menu)
Alex
QEMU: refactored serial flash CS handling to reduce duplicate code (moved CS register and tested value to model_list.c)
Alex
QEMU tests: reworked menu tests (including format) - use vncexpect whenever the md5 of the next screen is known (reduces timing sensitivity and also faster overall) - no more wait hacks required for format tests - use a single vncdotool command whenever possible (faster) - removed duplicate code (function for sending a menu sequence) - fine-tuned progress indicator
Alex
MPU spells: allow changing various Canon properties that require confirmation from the MPU: ISO, shutter, aperture, EC, FEC, metering, drive, AF mode, picture style, WB, ExpSim, ALO, HTP, MLU all but WB were broken if changed from ML menu/scripts; they are working now (fixme: not included in tests) some of them were working from Canon UI before this patch (picture style, WB, ExpSim, metering and drive mode) WB was working before, but uses confirmation in logs; updated for consistency could not test on: 5D2, 40D, 50D, 550D, 650D, 700D, EOSM2 not working: EOSM (breaks previous tests => disabled)
Alex
QEMU: experimental mode dial emulation works on most models to some extent, except 40D, could not test on 550D, 650D, 70D, EOSM2
Alex
MPU spells: comment out possible mode switches not required for the GUI, but will interfere later with the mode switching feature affected models: 6D (call/return trace changed), 70D, 700D (no side effects noticed)
Alex
Merged in t3r4n/magic-lantern/qemu_installer (pull request #893) Further automation in install script to compile directly at the end.
Alex
QEMU: more MPU properties identified by brute-forcing
Alex
QEMU: formatting fixes in extract_init_spells.py / known_spells.h
Alex
QEMU: added property IDs to known MPU spells also alternate names as comments
Alex
QEMU: identified more MPU spells, corrected a few others - experimentally (playing around in menus) - brute-forcing MPU messages to identify properties - cross-checked names and IDs in startup logs and ROM strings - still, it's impossible not to find a few incorrect ones
Alex
QEMU: experiment - brute-force MPU messages to find out their meaning
Alex
GDB scripts: hooks for logging properties (prop_request_change, MPU property functions) (example for 5D3.113 and 550D.109; useful for identifying properties)
Alex
qemu-util: fix compilation in bootloader context; sample boot messages in reboot.c, e.g. printing firmware signature or RESTARTSTART address (only present in the output binary when compiling with CONFIG_QEMU=y)
Alex
GDB scripts: disable serial flash version check patch on EOS M2 not really needed (the error message seems harmless and doesn't prevent GUI emulation) but changed ML firmware signature checking and won't be needed after getting a serial flash dump from a real camera anyway
Alex
QEMU install.sh: further Ubuntu/WSL cleanups (minor)
Alex
QEMU install.sh: fine-tuned messages and date format when renaming an older installation
Alex
Merged in t3r4n/magic-lantern/qemu_install_improvement (pull request #892) Option to rename or delete existing QEMU directory during installation
Alex
QEMU install.sh: WSL fixes - checking for Ubuntu (uname -a does not report Ubuntu) - hide 32-bit toolchain options
Alex
run_canon_fw.sh: Mac fixes - use is_mounted (lsof checks are enough) - typo in osascript when trying to bring QEMU window to front
Alex
run_canon_fw.sh: fine-tuned checking of whether SD/CF image is in use - use lsof to detect whether another process opened the SD/CF image for writing - only allow multiple instances of QEMU if using -snapshot (read-only access to SD/CF image) - check all results returned by losetup (note: lsof does not show whether the image is mounted) - use alternate methods (grepping mount output) if losetup is not available - to be tested/refined on Mac and Windows 10 WSL
Alex
QEMU: RTC workaround to bring back 400D GUI (broken in 0d654a0, not covered by tests as it's very slow)
Alex
QEMU: 40D GUI working! - MPU RX register was read 8 bits at a time (other models so far used 16-bit reads) - using 50D MPU spells - button codes found with extract_button_codes.py, from existing ML port - HotPlug: external monitor, USB, Toe, erase switch - CFDMA: new channel, protocol tweaks, enabled interrupts - Powersave workaround (GUI locked up after some seconds of inactivity, similar to 1300D)
Alex
QEMU: fix USB CONNECT on 450D/1000D (incidentally, this also fixes the card format dialog on these cameras - likely UILock issue)
Alex
QEMU: 1300D GUI works! - this camera uses a different DryOS timer (totally unexpected!) - removed JPCORE patch (firmware expects this to be initialized properly) - generic MPU spells; button codes from 1100D - powersave workaround (without it, GUI would lock up after a few seconds of inactivity) - no patches required!
Alex
QEMU: cleaned up serial flash handling on models that don't use one previously, they were called on unrelated SIO/SDIO channels, with little or no side effects, other than breaking a few function call trace tests
Alex
QEMU: updated 80D tests for 1.0.2; DCIM test also works!
Alex
QEMU: 80D file I/O support from main firmware (experimental, tested with "dumpf" in the serial console)
Alex
QEMU: enable card support on generic MPU spells (experimental, some models work better than others)
Alex
GDB scripts: some experimental 80D patches, to be fixed in the emulation
Alex
GDB scripts: log state object transitions (stubs for 550D and 80D)
Alex
GDB scripts: 80D logging hooks for semaphores and message queues (disabled by default; also updated assert_log for 1.0.2)
Alex
QEMU: RomRead DMA is actually XDMAC (up to 4 channels; 80D only uses 2)
Alex
QEMU: experimental MPU support for 80D, 750D and 760D seems to work with generic spells - at least the emulation goes further also minor refactoring / comments on MPU registers for earlier models also enabled for 5D4 just to avoid a crash - emulation doesn't reach mpu_send yet, but it calls InitializeIntercom
Alex
QEMU tests: do not start if compilation fails (small nitpick that could result in false test results)
Alex
QEMU: updated tests after b75e1342711a (context info is now correctly printed when returning from msg_queue_receive, take_semaphore etc)
Alex
QEMU: generic MPU spells compatible with most EOS models (experimental)
Alex
QEMU logging: fix losing track of called functions when DryOS tasks are switched outside interrupts see the assertion error on 5D4 callstack consistency test (after 442b691) to be tested; there was a similar error was on 80D, non-deterministic (encountered when running with -d debugmsg,callstack,tail with all patches enabled)
1030 commits not shown.