View source
qemu
Author Commit Message Date Builds
68 commits behind unified.
Alex
QEMU tests: updated IDC "needle" for 200D (should have been done in 2aacd2a)
Alex
QEMU tests: updates for limiting CPU load - counting active processes returns 1 when the system is idle (not 3) - even if the system has only one CPU core, it needs to be able to start a new job - poll the CPU load 10 times over a period of 0.5 seconds before making a decision
Alex
QEMU install: also install python3 and use it by default for additional packages (todo: update all our python scripts)
Alex
QEMU: updated some test scripts for Python 3
Alex
QEMU: script for reverting changes made in qemu-eos (i.e. go back to some vanilla version without full reinstallation) Usage: ./sure_copy_from_contrib.sh [-q] (from qemu-eos directory) Name starts with different letter to avoid typing ./copy_back_to_contrib.sh by mistake.
Alex
QEMU tests: updated IDC "needles" for DIGIC 7 (minor changes after e1c6fd6)
Alex
QEMU install: reworked toolchain options - on all x86_64 Linux systems, user can choose between 32-bit and 64-bit toolchain - on all Intel systems, user can choose to override the existing ARM toolchain (and install a precompiled version that's known to work) - on x86 Linux systems, the script should install a 32-bit toolchain without asking - on all systems, user may keep the existing ARM compiler (arm-none-eabi-gdb) and compile gdb 8.1…
Alex
QEMU install: dropped support for arm-none-eabi-gdb installed from Ubuntu package manager Too much of a moving target, e.g. working on Xenial and Bionic (with different packages!) but broken on Cosmic. Keeping arm-none-eabi-gcc from package manager as an option. For gdb, we'll use either a precompiled toolchain (64-bit 7-2018-q2, or any 32-bit version), or compile gdb 8.1 from source.
Alex
QEMU install: minor cleanups
Alex
QEMU install: on WSL, do not execute anything when user selects invalid options (32-bit binaries are not going to work anyway)
Alex
QEMU install: on Ubuntu/WSL, install the precompiled toolchain even if another (valid) gcc version is present (option #2 in the Ubuntu/WSL menu)
Alex
QEMU install: GDB 8.2.x does not work :( - back to GDB 8.1 - GDB 8.2.x is no longer accepted - using precompiled toolchain 7-2018-q2-update for both Mac and WSL (with GDB 8.1.x)
Alex
QEMU install: use gdb 8.2.1 when compiling from source (8.1 still accepted as valid)
Alex
QEMU install: gdb-multiarch 8.1 or newer may be available on recent WSL (use the same heuristics as with plain Ubuntu)
Alex
QEMU: various fixes regarding Thumb disassembly Quirk: if CPU is in ARM mode, the disassembler looks at the Thumb bit of the requested address. If CPU is in Thumb mode, the disassembler ignores the Thumb bit from the address, and always disassembles as Thumb. This inconsistency is also present in latest QEMU from git. Why? IDC scripts: comments containing disassembled Thumb code were updated (DIGIC 6/7/8 and 1300D).
Alex
GDB scripts: removed NULL_STR definition from 5D4 (was breaking the tests; not required on this camera anyway)
Alex
QEMU logging: in icount mode, print instruction count for every single function call Instruction count is printed when returning from the function. Instructions executed by other tasks/interrupts (i.e. outside the tested function) are not included in the printed value. This feature is very useful for optimizing code. Example: -d debugmsg,calls -icount 5
Alex
QEMU logging: updated DryOS and VxWorks task switch handling It was quite hard to pass the test suite, as there were lots of edge cases: - context switch may happen either in a timer interrupt, or in a regular task (e.g. msleep, sempahores and so on) - context switch is not atomic - it happens a few instructions (or function calls!) afterh updating the current task pointer - until the registers are swapped for the new task, we are still on the stack of the…
Alex
QEMU test suite: only use 2/3 of available CPU cores. It appears to improve the repeatability of results in some CPU- and IO-intensive tests. In other words, don't believe the Hyper-Threading hype :)
Alex
QEMU logging: removed magic stack ID values for interrupt and invalid task
Alex
QEMU: refactored with eos_get_mem_w Before: uint32_t x; cpu_physical_memory_read(addr, &x, 4) After: uint32_t x = eos_get_mem_w(s, addr); Also, minor cleanups to eos_get_current_task_* (not expected to make a difference)
Alex
qemu-fio: burn-in test for FindClose (FindFirst/FindClose/FindNext repeated many times)
Alex
qemu-fio: minimal test code for file I/O routines in QEMU Only FindFirst/FindNext test for now; others to be added later. Compile with e.g.: cd minimal/qemu-fio make MODEL=60D clean make MODEL=60D install_qemu CONFIG_QEMU=y FIXME: works on DIGIC 4/5, fails on DIGIC >= 6, not tested on DIGIC 2/3.
Alex
QEMU tests: minor fix for HPTimer test (slightly faster, no longer times out)
Alex
5D4: sync debugmsg.gdb to the one from chris_overseas (a8bdfa9)
Alex
QEMU: 32-bit DIGIC timer support (DIGIC 6 and newer)
Alex
QEMU: updated emulation for 7D2 1.0.4 (ROM from real hardware; no longer using 80D bootloader). Some workarounds were required to emulate the bootloader. Communication between the two cores is not yet handled.
Alex
QEMU: renamed 7D2M to 7D2 (slave core is still 7D2S)
Alex
QEMU: updated tests for 5D 1.1.1 and 400D 1.1.1, both ROMs from real hardware (previously, it was a mix between an incomplete 5D firmware and 1000D bootloader)
Alex
QEMU: imported scnprintf/vscnprintf from Linux kernel and fixed incorrect usage in previous code (adapted commit e8bb011b)
Alex
QEMU: fixed indentation of multiline debug strings (-d debugmsg)
Alex
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
QEMU: fixed TCM size info (broken in df56963); simplified condition for 946_PRBS size info
Alex
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
QEMU: print PC when taking an exception
Alex
QEMU install: option to to keep or replace existing sd.img and cf.img, if any
Alex
QEMU install: always use qemu-eos as username
Alex
QEMU: updated SD/CF image with the latest portable display test (19f18f0 from recovery branch)
Alex
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
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) https://www.magiclantern.fm…
Alex
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
GDB scripts: fixed CURRENT_ISR on A1100
Alex
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
QEMU: fixed CURRENT_TASK for 5D (both GDB script and model_list.c)
Alex
QEMU: updated CURRENT_ISR for EOS M5; workaround for current_task_addr
Alex
GDB scripts: updated formatting of CURRENT_ISR on 200D, 800D, 77D, 6D2, 750D (non-functional)
Alex
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
MPU spells: fix possible buffer overflow when interpreting messages
Alex
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
QEMU test suite: minor fix (colors incorrect if QEMU was already running)
Alex
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
QEMU: log all unhandled MMIO events, even if they repeat (this "feature" interferes with debugging; was present since the first commit, in 2013)
Alex
QEMU: fix overflow in eos_ml_helpers.c (qprintf)
Alex
QEMU: fixed shift warning in logging.c (found with UBSan)
Alex
QEMU: fixed shift warnings in disas.c (found with UBSan)
Alex
QEMU: fixed buffer overflow warning in serial_flash.c (found with ASan; not affecting well-behaved code)
Alex
QEMU: fixed underflow in logging.c (found with ASan)
Alex
QEMU: fixed underflow in debugmsg.c (found with ASan)
Alex
QEMU: fixed shift warnings in logging.c (found with UBSan)
Alex
QEMU: fixed shift warnings in eos.c (found with UBSan)
Alex
QEMU: workaround for compiling with -fsanitize=undefined in digic.c (possibly gcc bug)
Alex
QEMU: imported https://github.com/qemu/qemu/commit/30628cb12de Fixes compilation with -fsanitize=undefined
Alex
QEMU: imported https://github.com/qemu/qemu/commit/9005774b27b Fixes crash with long GDB requests on Mac - https://www.magiclantern.fm/forum/index.php?topic=2864.msg210189#msg210189
Alex
configure_eos.sh: fix passing arguments containing spaces
Alex
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
QEMU: fixed some CPU ID registers to match CPUINFO logs on DIGIC 2..5 D5: https://www.magiclantern.fm/forum/index.php?topic=17714.msg170948#msg170948 (70D) D4: https://www.magiclantern.fm/forum/index.php?topic=17714.msg171742#msg171742 (1200D) D2/3: https://chdk.setepontos.com/index.php?topic=2139.0 (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 di…
Alex
QEMU: fixed some CPU ID registers to match CPUINFO logs on DIGIC 6 and 7 - D6: https://www.magiclantern.fm/forum/index.php?topic=17714.0, https://www.magiclantern.fm/forum/index.php?topic=17360.msg202322#msg202322 - D7: https://www.magiclantern.fm/forum/index.php?topic=19737.msg200737#msg200737, https://chdk.setepontos.com/index.php?topic=13014.msg131109#msg131109
Alex
annotate_mpu_log: allow operation with button codes from another camera model
Alex
annotate_mpu_log: also label unknown GUI events
Alex
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, https://www.magiclantern.fm/forum/index.php?topic=2864.msg206275#msg206275 - no Av button
Alex
QEMU: unified 650D and 700D button definitions
Alex
QEMU: removed rear scrollwheel emulation from Rebel models (they were auto-generated)
Alex
QEMU: GMT_GUICMD_CLOSE_SLOT_COVER, GMT_GUICMD_CLOSE_BATT_COVER, GMT_GUICMD_LOCK_ON (common to all models; definitions only for now)
Alex
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
QEMU: enabled old-style zoom button events for 5D3 and 6D (apparently still used internally, during GUI mode changes)
Alex
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
QEMU: fix RATE and PicStyle buttons for 5D3
Alex
GDB scripts: log calls to named functions (useful for initial porting experiments; stubs for 5D3, 5D4, 80D, 200D)
Alex
GDB scripts: misc cosmetic tweaks
Alex
GDB scripts: silence all tbreak messages (with helpers to silence any other messages)
Alex
GDB scripts: export state object definitions as Python code (useful to create state machine diagrams and other automated analysis)
Alex
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
GDB scripts: xxd wrapper https://stackoverflow.com/questions/9233095/memory-dump-formatted-like-xxd-from-gdb
Alex
GDB scripts: ADTG/CMOS/ENGIO logging helpers (stubs for 60D and EOSM2)
Alex
GDB scripts: moved whitespace placeholder to a function; fixed alignment on multi-core models
Alex
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
QEMU: CF bit in ClockEnable register
Alex
backtrace: redirect debug messages to QEMU console, rather than discarding them
Alex
QEMU: fix handling replies of duplicate MPU messages (encountered in 80D, maybe others)
Alex
MPU spells: comment out photo capture from startup logs (affects 450D and 1000D)
Alex
MPU spells: documented PROP_BOARD_TEMP and renamed PROP_AF_DURING_RECORD/PROP_MOVIE_REC_AF to PROP_SHUTTER_AF_DURING_RECORD
Alex
QEMU tests: retry screenshots if there apparently was a successful match followed by a (possibly transient) difference
Alex
QEMU tests: fixed some transient screenshots (optional double-checking code to autodetect them)
Alex
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
GDB scripts: make sure all EOS models have CreateStateObject defined (only test models with this string present in the ROM)
Alex
GDB scripts: make sure all models have register_func (RegisterEventProcedure) defined Exception: Eeko.
Alex
QEMU: workaround for running GDB tests on 7D
Alex
QEMU: fix 7D LED assertion
Alex
QEMU tests: fix race condition when checking GDB scripts (shared file)
Alex
GDB scripts: 800D comments, for consistency with other platforms
Alex
GDB scripts: print "(null)" in other places where string arguments might be optional
Alex
GDB scripts: 5D4 uses a new syntax for create_semaphore (name is the third argument)
Alex
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
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
QEMU: disabled eos_handle_rom MMIO handlers (unused, only triggered incorrectly on Eeko, where they caused a crash)
Alex
GDB scripts: fix pausing prompt on short terminals
Alex
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
Minimal targets: only compile subdirectories with a valid Makefile
Alex
QEMU tests: FA_CaptureTestImage works on 1300D (prints "Image Power Failure", but the fix is not straightforward)
Alex
Makefile: when running "make install", copy ML-SETUP.FIR only for the generic profile (not for minimal or other targets)
Alex
Makefile: always check all minimal targets when running "make zip" (only check whether they compile without errors, just like with the installer)
Alex
Minimal target: moved the Hello World example into its own directory and removed old platform folders
Alex
Minimal targets: 5D3 1.1.3 hacks no longer needed
Alex
GDB scripts: fix IDC names containing spaces
Alex
QEMU: fix timeout in ImgPowDet emulation (there were nondeterministic errors in the FRSP test)
Alex
QEMU: emulate ADTGDMA interrupt (used on 100D and EOS M2) - fixes FA_CaptureTestImage on 100D - some LiveView screenshots changed on 100D - color palette in LiveView changed on M2; can be worked around by pressing L (updated menu tests)
Alex
QEMU tests: ignore nondeterministic screenshot on 6D (may appear with or without free space)
Alex
GDB scripts: moved try_expand_ram_struct at the top
Alex
GDB scripts: minor whitespace fix
Alex
QEMU: ensure valid RAM address before executing EDMAC transfers (EOS M fails here when running FA_CaptureTestImage)
Alex
QEMU: image sensor power emulation (fixes FA_CaptureTestImage on 5D2; tested on all other models able to run the FRSP test)
Alex
QEMU: output dummy data (zeros) on read EDMAC connections Fixes FA_CaptureTestImage on 700D and 650D.
Alex
qemu-frsp: fix compiling for 70D
Alex
QEMU: allow reads to EDMAC CHSW registers (required for FA_CaptureTestImage emulation on 6D and others)
Alex
qemu-frsp: ensure valid exposure settings before the test (exposure time not too long, ISO other than Auto; required on 600D and others)
Alex
QEMU: fix YUV vertical scaling for 1100D (only the FRSP test uses it for now)
Alex
qemu-frsp: allocate a YUV buffer if there isn't one already set up (only with CONFIG_QEMU) Fixes preview on 5D3 and 1100D, where Canon firmware does not allocate one at startup.
Alex
QEMU tests: all models able to navigate Canon menu should pass the FRSP (FA_CaptureTestImage) test Most of them will fail; to be fixed.
Alex
QEMU tests: handle models not yet in mainline (FRSP and HPTimer tests are using this for now)
Alex
QEMU: updated gcc 7/8 patch for systems using virtio-9p
Alex
QEMU: updated gcc 7.x patch to also work with gcc 8.x
Alex
eos.c: fix gcc8 warnings
Alex
Makefile: allow "make install*" without a FIR file (for minimal targets and new platforms)
Alex
QEMU logging: attempt to identify tail calls by default (-d calls,notail to disable)
Alex
QEMU tests: updated for 200D 1.0.1
Alex
QEMU logging: moved IDC files into model subdirectories (for consistency with romcpy shell files)
Alex
QEMU logging: fix typo when using -d romcpy (output file path was not printed correctly)
Alex
QEMU tests: initial support for 800D (fixme: call trace not deterministic, same as 77D)
Alex
800D: minor stub fixes in GDB script
Ian Scott
qemu: add 800D to model_list.c, and add 800D/debugmsg.gdb
Alex
QEMU: experimental support for gdb-multiarch (latest Ubuntu no longer has gdb-arm-none-eabi...)
Alex
QEMU install: minor fixes
Alex
QEMU install: on some systems, building GDB requires makeinfo; skip it https://sourceware.org/bugzilla/show_bug.cgi?id=18113 Also show the last few lines from the compilation logs if there's an error.
Alex
QEMU install: on older Ubuntu, gcc/gdb installation without package manager may be required
Alex
QEMU install: minor fix for 32-bit Ubuntu (option 3: no 64-bit gcc available)
Alex
QEMU installer: removed option to allow old 64-bit GDB (hopefully no longer needed)
Alex
QEMU installer: minor fix regarding GDB installation (force compiling from source if a valid 64-bit gdb is already installed)
Alex
QEMU installer: attempt to compile gdb 8.1 from source if a 32-bit version is not available (in particular, Mac and WSL) https://www.magiclantern.fm/forum/index.php?topic=2864.msg200954#msg200954 (thanks t3r4n)
Alex
QEMU install: there's no DISPLAY variable on Mac
Alex
QEMU: better emulation for cache patches (uninstalling works, at least for dm-spy-experiments)
Alex
QEMU: fix CPU0 labels incorrectly appearing in DIGIC 6 logs (only DIGIC 7 should display these)
Alex
QEMU: moved ARM946EOS-specific functions (cache lockdown and WFI) from cpu.c to helper.c
Alex
Minimal targets: CONFIG_QEMU no longer hardcoded in Makefile (should be specified on the command line if desired)
Alex
Makefile: allow CONFIG_QEMU to work on all ML profiles, including minimal and installer By default, CONFIG options are only used for the generic profile. This enables qprintf for debugging DIGIC 6/7 ports using the minimal profile.
Alex
QEMU: fix printing callstack from GDB scripts (broken in 1834cd8)
Alex
GDB scripts: workaround for a crash occuring with 5D (possibly GDB bug; can't explain why it works)
Alex
qemu-frsp: fix compiling on lua_fix codebase (1200D and soon all others)
Alex
QEMU: updated expected test results for 1200D 1.0.2 (no stubs changed in debugmsg.gdb)
Alex
QEMU: removed bogus/unused BGMT_ISO
Alex
QEMU: fix Q button code for 1200D - https://www.magiclantern.fm/forum/index.php?topic=12627.msg200889#msg200889 - assuming the same applies to 1300D; unsure about 600D/1100D
Alex
QEMU: fix compiling on 32-bit x86 hosts Caveat: -d romcpy not working on x86 (requires int128_t)
Alex
QEMU README: initial notes on DIGIC 7
Alex
QEMU: initial support for DIGIC 7 EOS (200D, 77D, 6D2) - added ROMID; updated MemDiv, XDMAC, SDIO - emulation starts many tasks, talks to MPU, initializes SD, creates the DCIM directory on the virtual card - fails with ERROR WaitPU1 TimeOut - dumpf does not save any logs (figure out why) - note: M5 ROM should now be loaded as ROM0
Alex
QEMU logging: initial support for DIGIC 7 (CPU0 only; exception vectors at nonzero address)
Alex
QEMU tests: ROM dumper needs larger timeout on slower computers; undo unwanted changes from cb93334
Alex
QEMU tests: fix expected results for restore after format after updating SD image
Alex
QEMU tests: reworked ROM dump test to wait as much or as little as each camera needs (fixme: 70D waits for some CFDMA messages that are for some other device)
Alex
QEMU: usleep patching no longer required on M3
Alex
QEMU: updated ROM dump tests to check SFDATA.BIN too (currently only applies to DIGIC 6)
Alex
QEMU: updated SD image with latest display test (changeset 9b37638)
Alex
QEMU: experimental UTimer emulation - these look pretty much like regular timers (same offsets), but behave like HPTimers! - UTimer patches from DIGIC 6 no longer needed! - fine-tuned HPTimer messages
Alex
QEMU: fix logging of MMIO registers from the same range as MREQ (eos_handle_mreq also receives a few other registers, unknown yet)
Alex
QEMU: specify actual RAM size for each model, rather than using generic values (emulating with larger size usually works, but doesn't catch some edge cases)
Alex
QEMU: reordered model definitions in model_list.c (grouped by DIGIC version and similarity)
Alex
QEMU: renamed IO_MEM_START/SIZE to MMIO_ADDR/SIZE for consistency; added MMIO_ADDR to model_list.c (possibly needed for future models)
Alex
QEMU: removed unused entries; moved ML helpers to a different GPIO range. Old range was not accessible on certain models, such as PowerShots and DIGIC 7. Old GPIOs are still accepted (debugging existing code from experimental branches is still possible without merging latest qemu).
Alex
QEMU logging: -d romcpy now output a shell script for extracting the copied blocks
Alex
QEMU: memfd patch to fix compilation with glibc 2.27 https://patchwork.openembedded.org/patch/147682/
Alex
QEMU installer: minor updates - option to "make clean" before renaming the old folder (to save disk space) - exit if QEMU fails to compile - check for a valid DISPLAY (important for WSL) - updated help links
Alex
QEMU: updated CPU definition for DIGIC 7; renamed for older models and reverted the HIVECS property back to false
Alex
QEMU tests: updated checksums for EOS M/M2 screenshots displaying date/time (fix commit 8c575ef99b7f)
Alex
QEMU tests: updated checksum for a screenshot affected by transparency - commit 5b274e3 (Canon quirk - it's not even a LiveView screenshot)
Alex
annotate_mpu_log.py: allow incomplete mpu_send/recv lines (such as the ones from 80D logs)
Alex
MPU spells: documented some AF-related properties
Alex
GDB scripts: also identify and name PTP handlers
Alex
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