Build stability: No recent builds failed.100
Build History
7 passed, 2 failed.
7 passed, 1 failed.
8 passed, 1 failed.
8 passed, 1 failed.
5 passed, 3 failed.
4 passed, 4 failed.
7 passed, 1 failed.
9 passed, 0 failed.
8 passed, 0 failed.
8 passed, 0 failed.
7 passed, 1 failed.
8 passed, 1 failed.
7 passed, 2 failed.
6 passed, 2 failed.
8 passed, 0 failed.
7 passed, 1 failed.
7 passed, 1 failed.
7 passed, 1 failed.
7 passed, 1 failed.
7 passed, 1 failed.
8 passed, 0 failed.
7 passed, 1 failed.


#556 - 70D.112 (Mar 7, 2019 12:54:22 PM)

  1. QEMU: imported scnprintf/vscnprintf from Linux kernel and fixed incorrect usage in previous code
    (adapted commit e8bb011b) — alex@thinkpad / hgweb
  2. QEMU: fixed indentation of multiline debug strings (-d debugmsg) — alex@thinkpad / hgweb
  3. QEMU: fixed Thumb code disassembly with qdisas

    This used to work in earlier versions, but target_disas changed its syntax in 2.5.0.
    Useful for debugging io_trace on DIGIC 6 (with CONFIG_QEMU=y). — alex@thinkpad / hgweb
  4. QEMU: fixed TCM size info (broken in df56963);
    simplified condition for 946_PRBS size info — alex@thinkpad / hgweb
  5. QEMU: better description for DRSR, useful for emulating io_trace on DIGIC 6:

    - enable bit (similar to PRBS on DIGIC 5 and earlier)
    - consistency check for base address and size (base address must be multiple of size - Cortex R4 TRM p.178)
    - subregion disable bits (if used)

    Useful for emulating io_trace.

    Note: QEMU already calls tlb_flush when writing to DRSR, DRBAR or DRACR. No need to apply e4fd44e on DIGIC 6. — alex@thinkpad / hgweb
  6. QEMU: print PC when taking an exception — alex@thinkpad / hgweb
  7. QEMU install: option to to keep or replace existing sd.img and cf.img, if any — alex@thinkpad / hgweb
  8. QEMU install: always use qemu-eos as username — alex@thinkpad / hgweb
  9. QEMU: updated SD/CF image with the latest portable display test
    (19f18f0 from recovery branch) — alex@thinkpad / hgweb
  10. QEMU test suite: updated for latest ROM dumper

    - now working on all EOS models
    - always update to latest version
    - allow RESCUE.LOG alongside with the ROM dumps
    - report extra files on the SD card, if any — alex@thinkpad / hgweb
  11. QEMU: make sure all models have correct ROM sizes defined

    - do not allow ROM files with duplicate data
    - most models do not have ROM0; only define where it is actually used
    - ROM0/1, where present, should be defined with the right size (too low - won't boot; too high - will fail the duplication test)
    - test results: context changed in some models without ROM0 (noise from the ROM dump was sometimes pointing to strings in ROM1) — alex@thinkpad / hgweb
  12. GDB scripts: workaround to prevent GDB from crashing on 5D

    It appears to be a bug in GDB, e.g. trying to access guest memory when setting a convenience variable.
    Reprogramming the MPU to allow memory access where GDB expects it appears to do the trick for now. — alex@thinkpad / hgweb
  13. GDB scripts: fixed CURRENT_ISR on A1100 — alex@thinkpad / hgweb
  14. QEMU: defined CURRENT_ISR on VxWorks models
    (5D, 40D, 400D, 450D, 1000D)

    The interrupt ID is only stored the stack, but the address appears to be repeatable for the first nesting level. Better than nothing. — alex@thinkpad / hgweb
  15. QEMU: fixed CURRENT_TASK for 5D (both GDB script and model_list.c) — alex@thinkpad / hgweb
  16. QEMU: updated CURRENT_ISR for EOS M5; workaround for current_task_addr — alex@thinkpad / hgweb
  17. GDB scripts: updated formatting of CURRENT_ISR on 200D, 800D, 77D, 6D2, 750D
    (non-functional) — alex@thinkpad / hgweb
  18. GDB scripts: updated CURRENT_ISR for 100D and 1300D to use the latest hypothesis
    (right before the interrupt ID, there is a counter telling whether we are running from interrupt or not, on all models so far) — alex@thinkpad / hgweb
  19. MPU spells: fix possible buffer overflow when interpreting messages — alex@thinkpad / hgweb
  20. QEMU test suite: use larger GUI timeouts for 70D, 1100D, 1200D, 1300D, EOSM and EOSM2, alongside 100D

    Fixes some intermittent failures in GUI tests, narrowed down to first button press being sent before starting Canon's GuiMainTask. — alex@thinkpad / hgweb
  21. QEMU test suite: minor fix
    (colors incorrect if QEMU was already running) — alex@thinkpad / hgweb
  22. QEMU: experimental SD/CF clock tests (some DIGIC 3/4 models; working only in bootloader context; disabled by default)

    These were used to fix/test the portable ROM dumper on old models.

    FIXME: with these changes, main firmware does not boot, so they were disabled. — alex@thinkpad / hgweb
  23. QEMU: log all unhandled MMIO events, even if they repeat
    (this "feature" interferes with debugging; was present since the first commit, in 2013) — alex@thinkpad / hgweb
  24. QEMU: fix overflow in eos_ml_helpers.c (qprintf) — alex@thinkpad / hgweb
  25. QEMU: fixed shift warning in logging.c
    (found with UBSan) — alex@thinkpad / hgweb
  26. QEMU: fixed shift warnings in disas.c
    (found with UBSan) — alex@thinkpad / hgweb
  27. QEMU: fixed buffer overflow warning in serial_flash.c
    (found with ASan; not affecting well-behaved code) — alex@thinkpad / hgweb
  28. QEMU: fixed underflow in logging.c
    (found with ASan) — alex@thinkpad / hgweb
  29. QEMU: fixed underflow in debugmsg.c
    (found with ASan) — alex@thinkpad / hgweb
  30. QEMU: fixed shift warnings in logging.c
    (found with UBSan) — alex@thinkpad / hgweb
  31. QEMU: fixed shift warnings in eos.c
    (found with UBSan) — alex@thinkpad / hgweb
  32. QEMU: workaround for compiling with -fsanitize=undefined in digic.c
    (possibly gcc bug) — alex@thinkpad / hgweb
  33. QEMU: imported

    Fixes compilation with -fsanitize=undefined — alex@thinkpad / hgweb
  34. QEMU: imported

    Fixes crash with long GDB requests on Mac - — alex@thinkpad / hgweb
  35. fix passing arguments containing spaces — alex@thinkpad / hgweb
  36. QEMU: debug message for sd_blk_write, similar to sd_blk_read
    (not compiled by default; uncomment DEBUG_SD in sd.c to enable) — alex@thinkpad / hgweb
  37. QEMU: fixed some CPU ID registers to match CPUINFO logs on DIGIC 2..5

    D5: (70D)
    D4: (1200D)
    D2/3: (mostly identical to D4, except for slightly different MPU configurations)

    - removed the XSCALE hack to emulate DTCM/ITCM properly
    - using "arm946-eos5" to model the differences between DIGIC 5 and earlier models — alex@thinkpad / hgweb
  38. QEMU: fixed some CPU ID registers to match CPUINFO logs on DIGIC 6 and 7

    - D6:,
    - D7:, — alex@thinkpad / hgweb
  39. annotate_mpu_log: allow operation with button codes from another camera model — alex@thinkpad / hgweb
  40. annotate_mpu_log: also label unknown GUI events — alex@thinkpad / hgweb
  41. QEMU: unified EOSM and EOSM2 button definitions

    Differences on previous definitions:
    - zoom events are internal; they should be enabled on both models
    - delete button should be checked in Canon menu with a MPU log,
    - no Av button — alex@thinkpad / hgweb
  42. QEMU: unified 650D and 700D button definitions — alex@thinkpad / hgweb
  43. QEMU: removed rear scrollwheel emulation from Rebel models
    (they were auto-generated) — alex@thinkpad / hgweb
    (common to all models; definitions only for now) — alex@thinkpad / hgweb
  45. QEMU: comments for Q button on 60D, 600D, 1100D, 550D
    (600D/1100D use a different button code in LiveView; emulation is not fully correct) — alex@thinkpad / hgweb
  46. QEMU: enabled old-style zoom button events for 5D3 and 6D
    (apparently still used internally, during GUI mode changes) — alex@thinkpad / hgweb
  47. QEMU: Delete button emulation for 1100D/1200D

    This button code appears to be used only in Canon menu.
    Outside menus, i.e. in photo mode and LiveView, it works as Av.

    This change allows one to toggle the low-level format option in Canon menu. — alex@thinkpad / hgweb
  48. QEMU: fix RATE and PicStyle buttons for 5D3 — alex@thinkpad / hgweb
  49. GDB scripts: log calls to named functions
    (useful for initial porting experiments; stubs for 5D3, 5D4, 80D, 200D) — alex@thinkpad / hgweb
  50. GDB scripts: misc cosmetic tweaks — alex@thinkpad / hgweb
  51. GDB scripts: silence all tbreak messages
    (with helpers to silence any other messages) — alex@thinkpad / hgweb
  52. GDB scripts: export state object definitions as Python code
    (useful to create state machine diagrams and other automated analysis) — alex@thinkpad / hgweb
  53. GDB scripts: documented every single user command in debug-logging.gdb

    From GDB prompt, run "help user-defined" to see these commands.
    Also included a test to make sure no other undocumented commands will be added in future. — alex@thinkpad / hgweb
  54. GDB scripts: xxd wrapper — alex@thinkpad / hgweb
  55. GDB scripts: ADTG/CMOS/ENGIO logging helpers
    (stubs for 60D and EOSM2) — alex@thinkpad / hgweb
  56. GDB scripts: moved whitespace placeholder to a function; fixed alignment on multi-core models — alex@thinkpad / hgweb
  57. GDB scripts: updated register_func to handle model-specific quirks
    - D4 and newer: some functions are registered indirectly, using a wrapper
    - VxWorks models, except 400D: register_func takes only 2 arguments
    - fixed stub address on 77D and 5D3 113
    - this change fixes auto-generated names (rather than naming the wrapper, it now identifies the right function) — alex@thinkpad / hgweb
  58. QEMU: CF bit in ClockEnable register — alex@thinkpad / hgweb
  59. backtrace: redirect debug messages to QEMU console, rather than discarding them — alex@thinkpad / hgweb

#493 - 70D.112 (Oct 11, 2018 2:21:39 AM)

  1. QEMU: fix handling replies of duplicate MPU messages
    (encountered in 80D, maybe others) — alex@thinkpad / hgweb
  2. MPU spells: comment out photo capture from startup logs
    (affects 450D and 1000D) — alex@thinkpad / hgweb
  3. MPU spells: documented PROP_BOARD_TEMP and renamed PROP_AF_DURING_RECORD/PROP_MOVIE_REC_AF to PROP_SHUTTER_AF_DURING_RECORD — alex@thinkpad / hgweb
  4. QEMU tests: retry screenshots if there apparently was a successful match
    followed by a (possibly transient) difference — alex@thinkpad / hgweb
  5. QEMU tests: fixed some transient screenshots
    (optional double-checking code to autodetect them) — alex@thinkpad / hgweb
  6. GDB scripts: register_cmd (for DryOS shell functions)

    Useful for naming a few more functions, but requires entering the DryOS shell to trigger them. Stubs for 5D3. — alex@thinkpad / hgweb
  7. GDB scripts: make sure all EOS models have CreateStateObject defined
    (only test models with this string present in the ROM) — alex@thinkpad / hgweb
  8. GDB scripts: make sure all models have register_func (RegisterEventProcedure) defined

    Exception: Eeko. — alex@thinkpad / hgweb
  9. QEMU: workaround for running GDB tests on 7D — alex@thinkpad / hgweb
  10. QEMU: fix 7D LED assertion — alex@thinkpad / hgweb
  11. QEMU tests: fix race condition when checking GDB scripts
    (shared file) — alex@thinkpad / hgweb
  12. GDB scripts: 800D comments, for consistency with other platforms — alex@thinkpad / hgweb
  13. GDB scripts: print "(null)" in other places where string arguments might be optional — alex@thinkpad / hgweb
  14. GDB scripts: 5D4 uses a new syntax for create_semaphore
    (name is the third argument) — alex@thinkpad / hgweb
  15. QEMU: 5D4 emulation updated for firmware 1.1.2

    - updated test results and GDB script
    - fixed serial flash read interrupt; file I/O working! — alex@thinkpad / hgweb
  16. GDB scripts: print "(null)" for empty semaphore / message queue names
    (auto-search the ROM for this string constant, as otherwise we'd need to define a malloc symbol for each camera model)

    If the "(null)" string is not found in the firmware, the GDB tests will fail with timeout. — alex@thinkpad / hgweb
  17. QEMU: disabled eos_handle_rom MMIO handlers
    (unused, only triggered incorrectly on Eeko, where they caused a crash) — alex@thinkpad / hgweb
  18. GDB scripts: fix pausing prompt on short terminals — alex@thinkpad / hgweb
  19. Removed some CONFIG_QEMU entries that are no longer needed
    - cache_hacks.h: these are now emulated reasonably well
    - 5D2: old leftover in gui.c — alex@thinkpad / hgweb

#489 - 1200D.102 (Aug 21, 2018 8:49:51 AM)

  1. Minimal targets: only compile subdirectories with a valid Makefile — alex@thinkpad / hgweb
  2. QEMU tests: FA_CaptureTestImage works on 1300D
    (prints "Image Power Failure", but the fix is not straightforward) — alex@thinkpad / hgweb
  3. Makefile: when running "make install", copy ML-SETUP.FIR only for the generic profile
    (not for minimal or other targets) — alex@thinkpad / hgweb
  4. Makefile: always check all minimal targets when running "make zip"
    (only check whether they compile without errors, just like with the installer) — alex@thinkpad / hgweb
  5. Minimal target: moved the Hello World example into its own directory and removed old platform folders — alex@thinkpad / hgweb
  6. Minimal targets: 5D3 1.1.3 hacks no longer needed — alex@thinkpad / hgweb
  7. GDB scripts: fix IDC names containing spaces — alex@thinkpad / hgweb
  8. QEMU: fix timeout in ImgPowDet emulation
    (there were nondeterministic errors in the FRSP test) — alex@thinkpad / hgweb
  9. 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@thinkpad / hgweb
  10. QEMU tests: ignore nondeterministic screenshot on 6D
    (may appear with or without free space) — alex@thinkpad / hgweb
  11. GDB scripts: moved try_expand_ram_struct at the top — alex@thinkpad / hgweb
  12. GDB scripts: minor whitespace fix — alex@thinkpad / hgweb
  13. QEMU: ensure valid RAM address before executing EDMAC transfers
    (EOS M fails here when running FA_CaptureTestImage) — alex@thinkpad / hgweb
  14. QEMU: image sensor power emulation
    (fixes FA_CaptureTestImage on 5D2; tested on all other models able to run the FRSP test) — alex@thinkpad / hgweb
  15. QEMU: output dummy data (zeros) on read EDMAC connections

    Fixes FA_CaptureTestImage on 700D and 650D. — alex@thinkpad / hgweb
  16. qemu-frsp: fix compiling for 70D — alex@thinkpad / hgweb
  17. QEMU: allow reads to EDMAC CHSW registers
    (required for FA_CaptureTestImage emulation on 6D and others) — alex@thinkpad / hgweb
  18. qemu-frsp: ensure valid exposure settings before the test
    (exposure time not too long, ISO other than Auto; required on 600D and others) — alex@thinkpad / hgweb
  19. QEMU: fix YUV vertical scaling for 1100D
    (only the FRSP test uses it for now) — alex@thinkpad / hgweb
  20. 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@thinkpad / hgweb
  21. 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@thinkpad / hgweb
  22. QEMU tests: handle models not yet in mainline
    (FRSP and HPTimer tests are using this for now) — alex@thinkpad / hgweb
  23. QEMU: updated gcc 7/8 patch for systems using virtio-9p — alex@thinkpad / hgweb
  24. QEMU: updated gcc 7.x patch to also work with gcc 8.x — alex@thinkpad / hgweb
  25. eos.c: fix gcc8 warnings — alex@thinkpad / hgweb
  26. Makefile: allow "make install*" without a FIR file
    (for minimal targets and new platforms) — alex@thinkpad / hgweb
  27. QEMU logging: attempt to identify tail calls by default
    (-d calls,notail to disable) — alex@thinkpad / hgweb
  28. QEMU tests: updated for 200D 1.0.1 — alex@thinkpad / hgweb
  29. QEMU logging: moved IDC files into model subdirectories
    (for consistency with romcpy shell files) — alex@thinkpad / hgweb
  30. QEMU logging: fix typo when using -d romcpy
    (output file path was not printed correctly) — alex@thinkpad / hgweb
  31. QEMU tests: initial support for 800D
    (fixme: call trace not deterministic, same as 77D) — alex@thinkpad / hgweb
  32. 800D: minor stub fixes in GDB script — alex@thinkpad / hgweb
  33. qemu: add 800D to model_list.c, and add 800D/debugmsg.gdb — Ian Douglas Scott <> / hgweb

#474 - EOSM.202 (Jul 3, 2018 12:08:24 AM)

  1. QEMU: experimental support for gdb-multiarch
    (latest Ubuntu no longer has gdb-arm-none-eabi...) — alex@thinkpad / hgweb
  2. QEMU install: minor fixes — alex@thinkpad / hgweb
  3. QEMU install: on some systems, building GDB requires makeinfo; skip it
    Also show the last few lines from the compilation logs if there's an error. — alex@thinkpad / hgweb
  4. QEMU install: on older Ubuntu, gcc/gdb installation without package manager may be required — alex@thinkpad / hgweb
  5. QEMU install: minor fix for 32-bit Ubuntu
    (option 3: no 64-bit gcc available) — alex@thinkpad / hgweb
  6. QEMU installer: removed option to allow old 64-bit GDB
    (hopefully no longer needed) — alex@thinkpad / hgweb
  7. QEMU installer: minor fix regarding GDB installation
    (force compiling from source if a valid 64-bit gdb is already installed) — alex@thinkpad / hgweb
  8. QEMU installer: attempt to compile gdb 8.1 from source if a 32-bit version is not available (in particular, Mac and WSL) (thanks t3r4n) — alex@thinkpad / hgweb
  9. QEMU install: there's no DISPLAY variable on Mac — alex@thinkpad / hgweb
  10. QEMU: better emulation for cache patches

    (uninstalling works, at least for dm-spy-experiments) — alex@thinkpad / hgweb
  11. QEMU: fix CPU0 labels incorrectly appearing in DIGIC 6 logs
    (only DIGIC 7 should display these) — alex@thinkpad / hgweb
  12. QEMU: moved ARM946EOS-specific functions (cache lockdown and WFI) from cpu.c to helper.c — alex@thinkpad / hgweb

#472 - 100D.101 (May 27, 2018 2:22:34 AM)

  1. Minimal targets: CONFIG_QEMU no longer hardcoded in Makefile
    (should be specified on the command line if desired) — alex@thinkpad / hgweb
  2. 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@thinkpad / hgweb
  3. QEMU: fix printing callstack from GDB scripts
    (broken in 1834cd8) — alex@thinkpad / hgweb
  4. GDB scripts: workaround for a crash occuring with 5D
    (possibly GDB bug; can't explain why it works) — alex@thinkpad / hgweb

#471 - 1200D.102 (May 4, 2018 2:09:06 AM)

  1. qemu-frsp: fix compiling on lua_fix codebase
    (1200D and soon all others) — alex@thinkpad / hgweb
  2. QEMU: updated expected test results for 1200D 1.0.2
    (no stubs changed in debugmsg.gdb) — alex@thinkpad / hgweb
  3. QEMU: removed bogus/unused BGMT_ISO — alex@thinkpad / hgweb
  4. QEMU: fix Q button code for 1200D

    - assuming the same applies to 1300D; unsure about 600D/1100D — alex@thinkpad / hgweb
  5. QEMU: fix compiling on 32-bit x86 hosts

    Caveat: -d romcpy not working on x86 (requires int128_t) — alex@thinkpad / hgweb
  6. QEMU README: initial notes on DIGIC 7 — alex@thinkpad / hgweb

#457 - 1200D.102 (Apr 30, 2018 1:41:45 PM)

  1. 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@thinkpad / hgweb
  2. QEMU logging: initial support for DIGIC 7
    (CPU0 only; exception vectors at nonzero address) — alex@thinkpad / hgweb
  3. QEMU tests: ROM dumper needs larger timeout on slower computers; undo unwanted changes from cb93334 — alex@thinkpad / hgweb
  4. QEMU tests: fix expected results for restore after format after updating SD image — alex@thinkpad / hgweb
  5. 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@thinkpad / hgweb
  6. QEMU: usleep patching no longer required on M3 — alex@thinkpad / hgweb
  7. QEMU: updated ROM dump tests to check SFDATA.BIN too
    (currently only applies to DIGIC 6) — alex@thinkpad / hgweb
  8. QEMU: updated SD image with latest display test
    (changeset 9b37638) — alex@thinkpad / hgweb
  9. 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@thinkpad / hgweb
  10. QEMU: fix logging of MMIO registers from the same range as MREQ
    (eos_handle_mreq also receives a few other registers, unknown yet) — alex@thinkpad / hgweb
  11. 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@thinkpad / hgweb
  12. QEMU: reordered model definitions in model_list.c
    (grouped by DIGIC version and similarity) — alex@thinkpad / hgweb
  13. 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@thinkpad / hgweb
  14. 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@thinkpad / hgweb
  15. QEMU logging: -d romcpy now output a shell script for extracting the copied blocks — alex@thinkpad / hgweb
  16. QEMU: memfd patch to fix compilation with glibc 2.27 — alex@thinkpad / hgweb
  17. 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@thinkpad / hgweb
  18. QEMU: updated CPU definition for DIGIC 7; renamed for older models and reverted the HIVECS property back to false — alex@thinkpad / hgweb
  19. QEMU tests: updated checksums for EOS M/M2 screenshots displaying date/time
    (fix commit 8c575ef99b7f) — alex@thinkpad / hgweb
  20. QEMU tests: updated checksum for a screenshot affected by transparency - commit 5b274e3
    (Canon quirk - it's not even a LiveView screenshot) — alex@thinkpad / hgweb
  21. allow incomplete mpu_send/recv lines
    (such as the ones from 80D logs) — alex@thinkpad / hgweb
  22. MPU spells: documented some AF-related properties — alex@thinkpad / hgweb
  23. GDB scripts: also identify and name PTP handlers — alex@thinkpad / hgweb
  24. 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@thinkpad / hgweb
  25. 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
    ``` — alex@thinkpad / hgweb
  26. QEMU: SRM_SetBusy/ClearBusy emulation for 5D3/6D/70D — alex@thinkpad / hgweb
  27. mark unknown MPU messages with ???

    (this ensures all MPU messages are displayed to the terminal, including unknown ones) — alex@thinkpad / hgweb
  28. Menu: QEMU hack 90f702c no longer needed for EOS M/M2
    (keeping changes to gui.h and button_codes.h) — alex@thinkpad / hgweb
  29. 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@thinkpad / hgweb
  30. QEMU: EOS M and M2 appear to handle the Q/SET button just like 100D — alex@thinkpad / hgweb
  31. QEMU: enabled MPU properties for EOS M (no more issues after LiveView emulation) — alex@thinkpad / hgweb
  32. 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) — alex@thinkpad / hgweb

#410 - EOSM.202 (Mar 23, 2018 6:46:29 PM)

  1. 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@thinkpad / hgweb
  2. QEMU: experimental bitmap transparency support
    (doesn't match the hardware exactly, but it's better than nothing) — alex@thinkpad / hgweb
  3. 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@thinkpad / hgweb
  4. 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@thinkpad / hgweb
  5. QEMU: fix copy/paste error in HPTimer emulation
    (no side effects) — alex@thinkpad / hgweb
  6. QEMU tests: large timeouts appear to help in some tricky cases
    (such as mode switches, which may be slower than usual) — alex@thinkpad / hgweb
  7. 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@thinkpad / hgweb
  8. QEMU: LiveView works!!! (GUI elements only, no image)
    Credits go to Greg for the first PoC

    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@thinkpad / hgweb
  9. MPU spells: identified some more properties while looking into the EOSM shutter bug — alex@thinkpad / hgweb
  10. 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@thinkpad / hgweb
  11. QEMU: removed unnecessary assertion in interrupt controller
    (triggered very rarely under "normal" conditions, but happens very often with io_trace) — alex@thinkpad / hgweb
  12. QEMU tests: run the GDB test for 10 seconds
    (these logs will be used for building the interrupt map) — alex@thinkpad / hgweb
  13. QEMU: fix alignment of MMIO messages before starting tasks (-d io) — alex@thinkpad / hgweb
  14. 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@thinkpad / hgweb
  15. GDB scripts: EOSM.202 stubs for logging properties
    (related: af43d85) — alex@thinkpad / hgweb
  16. fix handling logs with Windows newlines — alex@thinkpad / hgweb
  17. 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@thinkpad / hgweb
  18. QEMU tests: updated EOSM2 call/return trace for latest SFDATA.BIN from dfort
    (previously, SFDATA.BIN for 100D was assumed; no visible changes) — alex@thinkpad / hgweb
  19. QEMU: declared silent control events for 5D3
    (not used; only for annotations) — alex@thinkpad / hgweb
  20. MPU spells: found PROP_LV_APERTURE and PROP_SILENT_CONTROL_STATUS — alex@thinkpad / hgweb
  21. QEMU: declared internal zoom in/out events for 5D3
    (they are sent by the MPU during GUI mode switches) — alex@thinkpad / hgweb
  22. QEMU: fix LV button code for 5D3 — alex@thinkpad / hgweb
  23. more output options (to stdout, to file, auto rename) — alex@thinkpad / hgweb
  24. MPU spells: script to annotate logs with mpu_send/recv events
    (known MPU messages moved to — alex@thinkpad / hgweb
  25. Makefile: fix "make install_qemu CONFIG_QEMU=y" for minimal targets — alex@thinkpad / hgweb

#406 - 70D.112 (Feb 17, 2018 2:59:23 AM)

  1. QEMU: workaround to emulate io_trace
    (without it, many MMIO events are missed, apparently because of QEMU's TLB cache) — alex@thinkpad / hgweb
  2. NotifyBox: log messages to QEMU console — alex@thinkpad / hgweb
  3. GDB scripts: replaced *(int*)(x) with MEM(x)
    (for consistency with other ML code, and maybe slightly easier to read) — alex@thinkpad / hgweb
  4. QEMU: experimental Q button emulation for 100D
    (not 100% sure about it, but seems to emulate the long Q/SET press correctly) — alex@thinkpad / hgweb

#393 - 1100D.105 (Feb 3, 2018 9:56:56 PM)

  1. fix QEMU_DIR once more — alex@thinkpad / hgweb
  2. fix QEMU_DIR — alex@thinkpad / hgweb
  3. Menu: hack to allow browsing ML menu on EOSM and EOSM2
    (requires CONFIG_QEMU=y) — alex@thinkpad / hgweb
  4. Merged makefile-updates into qemu
    (also updated README regarding "make install_qemu" on modules) — alex@thinkpad / hgweb
  5. 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 will install QEMU in the old path
    To be thoroughly tested. — alex@thinkpad / hgweb
  6. Makefile: moved default QEMU directory to qemu-eos — alex@thinkpad / hgweb
  7. 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@thinkpad / hgweb
  8. Makefile: also updated QEMU_INSTALLED_DBI_DIR to use QEMU_PATH — alex@thinkpad / hgweb
  9. Makefile: fix copy/paste error — alex@thinkpad / hgweb
  10. Makefile: fix cleaning up after "make zip"; removed warning — alex@thinkpad / hgweb
  11. Makefile: allow changing QEMU installation directory from Makefile.user and/or the environment
    (QEMU_DIR) — alex@thinkpad / hgweb
  12. Makefile: zip and install_qemu targets for modules — alex@thinkpad / hgweb
  13. Makefile: always clean after running install_check — alex@thinkpad / hgweb
  14. Makefile: always rebuild version.o — alex@thinkpad / hgweb
  15. Makefile: prevent install_check from running in parallel with building regular ML
    (conflicts while compiling from the same sources - ) — alex@thinkpad / hgweb

#389 - 600D.102 (Jan 30, 2018 12:28:59 AM)

  1. GDB scripts: logging hook for prop_deliver — alex@thinkpad / hgweb
  2. GDB scripts: logging hooks for CreateStateObject
    useful to find all state objects created during the emulation — alex@thinkpad / hgweb
  3. QEMU installer: fine-tuned prompt when reinstalling — alex@thinkpad / hgweb
  4. QEMU: fix Q button handling on 550D, 600D, 1100D (to be tested) — alex@thinkpad / hgweb
  5. QEMU readme: table of contents; minor typos — alex@thinkpad / hgweb
  6. QEMU readme: GPIO section update — g3gg0 / hgweb

#388 - 100D.101 (Jan 23, 2018 2:22:34 AM)

  1. updated to decode lens firmware updates (*.lfu) — alex@thinkpad / hgweb
  2. QEMU readme: misc updates (formatting, rephrasing); GPIO section — alex@thinkpad / hgweb
  3. QEMU installer: make it clear the script expects user input when it's asking whether to compile QEMU — alex@thinkpad / hgweb
  4. eject removes the disk image completely while unmount doesn't remove the disk image from /dev. — Daniel Fort <> / hgweb
  5. reworked description of the peripherals — g3gg0 <> / hgweb
  6. QEMU install: fix mistakes — alex@thinkpad / hgweb
  7. QEMU readme: typos, formatting — alex@thinkpad / hgweb
  8. 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@thinkpad / hgweb
  9. QEMU readme: some basic concepts related to how the DIGIC hardware works
    (some parts adapted from ) — alex@thinkpad / hgweb
  10. QEMU readme: misc notes
    - tip to save SD images as qcow2 (they take less disk space)
    - instrumentation tools
    - history updates
    - minor formatting fixes — alex@thinkpad / hgweb
  11. QEMU: use 600D MPU messages for 1300D
    fixes toggling drive mode, — alex@thinkpad / hgweb
  12. GDB scripts: hide warnings about undefined task addresses when running with patches.gdb
    (when running with debugmsg.gdb, full context info is printed) — alex@thinkpad / hgweb
  13. 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@thinkpad / hgweb
  14. QEMU recent git no longer accepts empty identities — alex@thinkpad / hgweb
  15. QEMU scripts: removed hardcoded references to ../magic-lantern
    and documented how the directories can be customized — alex@thinkpad / hgweb
  16. QEMU readme: documented directory structure — alex@thinkpad / hgweb

#387 - 100D.101 (Jan 21, 2018 2:22:37 AM)

  1. 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@thinkpad / hgweb
  2. hide osascript messages on Mac
    (when trying to bring the QEMU window in foreground, but there isn't any) — alex@thinkpad / hgweb
  3. QEMU install: keep the 64-bit gdb warning prompt on Mac and WSL (to be tested) — alex@thinkpad / hgweb
  4. 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@thinkpad / hgweb
  5. QEMU install: fix path issue after compilation — alex@thinkpad / hgweb
  6. QEMU install: fix warning about lsb_release on Mac or other systems without it — alex@thinkpad / hgweb
  7. QEMU install: attempt to fix warnings about 64-bit GDB on Mac (to be tested) — alex@thinkpad / hgweb
  8. QEMU install: fine-tuned QEMU compilation, to be tested
    (error handling, display the next steps after compilation finished) — alex@thinkpad / hgweb
  9. 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 — alex@thinkpad / hgweb
  10. QEMU: simplified SFDMA mapping by removing model-specific redirection
    (they are fairly consistent across all models) — alex@thinkpad / hgweb
  11. 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@thinkpad / hgweb
  12. QEMU: documented SD detect registers on recent DIGIC 5 models
    (non-functional) — alex@thinkpad / hgweb
  13. 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@thinkpad / hgweb
  14. QEMU: fix 5D3 CF emulation
    (disabled by default; can be enabled from mpu_spells/5D3.h) — alex@thinkpad / hgweb
  15. QEMU: documented property groups ("complex" MPU messages)
    including GDB logging hooks to find them — alex@thinkpad / hgweb
  16. 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@thinkpad / hgweb
  17. 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@thinkpad / hgweb
  18. GDB scripts: generic logging hooks — alex@thinkpad / hgweb
  19. QEMU readme: example of identifying the location of an assertion using gdb and -d callstack; minor updates — alex@thinkpad / hgweb
  20. QEMU: updated 750D/760D GDB scripts and tests; file I/O works!
    (using 750D SFDATA.BIN) — alex@thinkpad / hgweb
  21. Merged in t3r4n/magic-lantern/qemu (pull request #894) — alex@thinkpad / hgweb
  22. QEMU: fix some MPU spells
    (typos caught by automated checking) — alex@thinkpad / hgweb
  23. Added the serial flash line for 750D and 760D into model_list. See — t3ra4n <> / hgweb
  24. QEMU readme: minor link updates — alex@thinkpad / hgweb
  25. QEMU readme: moved developer and reverse engineering notes to a new file
    (reason: bitbucket seems to have trouble rendering large files) — alex@thinkpad / hgweb
  26. 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@thinkpad / hgweb
  27. 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@thinkpad / hgweb
  28. QEMU readme: fix typos; minor updates — alex@thinkpad / hgweb
  29. 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@thinkpad / hgweb
  30. QEMU: updated 80D test results for actual serial flash contents — alex@thinkpad / hgweb
  31. QEMU readme: formatting — alex@thinkpad / hgweb
  32. QEMU readme: GDB scripting examples, including callstack — alex@thinkpad / hgweb
  33. QEMU readme: use em-dashes instead of simple dashes — alex@thinkpad / hgweb
  34. 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@thinkpad / hgweb
  35. QEMU readme: moved the "Incorrect firmware version" section to Hacking
    (it's no longer an issue for regular users) — alex@thinkpad / hgweb
  36. QEMU readme: started to document the steps needed to emulate Canon GUI — alex@thinkpad / hgweb
  37. QEMU readme: minor updates, corrections — alex@thinkpad / hgweb
  38. 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@thinkpad / hgweb
  39. QEMU: updated sd.img.xz with latest portable display test
    (main change: fix identification of firmware version - 7889972) — alex@thinkpad / hgweb
  40. GDB scripts: fix assert handling on EOS M10 — alex@thinkpad / hgweb
  41. QEMU: moved 7D2 patches to GDB scripts;
    initial GDB script for 7D2 slave — alex@thinkpad / hgweb
  42. QEMU: defined FPGA memory regions for 5D2 and 50D
    (just to prevent some warnings; nothing changed in functionality) — alex@thinkpad / hgweb
  43. QEMU tests: run all cleanups on CTRL-C
    (stop all background tasks, make sure QEMU is no longer running, remove temporary files...) — alex@thinkpad / hgweb
  44. QEMU: enabled serial flash emulation on 5D4
    (emulation on main firmware doesn't go that far, but can be tested from bootloader menu) — alex@thinkpad / hgweb
  45. QEMU: refactored serial flash CS handling to reduce duplicate code
    (moved CS register and tested value to model_list.c) — alex@thinkpad / hgweb
  46. 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@thinkpad / hgweb
  47. 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@thinkpad / hgweb
  48. QEMU: experimental mode dial emulation
    works on most models to some extent, except 40D, could not test on 550D, 650D, 70D, EOSM2 — alex@thinkpad / hgweb
  49. 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@thinkpad / hgweb
  50. Merged in t3r4n/magic-lantern/qemu_installer (pull request #893)

    Further automation in install script to compile directly at the end. — Alex <> / hgweb
  51. QEMU: more MPU properties identified by brute-forcing — alex@thinkpad / hgweb
  52. QEMU: formatting fixes in / known_spells.h — alex@thinkpad / hgweb
  53. QEMU: added property IDs to known MPU spells
    also alternate names as comments — alex@thinkpad / hgweb
  54. 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@thinkpad / hgweb
  55. QEMU: experiment - brute-force MPU messages to find out their meaning — alex@thinkpad / hgweb
  56. GDB scripts: hooks for logging properties (prop_request_change, MPU property functions)
    (example for 5D3.113 and 550D.109; useful for identifying properties) — alex@thinkpad / hgweb
  57. 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@thinkpad / hgweb
  58. 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@thinkpad / hgweb
  59. QEMU further Ubuntu/WSL cleanups (minor) — alex@thinkpad / hgweb
  60. QEMU fine-tuned messages and date format when renaming an older installation — alex@thinkpad / hgweb
  61. Merged in t3r4n/magic-lantern/qemu_install_improvement (pull request #892)

    Option to rename or delete existing QEMU directory during installation — Alex <> / hgweb
  62. QEMU WSL fixes
    - checking for Ubuntu (uname -a does not report Ubuntu)
    - hide 32-bit toolchain options — alex@thinkpad / hgweb
  63. Mac fixes
    - use is_mounted (lsof checks are enough)
    - typo in osascript when trying to bring QEMU window to front — alex@thinkpad / hgweb
  64. 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@thinkpad / hgweb
  65. QEMU: RTC workaround to bring back 400D GUI
    (broken in 0d654a0, not covered by tests as it's very slow) — alex@thinkpad / hgweb
  66. 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, 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@thinkpad / hgweb
  67. QEMU: fix USB CONNECT on 450D/1000D
    (incidentally, this also fixes the card format dialog on these cameras - likely UILock issue) — alex@thinkpad / hgweb
  68. 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@thinkpad / hgweb
  69. 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@thinkpad / hgweb
  70. QEMU: updated 80D tests for 1.0.2; DCIM test also works! — alex@thinkpad / hgweb
  71. QEMU: 80D file I/O support from main firmware
    (experimental, tested with "dumpf" in the serial console) — alex@thinkpad / hgweb
  72. QEMU: enable card support on generic MPU spells
    (experimental, some models work better than others) — alex@thinkpad / hgweb
  73. GDB scripts: some experimental 80D patches, to be fixed in the emulation — alex@thinkpad / hgweb
  74. GDB scripts: log state object transitions
    (stubs for 550D and 80D) — alex@thinkpad / hgweb
  75. GDB scripts: 80D logging hooks for semaphores and message queues
    (disabled by default; also updated assert_log for 1.0.2) — alex@thinkpad / hgweb
  76. QEMU: RomRead DMA is actually XDMAC
    (up to 4 channels; 80D only uses 2) — alex@thinkpad / hgweb
  77. 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@thinkpad / hgweb
  78. QEMU tests: do not start if compilation fails
    (small nitpick that could result in false test results) — alex@thinkpad / hgweb
  79. QEMU: updated tests after b75e1342711a
    (context info is now correctly printed when returning from msg_queue_receive, take_semaphore etc) — alex@thinkpad / hgweb
  80. QEMU: generic MPU spells compatible with most EOS models (experimental) — alex@thinkpad / hgweb
  81. 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) — alex@thinkpad / hgweb
  82. QEMU: MPU status doesn't seem to matter much; simplified to prepare for DIGIC 6 compatibility
    todo: cross-check with actual hardware — alex@thinkpad / hgweb
  83. QEMU: shared memory initialization for DIGIC 6 (MEMDIV messages)
    to try: SHM_SHOW_INFO / SHM_SHOW_DIST_INFO on serial console (only 80D, 750D and 760D reach this far)
    ( sleep 3; echo "akashimorino";
      sleep 1; echo "SHM_SHOW_INFO";
      sleep 1; echo "SHM_SHOW_DIST_INFO";
    ) | ./ 80D -serial stdio — alex@thinkpad / hgweb
  84. QEMU: refactored serial flash SIO handler with io_log — alex@thinkpad / hgweb
  85. QEMU: refactored serial flash connections to avoid hardcoding camera model names
    fixme: D3 models and 1300D still hardwired to serial flash handlers to pass the tests — alex@thinkpad / hgweb
  86. QEMU: experimental serial flash support for 80D
    using SFDATA.BIN from 70D, patched at 0x10004 from 09 8B C1 20 to 00 00 01 20
    meaning: size of 70D's property block at 0x10000 is 0x12BC98 (data is shifted by 4 bytes)
    but 80D expects a maximum size of 0x12000 in FE47BF40 ("Liar Valid Packages!!" if the size check fails)
    so we trim the property block at the expected size of 0x12000
    this will lose a few properties, but at least the emulation goes further (no SF dumper for D6 yet)
    other 8MB SFDATA.BIN patched in the same way should also work (700D, 650D, EOSM, 6D),
    but their data block at 0x10000 is larger, so more properties will be probably lost (not tested) — alex@thinkpad / hgweb
  87. QEMU: RomRead DMA for DIGIC 6, used for initializing property blocks
    (very similar to regular DMA, slightly different register offsets) — alex@thinkpad / hgweb
  88. QEMU: slow down UART input to work around race conditions
    (not exactly clean, but at least DryShell tests are now passing on all models) — alex@thinkpad / hgweb
  89. QEMU: fixed UART on DIGIC 6 (DryShell works!)
    fixme: tests are failing, but typing on the UI works fine
    note: DIGIC 4/5 emulation changed a bit (0xC0270000 was misinterpreted before) — alex@thinkpad / hgweb
  90. QEMU: found out why DIGIC 6 models were getting stuck at startup!
    The firmware was reading the memory layout from CP15 registers;
    most of them were emulated well in QEMU, except ATCM and BTCM, which were implemented as NOP.
    They are still NOP in current QEMU git.

    Patching the memory regions loop is no longer required!
    (keeping empty 80D patch for future use) — alex@thinkpad / hgweb

#373 - 5D2.212 (Dec 7, 2017 2:44:04 AM)

  1. MPU spells: some names could not be identified (fixed) — alex@thinkpad / hgweb
  2. QEMU tests: call rather than duplicating its work
    (fixes some tests failing if mtools is configured to use lowercase by default) — alex@thinkpad / hgweb
  3. on Mac, bring QEMU window to foreground
    (by default, the window is opened behind the terminal, so one may not even notice it) — alex@thinkpad / hgweb
  4. print camera name in QEMU window title — alex@thinkpad / hgweb
  5. only clear the terminal if running in interactive mode — alex@thinkpad / hgweb
  6. QEMU logging: always log unmapped memory regions — alex@thinkpad / hgweb
  7. GDB scripts: fix text alignment with "native" logging options (minor) — alex@thinkpad / hgweb
  8. QEMU fix null byte warning when parsing model list
    (bash 4.4 and newer? ) — alex@thinkpad / hgweb
  9. QEMU install: print fewer help details after installation; link to the online documentation — alex@thinkpad / hgweb
  10. QEMU readme: formatting, typos — alex@thinkpad / hgweb

#372 - 1100D.105 (Dec 6, 2017 10:46:42 PM)

  1. QEMU readme: more info regarding custom SD/CF images — alex@thinkpad / hgweb
  2. QEMU readme: more ways to install ML to the virtual SD/CF images — alex@thinkpad / hgweb
  3. QEMU readme: note about "make install_qemu" not available in all branches — alex@thinkpad / hgweb
  4. QEMU readme: note about models using a serial flash — alex@thinkpad / hgweb
  5. QEMU README: minor updates to 050a3cc — alex@thinkpad / hgweb
  6. Merged unified into qemu — alex@thinkpad / hgweb
  7. Merged in makefile-updates (pull request #873)

    Makefile updates to use any valid ARM toolchain — alex@thinkpad / hgweb
  8. Makefile: fix 7D build_fir — alex@thinkpad / hgweb
  9. Makefile: fix building Lua with gcc 4.7.3 — alex@thinkpad / hgweb
  10. Makefile: only attempt to build/install/check ML-SETUP.FIR if there is a valid installer directory
    (some platforms may not have have one - 7D_MASTER, new ports) — alex@thinkpad / hgweb
  11. Card LED: always use CARD_LED_ADDRESS, LEDON and LEDOFF
    (backed out 5bfab05 to fix installer on 7D - 0x800c00 not mandatory?) — alex@thinkpad / hgweb
  12. Makefile: moved 7D-specific tweaks (FIR etc) into main target (7D.203)
    for consistency with other platforms, including 7D2
    to build the regular FIR: make build_fir
    to build the installer FIR: make ML-SETUP.FIR -B — alex@thinkpad / hgweb
  13. Makefile: FIR building updates
    - always install ML-SETUP.FIR (zip, install, install_qemu)
    - build_fir for regular ML (not installer) now gives AUTOEXEC.FIR
    - to recompile ML-SETUP.FIR: "make ML-SETUP.FIR -B" from platform directory
    - "make zip" will also compile the installer from source, without replacing the precompiled ML-SETUP.FIR
      (just to make sure the source code changes do not interfere with building the installer) — alex@thinkpad / hgweb
  14. Makefile: fix building xor_chk from its own directory — alex@thinkpad / hgweb
  15. Makefile: more .NOTPARALLEL fixes — alex@thinkpad / hgweb
  16. Makefile: fix 7D FIR path
    (just for consistency) — alex@thinkpad / hgweb
  17. Makefile: use .NOTPARALLEL in top-level Makefiles, rather than double-colon rules
    ML platforms/modules are built sequentially, but within each platform/module, parallel build is used
    to be tested on Mac with -j8
    (on Make 3.81, double-colon are executed in parallel, while in 4.2.1 they are sequential) — alex@thinkpad / hgweb
  18. Makefile: fix README.rst generation with POSIX shells
    to reproduce: cd modules/filepref; make clean; rm -f README.rst; make SHELL=dash — alex@thinkpad / hgweb
  19. Makefile: serialize "make install", fix some related dependencies
    parallel copying could lock up WIFI_SD cards
    to reproduce: "WIFI_SD=y make install ML_MODULES=" from platform/CAM directory — alex@thinkpad / hgweb
  20. Makefile: monitor wifi connection when using WIFI_SD=y
    (experimental, helps troubleshooting connectivity issues) — alex@thinkpad / hgweb
  21. Makefile: minor refactors for WIFI_SD (coding style)
    also fixed a typo — alex@thinkpad / hgweb
  22. Modules: better error handling for missing rst2html — alex@thinkpad / hgweb
  23. Makefile: speed optimizations
    - helper to evaluate only once, only if used
    - modules hgstamp: only evaluate if used
    - CF_CARD, VERSION: only evaluate once if used
    - PWD is special? renamed to avoid unneeded shell calls
    Profiling tips:
    - perf record make; perf report --sort comm
    - make SHELL="sh -x"
    - make clean SHELL="sh -x" |& grep "^+" | sort | uniq -c — alex@thinkpad / hgweb
  24. Makefile: enable parallel compilation for modules, but compile them sequentially
    huge modules like Lua will compile much faster
    compiling everything in parallel is not 100% safe (some dependency checks may fail) — alex@thinkpad / hgweb
  25. Makefile: do not print toolchain info on recursive calls — alex@thinkpad / hgweb
  26. Makefile: reworked global targets
    install: doesn't make sense, as we no longer have a "one size fits all" build capable of running on all models
             (alternative: 5D3.113_install, 60D_install etc)
    zip: build zip for each camera model, sequentially (parallel build still used within each zip)
    all: similar to zip (build camera models sequentially, but use parallel compilation within each platform)
    clean, check: these can run in parallel (no restrictions) — alex@thinkpad / hgweb
  27. Makefile: fix module dependency checking on "make zip"
    by default, a module succeeds if it can be loaded on any camera model, from those compiled (doesn't matter which one)
    when using "make zip", we only want to include the modules compatible with current camera model, without considering other models
    (fixme: not the cleanest way to implement this) — alex@thinkpad / hgweb
  28. Makefile: fix module_strings dependency rule
    (previously, there was an error with make -j) — alex@thinkpad / hgweb
  29. Makefile: dropped ML_MODULES_STATIC (unused) and renamed ML_MODULES_DYNAMIC to ML_MODULES
    note: if you have customized the module list in Makefile.modules.user, just rename ML_MODULES_DYNAMIC to ML_MODULES
    to compile without modules: make 5D3 ML_MODULES= — alex@thinkpad / hgweb
  30. Makefile: fix "make clean" from modules directory with stale modules from other branches — alex@thinkpad / hgweb
  31. Makefile: fix running from other directory
    e.g. from qemu: make -C ../magic-lantern/ 500D_install_qemu — alex@thinkpad / hgweb
  32. Makefile: model-specific install targets for the root directory
    examples: make 500D_install; make 500D_install_qemu — alex@thinkpad / hgweb
  33. 7D: fix compiling with FEATURE_VIDEO_HACKS — alex@thinkpad / hgweb
  34. Makefile: fix building 7D_MASTER — alex@thinkpad / hgweb
  35. disable ASSERT for 7D_MASTER — g3gg0 / hgweb
  36. Feature matrix: updated links — alex@thinkpad / hgweb
  37. Merged in daniel_fort/magic-lantern/unified-6D-sf_dump (pull request #876)

    Add 6D.116 to sf_dump module — Alex <> / hgweb
  38. Added 6D.116 to sf_dump module. — Daniel Fort <> / hgweb
  39. Merged in daniel_fort/magic-lantern/unified-600D-audio_meters_fix (pull request #877)

    600D audio meters fix — Alex <> / hgweb
  40. 600D also needs Audio IC turned on at boot. — Daniel Fort <> / hgweb

#371 - 5D3.113 (Dec 2, 2017 9:52:50 PM)

  1. Merged makefile-updates into qemu — alex@thinkpad / hgweb
  2. Makefile: minor cleanups from 0b9b550 — alex@thinkpad / hgweb
  3. Makefile: backout 0b9b550
    ?= not needed when overriding from command-line, e.g. make CONFIG_QEMU=y — alex@thinkpad / hgweb
  4. Makefile: always define CONFIG_$(MODEL)_$(FW_VERSION)
    e.g. CONFIG_5D3_113, CONIFG_7D_203 and so on — alex@thinkpad / hgweb
  5. Makefile: fix for GNU make 3.8.1
    (thanks g3gg0) — alex@thinkpad / hgweb
  6. Makefile: fix newline issue with WIFI_SD=y — alex@thinkpad / hgweb

#370 - 70D.112 (Nov 11, 2017 4:36:52 PM)

  1. Merged makefile-updates into qemu — alex@thinkpad / hgweb
  2. Makefile: fix Mac issue (undefine not supported) — alex@thinkpad / hgweb
  3. fixed late evaluation issue in rule builder — g3gg0 / hgweb
  4. fix indentation — alex@thinkpad / hgweb
  5. Mac compatibility fixes — alex@thinkpad / hgweb
  6. Makefile: rules for "make install_qemu"
    (to use them, qemu has to be installed first) — alex@thinkpad / hgweb

#366 - 6D.116 (Nov 11, 2017 1:56:10 AM)

  1. QEMU: 5D3 1.2.3 GUI works!
    fixme: not covered by tests — alex@thinkpad / hgweb
  2. QEMU: refactored RTC CS
    each model now uses its own GPIO, rather than enabling all possible registers on all models
    70D call trace test: minor change to 0xC02201F8, no impact on functionality — alex@thinkpad / hgweb
  3. QEMU: 70D GUI works!
    - GDB patch required (SIO locking up DisplayMgr task, probably touch screen not responding)
    - RTC (similar to 6D, but on different SIO channel)
    - updated tests (menu, format, call trace)
    - minor change to 100D call trace test (0xC022005C = 450D RTC CS; no impact on functionality) — alex@thinkpad / hgweb

#365 - 650D.104 (Nov 11, 2017 12:54:14 AM)

  1. QEMU: 6D GUI works!
    - MPU log and serial flash from Audionut,
    - RTC (a bit hackish, to be refactored)
    - GPIOs for HDMI and WriteProtect
    - tests (menu, format, call trace)
    - patched MPU spells to avoid an intermittent issue (race condition when setting picture quality?) — alex@thinkpad / hgweb

#364 - 700D.115 (Nov 11, 2017 12:31:35 AM)

  1. QEMU: fix typo in MPU spells script (broken in a42e55a)
    "Complete WaitID = 0x80020000" should have been commented out
    this disables LiveView "emulation" in 700D/650D and fixes ML menu for nightly tests
    todo: add a test for this (existing tests did not catch this issue) — alex@thinkpad / hgweb
  2. QEMU tests: reordered (important, breaks often and/or very fast == runs earlier) — alex@thinkpad / hgweb
  3. QEMU tests: run in parallel when it's straightforward to do so (experimental)
    not parallelized: tests requiring custom builds or checking card contents afterwards — alex@thinkpad / hgweb
  4. QEMU tests: prepare for parallel execution (3)
    - stop each QEMU instance from the monitor socket
    - two methods: shutdown (clean DryOS shutdown, for GUI tests) and quit (clean QEMU shutdown without turning off the guest OS, for all other tests)
    - check for any stale qemu-system-arm / arm-none-eabi-gdb only after each set of tests — alex@thinkpad / hgweb
  5. QEMU tests: prepare for parallel execution (2)
    - unique QEMU_JOB_ID for each job
    - unique GDB port and VNC display, derived from QEMU_JOB_ID — alex@thinkpad / hgweb
  6. QEMU tests: prepare for parallel execution (1)
    - allow overriding GDB port for each instance (replaced '-s -S' with '-S -gdb tcp::$GDB_PORT'; gdb receives '-ex "set \$TCP_PORT=$GDB_PORT"')
    - allow overriding VNC display for each instance (replaced ':12345' with '$VNC_DISP')
    - indentation of qemu/gdb commands — alex@thinkpad / hgweb
  7. QEMU scripts: rough backend support for parallel execution
    - requires manual resource allocation
    - QEMU_JOB_ID used as prefix for qemu.monitor (each instance would get its own monitor socket)
    - GDB port can be overriden and derived from QEMU_JOB_ID (see README)
    - VNC port can be handled in the same way
    - README updated — alex@thinkpad / hgweb
  8. QEMU tests/readme: recent netcat requires -N — alex@thinkpad / hgweb
  9. QEMU tests: one more race condition fix — alex@thinkpad / hgweb
  10. QEMU tests: speed optimizations
    - only restore SD/CF images if they were actually changed
    - do not wait for gdb if it's not running
    - overhead with no tests running: from ~30 seconds to ~10 seconds — alex@thinkpad / hgweb
  11. QEMU tests: more race condition fixes — alex@thinkpad / hgweb
  12. QEMU tests: attempt to fix some race conditions — alex@thinkpad / hgweb
  13. QEMU tests: minor fixes after refactoring — alex@thinkpad / hgweb
  14. QEMU tests: use -snapshot to prevent changing SD and CF images
    (exceptions: tests for ROM dumper and DCIM, where we check card contents to validate the test result) — alex@thinkpad / hgweb
  15. QEMU tests: allow selecting only specific tests to run (lowercase arguments)
    Can be mixed freely with camera models (uppercase arguments)
    Default (no arguments): run all tests — alex@thinkpad / hgweb
  16. QEMU tests: refactored each test as a bash function
    - top-level continue -> return
    - moved common preparations to run_test
    - each test function uses globals $CAM and $TEST (camera model and test output basename)
    - test outputs named $TEST.whatever or $
    - generic cleanup after each test
    - top-level for loops kept; the loop body calls run_test — alex@thinkpad / hgweb
  17. QEMU: make sure mtools prints uppercase filenames by default
    (our tests assume this behavior, but some systems have different defaults) — alex@thinkpad / hgweb
  18. Merged makefile-updates into qemu — alex@thinkpad / hgweb
  19. Makefile: with WIFI_SD=y, ping the card until it comes online (useful for router connections) — alex@thinkpad / hgweb
  20. Makefile: portable way to get number of processors — alex@thinkpad / hgweb
  21. further makefile cleanup, added make check to show which models were built and their memory usage — g3gg0 / hgweb
  22. fix 'all' target for models — g3gg0 / hgweb
  23. removed explicit make executable definition. allows to run e.g. 'remake' to debug make rules — g3gg0 / hgweb
  24. reworked model make rules to support different firmware versions for a model [to be thoroughly tested] — g3gg0 / hgweb
  25. disable ASSERT for 7D_MASTER — g3gg0 / hgweb
  26. Makefile: also print CONFIG overrides from command-line
    (alongside the ones from Makefile.user) — alex@thinkpad / hgweb
  27. Makefile: print tips for using make -j
    (how to set it by default in Makefiles?) — alex@thinkpad / hgweb
  28. Makefile: silence warning about CONFIG_SITE
    (some recent Linux distros use it) — alex@thinkpad / hgweb
  29. Makefile: portable way to get libgcc.a's path — alex@thinkpad / hgweb
  30. Makefile: removed old dropbox target — alex@thinkpad / hgweb
  31. Makefile: print build info after "make zip"; skip EXIDX line — alex@thinkpad / hgweb
  32. Makefile: fix CONFIG_CCACHE — alex@thinkpad / hgweb
  33. Makefile: use "gio mount" rather than "gvfs-mount"
    (they are interchangeable; older systems may require gvfs-mount, newer systems will print warnings) — alex@thinkpad / hgweb
  34. Makefile: if no valid ARM GCC is found in PATH, try to find one in the home directory — alex@thinkpad / hgweb
  35. Makefile: fix compiling tcc — alex@thinkpad / hgweb
  36. Makefile: moved toolchain setup to Makefile.setup
    (this allows toolchain to be overridden from Makefile.user) — alex@thinkpad / hgweb
  37. Makefile: fixes to allow compiling ML with Linaro arm-eabi-gcc; updated toolchain recommendations — alex@thinkpad / hgweb
  38. Makefile: updated toolchain recommendation; minor edits — alex@thinkpad / hgweb
  39. Makefile: attempt to use any arm-none-eabi-gcc from PATH, if already installed (to be tested)
    By default, it will attempt to use ~/gcc-arm-none-eabi-5_4-2016q3 if installed. — alex@thinkpad / hgweb
  40. Makefile: use gcc 5.4.1 by default (current version from ) — alex@thinkpad / hgweb
  41. Merged in daniel_fort/magic-lantern/unified_650D_audio_meters_fix (pull request #870)

    650D audio meters fix — Alex <> / hgweb
  42. 650D has the same audio meters issue as the 700D -- needs the same fix. — Daniel Fort <> / hgweb
  43. Merged in daniel_fort/magic-lantern/unified_700D_audio_meters_fix_1 (pull request #866)

    Audio meters fix for 700D

    Approved-by: Daniel Fort <> — Alex <> / hgweb
  44. Audio meters stop functioning after recording the first clip when using mlv_snd. Easy fix suggested by a1ex. — Daniel Fort <> / hgweb

#353 - 5D2.212 (Oct 31, 2017 12:10:21 AM)

  1. QEMU: fix arrow unpress handling on cameras without UDLR (tested on EOSM) — alex@thinkpad / hgweb
  2. QEMU tests: replaced two slow grep commands with sed — alex@thinkpad / hgweb
  3. QEMU tests: check call/return trace only until the last function from IDC
    (the next 1000 lines can be nondeterministic on digic 6 models) — alex@thinkpad / hgweb
  4. QEMU tests: refactored matching heuristic for call/return trace on main firmware
    (rewritten in Python - much faster) — alex@thinkpad / hgweb
  5. QEMU install: brew docutils needs additional setup; just use the one from pip — alex@thinkpad / hgweb
  6. removed dependency on realpath
    (not available on Mac) — alex@thinkpad / hgweb
  7. Makefile: fix compiling tcc — alex@thinkpad / hgweb
  8. QEMU install: Mac cleanups, to be tested
    (xcode-select auto-installed by brew, docutils available as package) — alex@thinkpad / hgweb
  9. Makefile: moved toolchain setup to Makefile.setup
    (this allows toolchain to be overridden from Makefile.user) — alex@thinkpad / hgweb
  10. use ESC c to reset the terminal, instead of "tput reset"
    ("tput reset" may crash when running as background job - bash bug?) — alex@thinkpad / hgweb
  11. QEMU install: refuse to overwrite an existing installation — alex@thinkpad / hgweb
  12. QEMU install: only apply the gcc 7.x patch if user actually has gcc 7
    also commit the gcc 7.x patch to our local git repo, so it won't affect updates to qemu-2.5.0.patch — alex@thinkpad / hgweb
  13. QEMU install: we have gcc-arm-embedded:i386 on the PPA :) — alex@thinkpad / hgweb
  14. Makefile: fixes to allow compiling ML with Linaro arm-eabi-gcc; updated toolchain recommendations — alex@thinkpad / hgweb
  15. QEMU: patch for building with gcc 7.x — alex@thinkpad / hgweb
  16. QEMU install: explicit check for Ubuntu (other systems use apt-get, with different package names); explicit "dpkg --add-architecture i386" if any package needs it
    (should fix installation on newer Ubuntu - to be tested) — alex@thinkpad / hgweb
  17. MPU spells: try to use parameters (ARG0, ARG1 etc) in simple cases
    (same-length replies, repeating the arguments in the same position)
    (note: PROP_BURST_COUNT doesn't always work well like this) — alex@thinkpad / hgweb
  18. QEMU: typo when loading raw images for capture emulation — alex@thinkpad / hgweb
  19. MPU spells: identified some lens properties (PROP_LENS and PROP_LENS_NAME) — alex@thinkpad / hgweb
  20. MPU spells: identify property description for Complete WaitID messages — alex@thinkpad / hgweb
  21. QEMU: comment out some common MPU spells and use the ones from our headers;
    always include the headers in autogenerated spells
    always disable sensor cleaning
    (some emulation differences in a few models, hopefully non-essential) — alex@thinkpad / hgweb
  22. MPU spells: identified PROP_BATTERY_CHECK
    (verified before dialogs such as card format or firmware update) — alex@thinkpad / hgweb
  23. QEMU: print names of MPU spells (exported from
    and highlight the ones without name or without known behavior — alex@thinkpad / hgweb
  24. MPU spells: documented a bunch of properties and updated their indexing
    (some trial and error, others copied from ) — alex@thinkpad / hgweb
  25. QEMU: handle INFO unpress event (for 5D3) — alex@thinkpad / hgweb
  26. QEMU: generate valid dark frames if a CR2 isn't available — alex@thinkpad / hgweb
  27. QEMU: allow full-res 14-bit data from any format readable by dcraw
    (usually CR2 and DNG; example in README) — alex@thinkpad / hgweb
  28. QEMU: use <%d> for EDMAC connections in debug messages
    (e.g. connection <5>, channel #16) — alex@thinkpad / hgweb
  29. QEMU: moved image processing engine functions to separate file
    (EDMAC, PREPRO, JPCORE...) — alex@thinkpad / hgweb
  30. make install_qemu: check whether sd.img or cf.img is mounted before copying files — alex@thinkpad / hgweb
  31. also print the command-line of arm-none-eabi-gdb, if any
    and whether it's running as a background job or not — alex@thinkpad / hgweb

#276 - 600D.102 (Oct 2, 2017 10:30:05 PM)

  1. QEMU: updated 600D test to include the info screen
    (had to enable it in Canon menu) — alex@thinkpad / hgweb
  2. QEMU: disabled sensor cleaning animation on 5D2, 50D, 60D
    (interferes with ML menu; updated tests) — alex@thinkpad / hgweb

#262 - 60D.111 (Oct 2, 2017 2:46:19 PM)

  1. QEMU: warn user when shutdown is not clean — alex@thinkpad / hgweb
  2. QEMU: updated 100D menu test to show all menus (including the FlexiZone AF setting) — alex@thinkpad / hgweb
  3. QEMU: run 100D with FlexiZone AF enabled (this setting results in ML crashing at startup) — alex@thinkpad / hgweb

#261 - 60D.111 (Oct 2, 2017 1:41:59 PM)

  1. QEMU: run 100D with FlexiZone AF enabled (this setting results in ML crashing at startup) — alex@thinkpad / hgweb
  2. QEMU tests: declared cameras able to run the FRSP test at the beginning
    (so run_test arguments now apply to this test as well) — alex@thinkpad / hgweb

#235 - 1200D.101 (Oct 1, 2017 1:23:31 PM)

  1. qemu-frsp: updated to operate from PLAY mode
    previously, it was operating on the date/time screen;
    now all models are starting either with Canon's info screen,
    or with display off, or show the sensor cleaning animation — alex@thinkpad / hgweb
  2. QEMU install: updated regex for parsing GUI_CAMS from
    (to allow multi-line declaration) — alex@thinkpad / hgweb
  3. QEMU tests: 100D typo
    (old file) — alex@thinkpad / hgweb
  4. QEMU tests: updated for 5D2/50D without date/time dialog
    note: sensor cleaning animation makes the test nondeterministic - do not check these screens — alex@thinkpad / hgweb
  5. QEMU: 5D2/50D RTC patch from g3gg0
    (date/time dialog is history!) — alex@thinkpad / hgweb
  6. QEMU: updated README — alex@thinkpad / hgweb
  7. QEMU: enabled PROP_MPU_GPS on all DIGIC 5 models — alex@thinkpad / hgweb
  8. QEMU: EOS M boots the GUI!
    (it also needs the GPS patch - moved to GPS.h) — alex@thinkpad / hgweb
  9. QEMU: updated tests
    (after RTC emulation, I2C and patches cleanup) — alex@thinkpad / hgweb
  10. GDB scripts: date/time patches no longer needed! — alex@thinkpad / hgweb
  11. QEMU: reworked I2C debug messages — alex@thinkpad / hgweb
  12. QEMU: updated MMIO highlighting code
    (module name is now highlighted as well - easier to spot) — alex@thinkpad / hgweb
  13. QEMU: moved RTC emulation to its own handler; reworked debug messages — alex@thinkpad / hgweb
  14. QEMU: enabled RTC emulation for most models
    exceptions: 5D2 and 50D appear to use a different chip or method — alex@thinkpad / hgweb
  15. QEMU: RTC patch from g3gg0
    5D3 and 60D no longer show the date/time screen! — alex@thinkpad / hgweb
  16. QEMU: I2C patch from g3gg0 — alex@thinkpad / hgweb
  17. QEMU: figured out why 5D3 was locking up at startup and in certain menus - it was waiting for PROP_MPU_GPS!
    (thanks g3gg0) — alex@thinkpad / hgweb

#218 - 5D2.212 (Sep 30, 2017 2:22:29 AM)

  1. QEMU install: don't install two toolchains if user selects 64-bit GDB — alex@thinkpad / hgweb

#217 - 100D.101 (Sep 29, 2017 7:09:02 PM)

  1. QEMU install: libnewlib-arm-none-eabi is architecture-independent — alex@thinkpad / hgweb
  2. QEMU install: download toolchain from launchpad and use as mirror
    ( is currently down, hopefully not from our experiments) — alex@thinkpad / hgweb
  3. QEMU install: make it clear that *you* have to run the PATH command (not the script);
    use export (e.g. for shells other than bash) - — alex@thinkpad / hgweb
  4. QEMU install: 32-bit Mac toolchain doesn't have gdb... — alex@thinkpad / hgweb
  5. QEMU install: wrong quotes — alex@thinkpad / hgweb
  6. QEMU install: fix some copy/paste errors — alex@thinkpad / hgweb
  7. QEMU install: allow using the current 64-bit toolchain on Ubuntu; minor fixes — alex@thinkpad / hgweb
  8. QEMU install: more toolchain options (experimental)
    - Mac: try the toolchain from (not tested)
    - Ubuntu: options to install GCC from Ubuntu repo
      - older version, 32-bit or 64/bit
      - from gcc-arm-embedded PPA (6.x 64-bit)
      - from gcc-arm-embedded (32-bit installed in home directory)
      - use the existing installation if possible
    - Ubuntu: don't install libfdt-dev (not needed?)
    - all: print warnings about 64-bit GDB and allow using it anyway if user says so
    - all: check whether arm-none-eabi-gcc can compile a simple program
    - all: check whether rst2html or vncdotool are installed outside package manager — alex@thinkpad / hgweb
  9. Merged in kichetof/magic-lantern-1/kichetof/qemu-install-elegant-way-to-install-pack-1506440503741 (pull request #861)

    QEMU install: elegant way to install packages on macOS — Alex <> / hgweb
  10. QEMU install: remove docutils install for macOS — Christophe Francey <> / hgweb
  11. QEMU install: elegant way to install packages on macOS
    Checks if the package is already installed otherwise install it — Christophe Francey <> / hgweb
  12. QEMU install: on Ubuntu, gdb-arm-none-eabi:i386 and gcc-arm-none-eabi can be installed with the same command
    (false alarm; let's also check for correct installation) — alex@thinkpad / hgweb
  13. QEMU install: pip does not require sudo — alex@thinkpad / hgweb
  14. QEMU install: fix for dpkg -l also returning non-installed packages — alex@thinkpad / hgweb
  15. QEMU install: on Ubuntu, gdb-arm-none-eabi:i386 and gcc-arm-none-eabi must not be installed with the same command
    (otherwise, we get gcc-arm-none-eabi:i386 which does not include libnewlib-arm-none-eabi...) — alex@thinkpad / hgweb
  16. QEMU install: pip recommends sudo -H — alex@thinkpad / hgweb
  17. QEMU install: also set up the toolchain for compiling ML (Ubuntu) — alex@thinkpad / hgweb

#216 - 100D.101 (Sep 27, 2017 2:22:38 AM)

  1. QEMU install: typo — alex@thinkpad / hgweb
  2. Makefile: updated toolchain recommendation; minor edits — alex@thinkpad / hgweb
  3. QEMU install: 64-bit arm-none-eabi-gdb doesn't work (cannot boot 5D3 GUI),
    no matter where it comes from (Ubuntu repo or gcc-arm-embedded PPA)...
    on 64-bit Ubuntu, gdb-arm-one-eabi:i386 works, but Windows and Mac are out of luck for now — alex@thinkpad / hgweb
  4. Makefile: attempt to use any arm-none-eabi-gcc from PATH, if already installed (to be tested)
    By default, it will attempt to use ~/gcc-arm-none-eabi-5_4-2016q3 if installed. — alex@thinkpad / hgweb
  5. QEMU install: gcc-arm-embedded try #5 — alex@thinkpad / hgweb
  6. QEMU install: gcc-arm-embedded try #4 — alex@thinkpad / hgweb
  7. QEMU install: gcc-arm-embedded try #3 — alex@thinkpad / hgweb
  8. QEMU install: gcc-arm-embedded try #2 — alex@thinkpad / hgweb
  9. QEMU install: let's try gcc-arm-embedded from PPA — alex@thinkpad / hgweb
  10. Merged in kichetof/magic-lantern-1/kichetof/qemu-check-if-brew-is-installed-on-macos-1506424463270 (pull request #860)
    also included this suggestion: — alex@thinkpad / hgweb
  11. QEMU: check if brew is installed on macOS — Christophe Francey <> / hgweb
  12. Makefile: use gcc 5.4.1 by default (current version from ) — alex@thinkpad / hgweb
  13. QEMU install: more Mac patches (not tested)
    from — alex@thinkpad / hgweb
  14. QEMU install: also install docutils and vncdotool — alex@thinkpad / hgweb
  15. QEMU install: verbosity fine-tuning — alex@thinkpad / hgweb
  16. QEMU: minor README updates — alex@thinkpad / hgweb
  17. QEMU: README formatting — alex@thinkpad / hgweb
  18. QEMU: README formatting — alex@thinkpad / hgweb
  19. QEMU: updated install instructions in README — alex@thinkpad / hgweb
  20. QEMU install: arm-none-eabi-gdb requires 32-bit libraries on Ubuntu — alex@thinkpad / hgweb
  21. QEMU: set up arm-none-eabi-gdb from the install script — alex@thinkpad / hgweb
  22. QEMU: auto-install dependencies if running on Ubuntu-based systems (to be tested) — alex@thinkpad / hgweb
  23. QEMU: some Mac patches for install script (not tested) — alex@thinkpad / hgweb
  24. QEMU: ggrep patch for Mac from kichetof — alex@thinkpad / hgweb
  25. QEMU: supply an email address for git if the default doesn't work — alex@thinkpad / hgweb

#200 - 450D.110 (Sep 22, 2017 8:02:43 PM)

  1. QEMU: 1000D GUI works too
    (based on 450D) — alex@thinkpad / hgweb
  2. QEMU: stretch display vertically on VxWorks models
    (double all lines to get correct aspect ratio) — alex@thinkpad / hgweb
  3. QEMU: emulate JUMP and Direct Print buttons (for VxWorks models) — alex@thinkpad / hgweb
  4. Backout 89254290c3f7
    (shutdown only works only when not activating Canon menu, with or without this patch) — alex@thinkpad / hgweb
  5. QEMU: 450D GUI working!
    - updated MPU spells, button codes and parsing scripts
    - WriteProtect GPIO
    - SET does not send unpress events
    - menu navigation working, format locks up
    - shutdown working
    - updated tests — alex@thinkpad / hgweb
  6. QEMU: print whether available keys are press-only or they also send unpress events — alex@thinkpad / hgweb
  7. QEMU: re-created 70D MPU spells; shutdown working — alex@thinkpad / hgweb
  8. QEMU: shutdown working on most models able to start the GUI (all but 70D) — alex@thinkpad / hgweb
  9. minimal targets: removed old references to qemu-util — alex@thinkpad / hgweb
  10. QEMU tests: always stop GDB when QEMU quits — alex@thinkpad / hgweb
  11. QEMU tests: updated to handle shutdown and reboot
    (shutdown test after menu navigation, reboot test when formatting card and restoring ML) — alex@thinkpad / hgweb
  12. QEMU: handle PROP_ABORT (after opening battery door)
    fixme: it doesn't shutdown, figure out why — alex@thinkpad / hgweb
  13. QEMU: handle the powerdown event
    (menu: Machine -> Power Down) — alex@thinkpad / hgweb
  14. QEMU: experimental shutdown handling (card door and power switch) — alex@thinkpad / hgweb
  15. reloc.c: cleaned up ifdef's — alex@thinkpad / hgweb

#152 - 1200D.101 (Sep 19, 2017 12:53:06 AM)

  1. QEMU: minor README update
    (ML menu now working on all models able to boot the GUI) — alex@thinkpad / hgweb
  2. QEMU: 1200D doesn't have a dedicated delete button
    (use the key codes from 1100D - same as 600D, but without the delete button) — alex@thinkpad / hgweb
  3. QEMU: experimental Av button handling for Rebel cameras
    (fixme: has some side effects, such as changing the displayed shutter speed) — alex@thinkpad / hgweb
  4. QEMU: don't auto-repeat keys, except for scrollwheels — alex@thinkpad / hgweb

#121 - 600D.102 (Sep 16, 2017 7:09:32 PM)

  1. QEMU: also allow right shift for half-shutter — alex@thinkpad / hgweb
  2. QEMU: handle the FUNC button (for 50D menu navigation) — alex@thinkpad / hgweb