Changes
#185 (Jan 1, 2021 3:47:38 PM)
- Merge branch 'topic/Ant/correct-uart_rx_interrupt-number-for-eos-1588612772652/bitbucket-pr-963' into 'branch/qemu'
correct uart_rx_interrupt number for EOS M3
See merge request magic-lantern/magic-lantern!963 — Alex _a1ex@magiclantern.fm_ / hgweb - QEMU docs: fixed broken links — alex@thinkpad / hgweb
- QEMU: replaced Bitbucket links with Heptapod ones — alex@thinkpad / hgweb
- QEMU install: option to compile any GDB version from source; GDB 8.1.1 also buggy...
Usage: COMPILE_GDB=8.1 ./install.sh — alex@thinkpad / hgweb - QEMU install: fix precompiled toolchain dependencies on recent Ubuntu
(todo: test on recent WSL) — alex@thinkpad / hgweb - QEMU install: experimental support for Debian
(same packages as Ubuntu) — alex@thinkpad / hgweb - QEMU install: fix checking for python/python2 on Ubuntu — alex@thinkpad / hgweb
- QEMU install: minor fixes for Mac
- audio driver fails to compile at least on Big Sur with gcc-10; disabling everywhere (unused)
- typo when checking for gcc being actually clang — alex@thinkpad / hgweb - QEMU patches: backported sys/sysmacros.h fix from qemu 4.x
(should compile cleanly on Mac)
Related discussion: https://patchwork.kernel.org/project/qemu-devel/patch/20161228145344.30819-1-cov@codeaurora.org/ — alex@thinkpad / hgweb - QEMU install: python2 still required for compiling QEMU
Ubuntu: available as "python2" on newer distros, or "python" on older ones...
Mac: not available in Brew, but already installed by Apple
Some systems no longer have "python" pointing to "python2" (fixed in configure_eos.sh) — alex@thinkpad / hgweb - QEMU install: only GDB 8.1 is known to work correctly as 64-bit binary
Tested all pre-built versions from 2017-q4 to 2020-q4 on macOS Big Sur
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
Only gdb 8.1 worked correctly with our scripts... — alex@thinkpad / hgweb - QEMU install: dropped python2 packages - no longer available on latest Mac and Ubuntu
TODO: completely get rid of python2 dependencies. — alex@thinkpad / hgweb - QEMU install: updated command for installing Brew on Mac — alex@thinkpad / hgweb
- QEMU patches: fixes for recent compilers
- "bitwise" fix: https://patchwork.kernel.org/project/qemu-devel/patch/20170308124955.35623-1-aik@ozlabs.ru/
- moved memfd from qemu-2.5.0-eos.patch to qemu-2.5.0-recent-gcc.patch
QEMU now compiles cleanly with recent-gcc patches, with and without EOS patches. — alex@thinkpad / hgweb - QEMU install: configure_eos updated for gcc 9.x and 10.x (to be tested) — alex@thinkpad / hgweb
- QEMU: renamed EOS patches to qemu-2.5.0-eos.patch — alex@thinkpad / hgweb
- QEMU install: always apply the patch for recent GCC
- required for any gcc 7.x and newer (tested up to 10.x)
- doesn't break gcc 5.x
- it also helps some recent clang versions
- renamed qemu-2.5.0-gcc78.patch to qemu-2.5.0-recent-gcc.patch — alex@thinkpad / hgweb - correct uart_rx_interrupt number for EOS M3 — Ant _a5856@ya.ru_ / hgweb
#183 (Apr 16, 2019 5:39:39 PM)
- QEMU tests: updated IDC "needle" for 200D
(should have been done in 2aacd2a) — alex@thinkpad / hgweb - 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@thinkpad / hgweb
#182 (Apr 16, 2019 12:31:50 AM)
- QEMU install: also install python3 and use it by default for additional packages
(todo: update all our python scripts) — alex@thinkpad / hgweb - QEMU: updated some test scripts for Python 3 — alex@thinkpad / hgweb
- 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@thinkpad / hgweb - QEMU tests: updated IDC "needles" for DIGIC 7
(minor changes after e1c6fd6) — alex@thinkpad / hgweb
#181 (Apr 12, 2019 2:45:48 AM)
- 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 from source
- on non-Intel systems, the script should just check for a valid toolchain, and ask the user to install it manually (not tested) — alex@thinkpad / hgweb - 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@thinkpad / hgweb - QEMU install: minor cleanups — alex@thinkpad / hgweb
- QEMU install: on WSL, do not execute anything when user selects invalid options
(32-bit binaries are not going to work anyway) — alex@thinkpad / hgweb - 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@thinkpad / hgweb - 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@thinkpad / hgweb - QEMU install: use gdb 8.2.1 when compiling from source
(8.1 still accepted as valid) — alex@thinkpad / hgweb - QEMU install: gdb-multiarch 8.1 or newer may be available on recent WSL
(use the same heuristics as with plain Ubuntu) — alex@thinkpad / hgweb
#180 (Apr 9, 2019 8:05:41 PM)
- 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@thinkpad / hgweb - GDB scripts: removed NULL_STR definition from 5D4
(was breaking the tests; not required on this camera anyway) — alex@thinkpad / hgweb - 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@thinkpad / hgweb - 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 previous task
- there may be dummy task switches (i.e. from one task to the same task)
- an interrupt can occur in the middle of a (non-atomic) context switch (!)
- VxWorks models do not even use a unique task ID (!)
Result: QEMU no longer crashes during logging tests!
Issue: these cameras do not appear to use an unique task ID. Workaround: assign our own task IDs. — alex@thinkpad / hgweb - 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@thinkpad / hgweb - QEMU logging: removed magic stack ID values for interrupt and invalid task — alex@thinkpad / hgweb
- 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@thinkpad / hgweb
#178 (Mar 27, 2019 1:05:32 PM)
- qemu-fio: burn-in test for FindClose
(FindFirst/FindClose/FindNext repeated many times) — alex@thinkpad / hgweb - 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@thinkpad / hgweb - QEMU tests: minor fix for HPTimer test
(slightly faster, no longer times out) — alex@thinkpad / hgweb - 5D4: sync debugmsg.gdb to the one from chris_overseas
(a8bdfa9) — alex@thinkpad / hgweb
#177 (Mar 26, 2019 12:28:35 AM)
- QEMU: 32-bit DIGIC timer support (DIGIC 6 and newer) — alex@thinkpad / hgweb
#176 (Mar 25, 2019 7:58:12 PM)
- 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@thinkpad / hgweb - QEMU: renamed 7D2M to 7D2
(slave core is still 7D2S) — alex@thinkpad / hgweb - 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@thinkpad / hgweb - QEMU: imported scnprintf/vscnprintf from Linux kernel and fixed incorrect usage in previous code
(adapted commit e8bb011b) — alex@thinkpad / hgweb
#175 (Mar 4, 2019 11:48:20 PM)
- QEMU: imported scnprintf/vscnprintf from Linux kernel and fixed incorrect usage in previous code
(adapted commit e8bb011b) — alex@thinkpad / hgweb - QEMU: fixed indentation of multiline debug strings (-d debugmsg) — alex@thinkpad / hgweb
- 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 - QEMU: fixed TCM size info (broken in df56963);
simplified condition for 946_PRBS size info — alex@thinkpad / hgweb - 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 - QEMU: print PC when taking an exception — alex@thinkpad / hgweb
#174 (Mar 4, 2019 11:52:25 AM)
- QEMU install: option to to keep or replace existing sd.img and cf.img, if any — alex@thinkpad / hgweb
- QEMU install: always use qemu-eos as username — alex@thinkpad / hgweb
- QEMU: updated SD/CF image with the latest portable display test
(19f18f0 from recovery branch) — alex@thinkpad / hgweb - 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 - 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/forum/index.php?topic=5601.msg212692#msg212692 — alex@thinkpad / hgweb - 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 - GDB scripts: fixed CURRENT_ISR on A1100 — alex@thinkpad / hgweb
- 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 - QEMU: fixed CURRENT_TASK for 5D (both GDB script and model_list.c) — alex@thinkpad / hgweb
- QEMU: updated CURRENT_ISR for EOS M5; workaround for current_task_addr — alex@thinkpad / hgweb
- GDB scripts: updated formatting of CURRENT_ISR on 200D, 800D, 77D, 6D2, 750D
(non-functional) — alex@thinkpad / hgweb - 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 - MPU spells: fix possible buffer overflow when interpreting messages — alex@thinkpad / hgweb
#172 (Mar 3, 2019 9:55:35 AM)
- 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 - QEMU test suite: minor fix
(colors incorrect if QEMU was already running) — alex@thinkpad / hgweb - 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 - 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 - QEMU: fix overflow in eos_ml_helpers.c (qprintf) — alex@thinkpad / hgweb
#171 (Jan 12, 2019 2:48:14 AM)
- QEMU: fixed shift warning in logging.c
(found with UBSan) — alex@thinkpad / hgweb - QEMU: fixed shift warnings in disas.c
(found with UBSan) — alex@thinkpad / hgweb - QEMU: fixed buffer overflow warning in serial_flash.c
(found with ASan; not affecting well-behaved code) — alex@thinkpad / hgweb - QEMU: fixed underflow in logging.c
(found with ASan) — alex@thinkpad / hgweb - QEMU: fixed underflow in debugmsg.c
(found with ASan) — alex@thinkpad / hgweb - QEMU: fixed shift warnings in logging.c
(found with UBSan) — alex@thinkpad / hgweb - QEMU: fixed shift warnings in eos.c
(found with UBSan) — alex@thinkpad / hgweb - QEMU: workaround for compiling with -fsanitize=undefined in digic.c
(possibly gcc bug) — alex@thinkpad / hgweb - QEMU: imported https://github.com/qemu/qemu/commit/30628cb12de
Fixes compilation with -fsanitize=undefined — alex@thinkpad / hgweb - 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@thinkpad / hgweb - configure_eos.sh: fix passing arguments containing spaces — alex@thinkpad / hgweb
#169 (Dec 31, 2018 3:50:37 AM)
- 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 - 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 differences between DIGIC 5 and earlier models — alex@thinkpad / hgweb - 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@thinkpad / hgweb - annotate_mpu_log: allow operation with button codes from another camera model — alex@thinkpad / hgweb
- annotate_mpu_log: also label unknown GUI events — alex@thinkpad / hgweb
- 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@thinkpad / hgweb - QEMU: unified 650D and 700D button definitions — alex@thinkpad / hgweb
- QEMU: removed rear scrollwheel emulation from Rebel models
(they were auto-generated) — alex@thinkpad / hgweb - QEMU: GMT_GUICMD_CLOSE_SLOT_COVER, GMT_GUICMD_CLOSE_BATT_COVER, GMT_GUICMD_LOCK_ON
(common to all models; definitions only for now) — alex@thinkpad / hgweb - 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 - QEMU: enabled old-style zoom button events for 5D3 and 6D
(apparently still used internally, during GUI mode changes) — alex@thinkpad / hgweb - 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 - QEMU: fix RATE and PicStyle buttons for 5D3 — alex@thinkpad / hgweb
- GDB scripts: log calls to named functions
(useful for initial porting experiments; stubs for 5D3, 5D4, 80D, 200D) — alex@thinkpad / hgweb - GDB scripts: misc cosmetic tweaks — alex@thinkpad / hgweb
- GDB scripts: silence all tbreak messages
(with helpers to silence any other messages) — alex@thinkpad / hgweb - GDB scripts: export state object definitions as Python code
(useful to create state machine diagrams and other automated analysis) — alex@thinkpad / hgweb - 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 - GDB scripts: xxd wrapper
https://stackoverflow.com/questions/9233095/memory-dump-formatted-like-xxd-from-gdb — alex@thinkpad / hgweb - GDB scripts: ADTG/CMOS/ENGIO logging helpers
(stubs for 60D and EOSM2) — alex@thinkpad / hgweb - GDB scripts: moved whitespace placeholder to a function; fixed alignment on multi-core models — alex@thinkpad / hgweb
- 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 - QEMU: CF bit in ClockEnable register — alex@thinkpad / hgweb
- backtrace: redirect debug messages to QEMU console, rather than discarding them — alex@thinkpad / hgweb
#168 (Sep 11, 2018 11:05:31 PM)
- QEMU: fix handling replies of duplicate MPU messages
(encountered in 80D, maybe others) — alex@thinkpad / hgweb - MPU spells: comment out photo capture from startup logs
(affects 450D and 1000D) — alex@thinkpad / hgweb
#167 (Sep 11, 2018 8:54:18 PM)
- 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
- QEMU tests: retry screenshots if there apparently was a successful match
followed by a (possibly transient) difference — alex@thinkpad / hgweb - QEMU tests: fixed some transient screenshots
(optional double-checking code to autodetect them) — alex@thinkpad / hgweb - 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 - GDB scripts: make sure all EOS models have CreateStateObject defined
(only test models with this string present in the ROM) — alex@thinkpad / hgweb - GDB scripts: make sure all models have register_func (RegisterEventProcedure) defined
Exception: Eeko. — alex@thinkpad / hgweb - QEMU: workaround for running GDB tests on 7D — alex@thinkpad / hgweb
- QEMU: fix 7D LED assertion — alex@thinkpad / hgweb
- QEMU tests: fix race condition when checking GDB scripts
(shared file) — alex@thinkpad / hgweb - GDB scripts: 800D comments, for consistency with other platforms — alex@thinkpad / hgweb
- GDB scripts: print "(null)" in other places where string arguments might be optional — alex@thinkpad / hgweb
#166 (Sep 10, 2018 10:46:56 PM)
- GDB scripts: 5D4 uses a new syntax for create_semaphore
(name is the third argument) — alex@thinkpad / hgweb - 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 - 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 - QEMU: disabled eos_handle_rom MMIO handlers
(unused, only triggered incorrectly on Eeko, where they caused a crash) — alex@thinkpad / hgweb - GDB scripts: fix pausing prompt on short terminals — alex@thinkpad / hgweb
- 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
#165 (Aug 25, 2018 3:09:54 PM)
- Minimal targets: only compile subdirectories with a valid Makefile — alex@thinkpad / hgweb
#164 (Aug 20, 2018 10:59:46 PM)
- QEMU tests: FA_CaptureTestImage works on 1300D
(prints "Image Power Failure", but the fix is not straightforward) — alex@thinkpad / hgweb - Makefile: when running "make install", copy ML-SETUP.FIR only for the generic profile
(not for minimal or other targets) — alex@thinkpad / hgweb - 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 - Minimal target: moved the Hello World example into its own directory and removed old platform folders — alex@thinkpad / hgweb
- Minimal targets: 5D3 1.1.3 hacks no longer needed — alex@thinkpad / hgweb
- GDB scripts: fix IDC names containing spaces — alex@thinkpad / hgweb
- QEMU: fix timeout in ImgPowDet emulation
(there were nondeterministic errors in the FRSP test) — alex@thinkpad / hgweb - 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
#163 (Aug 2, 2018 9:40:28 PM)
- QEMU tests: ignore nondeterministic screenshot on 6D
(may appear with or without free space) — alex@thinkpad / hgweb - GDB scripts: moved try_expand_ram_struct at the top — alex@thinkpad / hgweb
- GDB scripts: minor whitespace fix — alex@thinkpad / hgweb
- QEMU: ensure valid RAM address before executing EDMAC transfers
(EOS M fails here when running FA_CaptureTestImage) — alex@thinkpad / hgweb - QEMU: image sensor power emulation
(fixes FA_CaptureTestImage on 5D2; tested on all other models able to run the FRSP test) — alex@thinkpad / hgweb - QEMU: output dummy data (zeros) on read EDMAC connections
Fixes FA_CaptureTestImage on 700D and 650D. — alex@thinkpad / hgweb - qemu-frsp: fix compiling for 70D — alex@thinkpad / hgweb
- QEMU: allow reads to EDMAC CHSW registers
(required for FA_CaptureTestImage emulation on 6D and others) — alex@thinkpad / hgweb - 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 - QEMU: fix YUV vertical scaling for 1100D
(only the FRSP test uses it for now) — alex@thinkpad / hgweb - 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 - 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 - QEMU tests: handle models not yet in mainline
(FRSP and HPTimer tests are using this for now) — alex@thinkpad / hgweb - QEMU: updated gcc 7/8 patch for systems using virtio-9p — alex@thinkpad / hgweb
#162 (Jul 30, 2018 11:22:49 AM)
- QEMU: updated gcc 7.x patch to also work with gcc 8.x — alex@thinkpad / hgweb
- eos.c: fix gcc8 warnings — alex@thinkpad / hgweb
- Makefile: allow "make install*" without a FIR file
(for minimal targets and new platforms) — alex@thinkpad / hgweb
#161 (Jul 21, 2018 4:46:21 PM)
- QEMU logging: attempt to identify tail calls by default
(-d calls,notail to disable) — alex@thinkpad / hgweb - QEMU tests: updated for 200D 1.0.1 — alex@thinkpad / hgweb
- QEMU logging: moved IDC files into model subdirectories
(for consistency with romcpy shell files) — alex@thinkpad / hgweb - QEMU logging: fix typo when using -d romcpy
(output file path was not printed correctly) — alex@thinkpad / hgweb
#160 (Jul 20, 2018 11:05:37 PM)
- QEMU tests: initial support for 800D
(fixme: call trace not deterministic, same as 77D) — alex@thinkpad / hgweb - 800D: minor stub fixes in GDB script — alex@thinkpad / hgweb
- qemu: add 800D to model_list.c, and add 800D/debugmsg.gdb — ian douglas scott _ian@iandouglasscott.com_ / hgweb
#159 (Jun 26, 2018 1:14:56 AM)
- QEMU: experimental support for gdb-multiarch
(latest Ubuntu no longer has gdb-arm-none-eabi...) — alex@thinkpad / hgweb - QEMU install: minor fixes — alex@thinkpad / hgweb
- 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@thinkpad / hgweb - QEMU install: on older Ubuntu, gcc/gdb installation without package manager may be required — alex@thinkpad / hgweb
- QEMU install: minor fix for 32-bit Ubuntu
(option 3: no 64-bit gcc available) — alex@thinkpad / hgweb - QEMU installer: removed option to allow old 64-bit GDB
(hopefully no longer needed) — alex@thinkpad / hgweb - QEMU installer: minor fix regarding GDB installation
(force compiling from source if a valid 64-bit gdb is already installed) — alex@thinkpad / hgweb - 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@thinkpad / hgweb - QEMU install: there's no DISPLAY variable on Mac — alex@thinkpad / hgweb
- QEMU: better emulation for cache patches
(uninstalling works, at least for dm-spy-experiments) — alex@thinkpad / hgweb - QEMU: fix CPU0 labels incorrectly appearing in DIGIC 6 logs
(only DIGIC 7 should display these) — alex@thinkpad / hgweb - QEMU: moved ARM946EOS-specific functions (cache lockdown and WFI) from cpu.c to helper.c — alex@thinkpad / hgweb
#158 (May 21, 2018 1:22:35 AM)
- Minimal targets: CONFIG_QEMU no longer hardcoded in Makefile
(should be specified on the command line if desired) — alex@thinkpad / hgweb - 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 - QEMU: fix printing callstack from GDB scripts
(broken in 1834cd8) — alex@thinkpad / hgweb - GDB scripts: workaround for a crash occuring with 5D
(possibly GDB bug; can't explain why it works) — alex@thinkpad / hgweb
#157 (May 4, 2018 1:09:13 AM)
- qemu-frsp: fix compiling on lua_fix codebase
(1200D and soon all others) — alex@thinkpad / hgweb - QEMU: updated expected test results for 1200D 1.0.2
(no stubs changed in debugmsg.gdb) — alex@thinkpad / hgweb - QEMU: removed bogus/unused BGMT_ISO — alex@thinkpad / hgweb
- 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@thinkpad / hgweb - QEMU: fix compiling on 32-bit x86 hosts
Caveat: -d romcpy not working on x86 (requires int128_t) — alex@thinkpad / hgweb - QEMU README: initial notes on DIGIC 7 — alex@thinkpad / hgweb
#156 (Apr 30, 2018 10:47:59 AM)
- 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 - QEMU logging: initial support for DIGIC 7
(CPU0 only; exception vectors at nonzero address) — alex@thinkpad / hgweb - QEMU tests: ROM dumper needs larger timeout on slower computers; undo unwanted changes from cb93334 — alex@thinkpad / hgweb
#155 (Apr 30, 2018 12:24:32 AM)
- QEMU tests: fix expected results for restore after format after updating SD image — alex@thinkpad / hgweb
- 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 - QEMU: usleep patching no longer required on M3 — alex@thinkpad / hgweb
#154 (Apr 29, 2018 1:31:34 AM)
- QEMU: updated ROM dump tests to check SFDATA.BIN too
(currently only applies to DIGIC 6) — alex@thinkpad / hgweb - QEMU: updated SD image with latest display test
(changeset 9b37638) — alex@thinkpad / hgweb
#153 (Apr 28, 2018 11:29:42 PM)
- 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 - 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
#152 (Apr 28, 2018 2:53:18 PM)
- 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 - QEMU: reordered model definitions in model_list.c
(grouped by DIGIC version and similarity) — alex@thinkpad / hgweb - 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 - 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 - QEMU logging: -d romcpy now output a shell script for extracting the copied blocks — alex@thinkpad / hgweb
- QEMU: memfd patch to fix compilation with glibc 2.27
https://patchwork.openembedded.org/patch/147682/ — alex@thinkpad / hgweb - 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
#151 (Apr 21, 2018 11:03:11 PM)
- QEMU: updated CPU definition for DIGIC 7; renamed for older models and reverted the HIVECS property back to false — alex@thinkpad / hgweb
- QEMU tests: updated checksums for EOS M/M2 screenshots displaying date/time
(fix commit 8c575ef99b7f) — alex@thinkpad / hgweb - QEMU tests: updated checksum for a screenshot affected by transparency - commit 5b274e3
(Canon quirk - it's not even a LiveView screenshot) — alex@thinkpad / hgweb - annotate_mpu_log.py: allow incomplete mpu_send/recv lines
(such as the ones from 80D logs) — alex@thinkpad / hgweb - MPU spells: documented some AF-related properties — alex@thinkpad / hgweb
- GDB scripts: also identify and name PTP handlers — alex@thinkpad / hgweb
- 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 - 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@thinkpad / hgweb - QEMU: SRM_SetBusy/ClearBusy emulation for 5D3/6D/70D — alex@thinkpad / hgweb
- annotate_mpu_log.py: mark unknown MPU messages with ???
(this ensures all MPU messages are displayed to the terminal, including unknown ones) — alex@thinkpad / hgweb
#150 (Mar 24, 2018 3:30:06 PM)
- Menu: QEMU hack 90f702c no longer needed for EOS M/M2
(keeping changes to gui.h and button_codes.h) — alex@thinkpad / hgweb - 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@thinkpad / hgweb - 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@thinkpad / hgweb - QEMU: enabled MPU properties for EOS M (no more issues after LiveView emulation) — alex@thinkpad / hgweb
- 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@thinkpad / hgweb
#149 (Mar 18, 2018 8:59:25 PM)
- 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 - QEMU: experimental bitmap transparency support
(doesn't match the hardware exactly, but it's better than nothing) — alex@thinkpad / hgweb - 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 - 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 - QEMU: fix copy/paste error in HPTimer emulation
(no side effects) — alex@thinkpad / hgweb
#148 (Mar 13, 2018 9:06:57 PM)
- QEMU tests: large timeouts appear to help in some tricky cases
(such as mode switches, which may be slower than usual) — alex@thinkpad / hgweb - 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
#147 (Mar 13, 2018 7:42:37 PM)
- 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@thinkpad / hgweb
#146 (Mar 13, 2018 6:26:15 PM)
- MPU spells: identified some more properties while looking into the EOSM shutter bug
https://www.magiclantern.fm/forum/index.php?topic=21728.0 — alex@thinkpad / hgweb - 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 - QEMU: removed unnecessary assertion in interrupt controller
(triggered very rarely under "normal" conditions, but happens very often with io_trace) — alex@thinkpad / hgweb - QEMU tests: run the GDB test for 10 seconds
(these logs will be used for building the interrupt map) — alex@thinkpad / hgweb - QEMU: fix alignment of MMIO messages before starting tasks (-d io) — alex@thinkpad / hgweb
- 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 - GDB scripts: EOSM.202 stubs for logging properties
(related: af43d85) — alex@thinkpad / hgweb - annotate_mpu_log.py: fix handling logs with Windows newlines
https://www.magiclantern.fm/forum/index.php?topic=21728.msg198330#msg198330 — alex@thinkpad / hgweb
#145 (Mar 13, 2018 4:37:37 PM)
- 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 - 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
#142 (Mar 11, 2018 1:05:36 PM)
- QEMU: declared silent control events for 5D3
(not used; only for annotations) — alex@thinkpad / hgweb - MPU spells: found PROP_LV_APERTURE and PROP_SILENT_CONTROL_STATUS — alex@thinkpad / hgweb
- QEMU: declared internal zoom in/out events for 5D3
(they are sent by the MPU during GUI mode switches) — alex@thinkpad / hgweb - QEMU: fix LV button code for 5D3 — alex@thinkpad / hgweb
- annotate_mpu_log.py: more output options (to stdout, to file, auto rename) — alex@thinkpad / hgweb
- MPU spells: script to annotate logs with mpu_send/recv events
(known MPU messages moved to known_spells.py) — alex@thinkpad / hgweb - Makefile: fix "make install_qemu CONFIG_QEMU=y" for minimal targets — alex@thinkpad / hgweb
#141 (Feb 17, 2018 1:57:19 AM)
- QEMU: workaround to emulate io_trace
(without it, many MMIO events are missed, apparently because of QEMU's TLB cache) — alex@thinkpad / hgweb - NotifyBox: log messages to QEMU console — alex@thinkpad / hgweb
- GDB scripts: replaced *(int*)(x) with MEM(x)
(for consistency with other ML code, and maybe slightly easier to read) — alex@thinkpad / hgweb - 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
#140 (Feb 2, 2018 3:33:25 AM)
- run_ml_all_cams.sh: fix QEMU_DIR once more — alex@thinkpad / hgweb
#139 (Feb 2, 2018 2:09:03 AM)
- run_ml_all_cams.sh: fix QEMU_DIR — alex@thinkpad / hgweb
#138 (Feb 1, 2018 9:11:35 PM)
- Menu: hack to allow browsing ML menu on EOSM and EOSM2
(requires CONFIG_QEMU=y) — alex@thinkpad / hgweb - Merged makefile-updates into qemu
(also updated README regarding "make install_qemu" on modules) — alex@thinkpad / hgweb - 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@thinkpad / hgweb - Makefile: moved default QEMU directory to qemu-eos — alex@thinkpad / hgweb
- 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 - Makefile: also updated QEMU_INSTALLED_DBI_DIR to use QEMU_PATH — alex@thinkpad / hgweb
- Makefile: fix copy/paste error — alex@thinkpad / hgweb
- Makefile: fix cleaning up after "make zip"; removed warning — alex@thinkpad / hgweb
- Makefile: allow changing QEMU installation directory from Makefile.user and/or the environment
(QEMU_DIR) — alex@thinkpad / hgweb - Makefile: zip and install_qemu targets for modules — alex@thinkpad / hgweb
- Makefile: always clean after running install_check
http://www.magiclantern.fm/forum/index.php?topic=991.msg194444#msg194444 — alex@thinkpad / hgweb - Makefile: always rebuild version.o — alex@thinkpad / hgweb
- Makefile: prevent install_check from running in parallel with building regular ML
(conflicts while compiling from the same sources - http://www.magiclantern.fm/forum/index.php?topic=991.msg194315#msg194315 ) — alex@thinkpad / hgweb - GDB scripts: logging hook for prop_deliver — alex@thinkpad / hgweb
- 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@thinkpad / hgweb - QEMU installer: fine-tuned prompt when reinstalling — alex@thinkpad / hgweb
- QEMU: fix Q button handling on 550D, 600D, 1100D (to be tested) — alex@thinkpad / hgweb
- QEMU readme: table of contents; minor typos — alex@thinkpad / hgweb
- QEMU readme: GPIO section update — g3gg0 / hgweb
- dump_srec.py: updated to decode lens firmware updates (*.lfu)
http://www.magiclantern.fm/forum/index.php?topic=20969 — alex@thinkpad / hgweb - QEMU readme: misc updates (formatting, rephrasing); GPIO section — alex@thinkpad / hgweb
- QEMU installer: make it clear the script expects user input when it's asking whether to compile QEMU — alex@thinkpad / hgweb
- eject removes the disk image completely while unmount doesn't remove the disk image from /dev. — daniel fort _dan@digiola.com_ / hgweb
#137 (Jan 22, 2018 12:33:35 AM)
- reworked description of the peripherals — g3gg0 _g3gg0.de@gmail.com_ / hgweb
- QEMU install: fix mistakes — alex@thinkpad / hgweb
- QEMU readme: typos, formatting — alex@thinkpad / hgweb
- 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 - QEMU readme: some basic concepts related to how the DIGIC hardware works
(some parts adapted from https://jsandler18.github.io/ ) — alex@thinkpad / hgweb - 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 - QEMU: use 600D MPU messages for 1300D
fixes toggling drive mode, http://www.magiclantern.fm/forum/index.php?topic=17969.msg196013#msg196013 — alex@thinkpad / hgweb - 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 - 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 - QEMU install.sh: recent git no longer accepts empty identities
http://www.magiclantern.fm/forum/index.php?topic=20214.msg195892#msg195892 — alex@thinkpad / hgweb - QEMU scripts: removed hardcoded references to ../magic-lantern
and documented how the directories can be customized — alex@thinkpad / hgweb - QEMU readme: documented directory structure — alex@thinkpad / hgweb
#134 (Jan 7, 2018 5:49:18 PM)
- run_canon_fw.sh: hide osascript messages on Mac
(when trying to bring the QEMU window in foreground, but there isn't any) — alex@thinkpad / hgweb - QEMU install: keep the 64-bit gdb warning prompt on Mac and WSL (to be tested) — alex@thinkpad / hgweb
- 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 - QEMU install: fix path issue after compilation — alex@thinkpad / hgweb
- QEMU install: fix warning about lsb_release on Mac or other systems without it — alex@thinkpad / hgweb
- QEMU install: attempt to fix warnings about 64-bit GDB on Mac (to be tested) — alex@thinkpad / hgweb
- QEMU install: fine-tuned QEMU compilation, to be tested
(error handling, display the next steps after compilation finished) — alex@thinkpad / hgweb - QEMU install: on WSL and Mac, try the latest 64-bit toolchain (to be tested)
Linux installation still uses the 32-bit one (older version)
TODO: attempt to compile a 32-bit GDB for Mac
Reworded warnings, as a 32-bit GDB is now only needed for development;
it's no longer mandatory for running the examples, since http://www.magiclantern.fm/forum/index.php?topic=2864.msg190823#msg190823 — alex@thinkpad / hgweb
#133 (Jan 7, 2018 12:28:04 PM)
- QEMU install: on WSL and Mac, try the latest 64-bit toolchain (to be tested)
Linux installation still uses the 32-bit one (older version)
TODO: attempt to compile a 32-bit GDB for Mac
Reworded warnings, as a 32-bit GDB is now only needed for development;
it's no longer mandatory for running the examples, since http://www.magiclantern.fm/forum/index.php?topic=2864.msg190823#msg190823 — alex@thinkpad / hgweb - QEMU: simplified SFDMA mapping by removing model-specific redirection
(they are fairly consistent across all models) — alex@thinkpad / hgweb - 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 - QEMU: documented SD detect registers on recent DIGIC 5 models
(non-functional) — alex@thinkpad / hgweb - 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
#132 (Jan 7, 2018 1:58:40 AM)
- QEMU: fix 5D3 CF emulation
(disabled by default; can be enabled from mpu_spells/5D3.h) — alex@thinkpad / hgweb - QEMU: documented property groups ("complex" MPU messages)
including GDB logging hooks to find them — alex@thinkpad / hgweb - 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 - 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 - GDB scripts: generic logging hooks — alex@thinkpad / hgweb
- QEMU readme: example of identifying the location of an assertion using gdb and -d callstack; minor updates — alex@thinkpad / hgweb
#131 (Jan 5, 2018 8:20:49 PM)
- QEMU: updated 750D/760D GDB scripts and tests; file I/O works!
(using 750D SFDATA.BIN) — alex@thinkpad / hgweb - Merged in t3r4n/magic-lantern/qemu (pull request #894) — alex@thinkpad / hgweb
- QEMU: fix some MPU spells
(typos caught by automated checking) — alex@thinkpad / hgweb - Added the serial flash line for 750D and 760D into model_list. See https://www.magiclantern.fm/forum/index.php?topic=17627.msg195357#msg195357 — t3ra4n _24naret@gmail.com_ / hgweb
- QEMU readme: minor link updates — alex@thinkpad / hgweb
- QEMU readme: moved developer and reverse engineering notes to a new file
(reason: bitbucket seems to have trouble rendering large files) — alex@thinkpad / hgweb - 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 - 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 - QEMU readme: fix typos; minor updates — alex@thinkpad / hgweb
#130 (Jan 3, 2018 1:46:16 PM)
- 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 - QEMU: updated 80D test results for actual serial flash contents
http://www.magiclantern.fm/forum/index.php?topic=17360.msg195519#msg195519 — alex@thinkpad / hgweb
#129 (Jan 2, 2018 11:44:05 PM)
- QEMU readme: formatting — alex@thinkpad / hgweb
- QEMU readme: GDB scripting examples, including callstack — alex@thinkpad / hgweb
- QEMU readme: use em-dashes instead of simple dashes — alex@thinkpad / hgweb
- 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 - QEMU readme: moved the "Incorrect firmware version" section to Hacking
(it's no longer an issue for regular users) — alex@thinkpad / hgweb - QEMU readme: started to document the steps needed to emulate Canon GUI — alex@thinkpad / hgweb
- QEMU readme: minor updates, corrections — alex@thinkpad / hgweb
- 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 - QEMU: updated sd.img.xz with latest portable display test
(main change: fix identification of firmware version - 7889972) — alex@thinkpad / hgweb - GDB scripts: fix assert handling on EOS M10 — alex@thinkpad / hgweb
- QEMU: moved 7D2 patches to GDB scripts;
initial GDB script for 7D2 slave — alex@thinkpad / hgweb
#128 (Jan 1, 2018 10:36:25 PM)
- QEMU: defined FPGA memory regions for 5D2 and 50D
(just to prevent some warnings; nothing changed in functionality) — alex@thinkpad / hgweb - 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 - 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 - QEMU: refactored serial flash CS handling to reduce duplicate code
(moved CS register and tested value to model_list.c) — alex@thinkpad / hgweb
#126 (Dec 30, 2017 11:18:13 PM)
- 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
#125 (Dec 30, 2017 3:01:09 AM)
- 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
#124 (Dec 30, 2017 12:38:10 AM)
- 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 - 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 - Merged in t3r4n/magic-lantern/qemu_installer (pull request #893)
Further automation in install script to compile directly at the end. — alex _broscutamaker@gmail.com_ / hgweb
#123 (Dec 29, 2017 2:35:33 AM)
- QEMU: more MPU properties identified by brute-forcing — alex@thinkpad / hgweb
- QEMU: formatting fixes in extract_init_spells.py / known_spells.h — alex@thinkpad / hgweb
#122 (Dec 28, 2017 11:30:08 PM)
- QEMU: added property IDs to known MPU spells
also alternate names as comments — alex@thinkpad / hgweb - 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 - QEMU: experiment - brute-force MPU messages to find out their meaning — alex@thinkpad / hgweb
- 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 - 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 - 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 - QEMU install.sh: further Ubuntu/WSL cleanups (minor) — alex@thinkpad / hgweb
- QEMU install.sh: fine-tuned messages and date format when renaming an older installation — alex@thinkpad / hgweb
- Merged in t3r4n/magic-lantern/qemu_install_improvement (pull request #892)
Option to rename or delete existing QEMU directory during installation — alex _broscutamaker@gmail.com_ / hgweb - QEMU install.sh: WSL fixes
- checking for Ubuntu (uname -a does not report Ubuntu)
- hide 32-bit toolchain options — alex@thinkpad / hgweb - run_canon_fw.sh: Mac fixes
- use is_mounted (lsof checks are enough)
- typo in osascript when trying to bring QEMU window to front — alex@thinkpad / hgweb
#121 (Dec 24, 2017 1:11:25 AM)
- run_canon_fw.sh: fine-tuned checking of whether SD/CF image is in use
- use lsof to detect whether another process opened the SD/CF image for writing
- only allow multiple instances of QEMU if using -snapshot (read-only access to SD/CF image)
- check all results returned by losetup (note: lsof does not show whether the image is mounted)
- use alternate methods (grepping mount output) if losetup is not available
- to be tested/refined on Mac and Windows 10 WSL — alex@thinkpad / hgweb - QEMU: RTC workaround to bring back 400D GUI
(broken in 0d654a0, not covered by tests as it's very slow) — alex@thinkpad / hgweb
#120 (Dec 23, 2017 10:55:44 AM)
- QEMU: 40D GUI working!
- MPU RX register was read 8 bits at a time (other models so far used 16-bit reads)
- using 50D MPU spells
- button codes found with extract_button_codes.py, from existing ML port
- HotPlug: external monitor, USB, Toe, erase switch
- CFDMA: new channel, protocol tweaks, enabled interrupts
- Powersave workaround (GUI locked up after some seconds of inactivity, similar to 1300D) — alex@thinkpad / hgweb - QEMU: fix USB CONNECT on 450D/1000D
(incidentally, this also fixes the card format dialog on these cameras - likely UILock issue) — alex@thinkpad / hgweb
#119 (Dec 23, 2017 1:12:50 AM)
- 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 - 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
#118 (Dec 22, 2017 2:16:52 AM)
- QEMU: updated 80D tests for 1.0.2; DCIM test also works! — alex@thinkpad / hgweb
- QEMU: 80D file I/O support from main firmware
(experimental, tested with "dumpf" in the serial console) — alex@thinkpad / hgweb - QEMU: enable card support on generic MPU spells
(experimental, some models work better than others) — alex@thinkpad / hgweb
#116 (Dec 20, 2017 2:22:28 AM)
- GDB scripts: some experimental 80D patches, to be fixed in the emulation — alex@thinkpad / hgweb
- GDB scripts: log state object transitions
(stubs for 550D and 80D) — alex@thinkpad / hgweb - GDB scripts: 80D logging hooks for semaphores and message queues
(disabled by default; also updated assert_log for 1.0.2) — alex@thinkpad / hgweb - QEMU: RomRead DMA is actually XDMAC
(up to 4 channels; 80D only uses 2) — alex@thinkpad / hgweb
#114 (Dec 19, 2017 2:08:08 AM)
- 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 - QEMU tests: do not start if compilation fails
(small nitpick that could result in false test results) — alex@thinkpad / hgweb - QEMU: updated tests after b75e1342711a
(context info is now correctly printed when returning from msg_queue_receive, take_semaphore etc) — alex@thinkpad / hgweb - QEMU: generic MPU spells compatible with most EOS models (experimental) — alex@thinkpad / hgweb
- 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
#113 (Dec 18, 2017 4:14:25 AM)
- 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
#112 (Dec 17, 2017 3:12:06 AM)
- 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";
) | ./run_canon_fw.sh 80D -serial stdio — alex@thinkpad / hgweb - QEMU: refactored serial flash SIO handler with io_log — alex@thinkpad / hgweb
- 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 - 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 - QEMU: RomRead DMA for DIGIC 6, used for initializing property blocks
(very similar to regular DMA, slightly different register offsets) — alex@thinkpad / hgweb - 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 - 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 - 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
#111 (Dec 7, 2017 2:05:37 AM)
- MPU spells: some names could not be identified (fixed) — alex@thinkpad / hgweb
- QEMU tests: call mtools_setup.sh rather than duplicating its work
(fixes some tests failing if mtools is configured to use lowercase by default) — alex@thinkpad / hgweb - run_canon_fw.sh: 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 - run_canon_fw.sh: print camera name in QEMU window title — alex@thinkpad / hgweb
- run_canon_fw.sh: only clear the terminal if running in interactive mode
https://serverfault.com/questions/146745/how-can-i-check-in-bash-if-a-shell-is-running-in-interactive-mode — alex@thinkpad / hgweb - QEMU logging: always log unmapped memory regions — alex@thinkpad / hgweb
- GDB scripts: fix text alignment with "native" logging options (minor) — alex@thinkpad / hgweb
- QEMU install.sh: fix null byte warning when parsing model list
(bash 4.4 and newer? http://www.magiclantern.fm/forum/index.php?topic=2864.msg193118#msg193118 ) — alex@thinkpad / hgweb - QEMU install: print fewer help details after installation; link to the online documentation — alex@thinkpad / hgweb
- QEMU readme: formatting, typos — alex@thinkpad / hgweb
- QEMU readme: more info regarding custom SD/CF images — alex@thinkpad / hgweb
- QEMU readme: more ways to install ML to the virtual SD/CF images — alex@thinkpad / hgweb
- QEMU readme: note about "make install_qemu" not available in all branches — alex@thinkpad / hgweb
- QEMU readme: note about models using a serial flash — alex@thinkpad / hgweb
- QEMU README: minor updates to 050a3cc — alex@thinkpad / hgweb
- Merged unified into qemu — alex@thinkpad / hgweb
- Merged in makefile-updates (pull request #873)
Makefile updates to use any valid ARM toolchain — alex@thinkpad / hgweb - Makefile: fix 7D build_fir — alex@thinkpad / hgweb
- Makefile: fix building Lua with gcc 4.7.3 — alex@thinkpad / hgweb
- 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 - Card LED: always use CARD_LED_ADDRESS, LEDON and LEDOFF
(backed out 5bfab05 to fix installer on 7D - 0x800c00 not mandatory?) — alex@thinkpad / hgweb - 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 - 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 - Makefile: fix building xor_chk from its own directory — alex@thinkpad / hgweb
- Makefile: more .NOTPARALLEL fixes — alex@thinkpad / hgweb
- Makefile: fix 7D FIR path
(just for consistency) — alex@thinkpad / hgweb - 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 - 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 - 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 - Makefile: monitor wifi connection when using WIFI_SD=y
(experimental, helps troubleshooting connectivity issues) — alex@thinkpad / hgweb - Makefile: minor refactors for WIFI_SD (coding style)
also fixed a typo — alex@thinkpad / hgweb - Modules: better error handling for missing rst2html
http://www.magiclantern.fm/forum/index.php?topic=17099 — alex@thinkpad / hgweb - 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 - 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 - Makefile: do not print toolchain info on recursive calls — alex@thinkpad / hgweb
- 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 - 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 - Makefile: fix module_strings dependency rule
(previously, there was an error with make -j) — alex@thinkpad / hgweb - 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 - Makefile: fix "make clean" from modules directory with stale modules from other branches
https://bitbucket.org/hudson/magic-lantern/pull-requests/873/makefile-updates-to-use-any-valid-arm/diff#comment-48250675 — alex@thinkpad / hgweb - Makefile: fix running from other directory
e.g. from qemu: make -C ../magic-lantern/ 500D_install_qemu — alex@thinkpad / hgweb - Makefile: model-specific install targets for the root directory
examples: make 500D_install; make 500D_install_qemu — alex@thinkpad / hgweb - 7D: fix compiling with FEATURE_VIDEO_HACKS — alex@thinkpad / hgweb
- Makefile: fix building 7D_MASTER — alex@thinkpad / hgweb
- disable ASSERT for 7D_MASTER — g3gg0 / hgweb
- Feature matrix: updated links — alex@thinkpad / hgweb
- Merged in daniel_fort/magic-lantern/unified-6D-sf_dump (pull request #876)
Add 6D.116 to sf_dump module — alex _broscutamaker@gmail.com_ / hgweb - Added 6D.116 to sf_dump module. — daniel fort _dan@digiola.com_ / hgweb
- Merged in daniel_fort/magic-lantern/unified-600D-audio_meters_fix (pull request #877)
600D audio meters fix — alex _broscutamaker@gmail.com_ / hgweb - 600D also needs Audio IC turned on at boot. — daniel fort _dan@digiola.com_ / hgweb
#109 (Dec 1, 2017 10:18:52 PM)
- Merged makefile-updates into qemu — alex@thinkpad / hgweb
- Makefile: minor cleanups from 0b9b550 — alex@thinkpad / hgweb
- Makefile: backout 0b9b550
?= not needed when overriding from command-line, e.g. make CONFIG_QEMU=y — alex@thinkpad / hgweb - Makefile: always define CONFIG_$(MODEL)_$(FW_VERSION)
e.g. CONFIG_5D3_113, CONIFG_7D_203 and so on — alex@thinkpad / hgweb - Makefile: fix for GNU make 3.8.1
(thanks g3gg0) — alex@thinkpad / hgweb - Makefile: fix newline issue with WIFI_SD=y — alex@thinkpad / hgweb
#108 (Nov 11, 2017 1:00:48 PM)
- Merged makefile-updates into qemu — alex@thinkpad / hgweb
- Makefile: fix Mac issue (undefine not supported)
http://www.magiclantern.fm/forum/index.php?topic=2864.msg192847#msg192847 — alex@thinkpad / hgweb - fixed late evaluation issue in rule builder — g3gg0 / hgweb
- Makefile.platform.map: fix indentation — alex@thinkpad / hgweb
- run_canon_fw.sh: Mac compatibility fixes — alex@thinkpad / hgweb
- Makefile: rules for "make install_qemu"
(to use them, qemu has to be installed first) — alex@thinkpad / hgweb
#107 (Nov 11, 2017 4:02:20 AM)
- QEMU: 5D3 1.2.3 GUI works!
fixme: not covered by tests — alex@thinkpad / hgweb - 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 - 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 - QEMU: 6D GUI works!
- MPU log and serial flash from Audionut, https://bitbucket.org/hudson/magic-lantern/issues/1974/#comment-40853231
- 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 - 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 - QEMU tests: reordered (important, breaks often and/or very fast == runs earlier) — alex@thinkpad / hgweb
- 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
#105 (Nov 9, 2017 5:25:55 PM)
- 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
#104 (Nov 9, 2017 4:14:12 AM)
- 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 - 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 - 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
#103 (Nov 8, 2017 6:41:02 PM)
- QEMU tests/readme: recent netcat requires -N — alex@thinkpad / hgweb
- QEMU tests: one more race condition fix — alex@thinkpad / hgweb
#102 (Nov 8, 2017 5:41:41 AM)
- 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 - QEMU tests: more race condition fixes — alex@thinkpad / hgweb
- QEMU tests: attempt to fix some race conditions — alex@thinkpad / hgweb
- QEMU tests: minor fixes after refactoring — alex@thinkpad / hgweb
#101 (Nov 7, 2017 2:49:00 AM)
- 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 - 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
#100 (Nov 6, 2017 3:31:26 AM)
- 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 $TEST-foo.bar
- generic cleanup after each test
- top-level for loops kept; the loop body calls run_test — alex@thinkpad / hgweb - QEMU: make sure mtools prints uppercase filenames by default
(our tests assume this behavior, but some systems have different defaults) — alex@thinkpad / hgweb - Merged makefile-updates into qemu — alex@thinkpad / hgweb
- Makefile: with WIFI_SD=y, ping the card until it comes online (useful for router connections) — alex@thinkpad / hgweb
- Makefile: portable way to get number of processors — alex@thinkpad / hgweb
- further makefile cleanup, added make check to show which models were built and their memory usage — g3gg0 / hgweb
- fix 'all' target for models — g3gg0 / hgweb
- removed explicit make executable definition. allows to run e.g. 'remake' to debug make rules — g3gg0 / hgweb
- reworked model make rules to support different firmware versions for a model [to be thoroughly tested] — g3gg0 / hgweb
- disable ASSERT for 7D_MASTER — g3gg0 / hgweb
- Makefile: also print CONFIG overrides from command-line
(alongside the ones from Makefile.user) — alex@thinkpad / hgweb - Makefile: print tips for using make -j
(how to set it by default in Makefiles?) — alex@thinkpad / hgweb - Makefile: silence warning about CONFIG_SITE
(some recent Linux distros use it) — alex@thinkpad / hgweb - Makefile: portable way to get libgcc.a's path — alex@thinkpad / hgweb
- Makefile: removed old dropbox target — alex@thinkpad / hgweb
- Makefile: print build info after "make zip"; skip EXIDX line — alex@thinkpad / hgweb
- Makefile: fix CONFIG_CCACHE — alex@thinkpad / hgweb
- 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 - Makefile: if no valid ARM GCC is found in PATH, try to find one in the home directory — alex@thinkpad / hgweb
- Makefile: fix compiling tcc — alex@thinkpad / hgweb
- Makefile: moved toolchain setup to Makefile.setup
(this allows toolchain to be overridden from Makefile.user) — alex@thinkpad / hgweb - Makefile: fixes to allow compiling ML with Linaro arm-eabi-gcc; updated toolchain recommendations — alex@thinkpad / hgweb
- Makefile: updated toolchain recommendation; minor edits — alex@thinkpad / hgweb
- 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 - Makefile: use gcc 5.4.1 by default (current version from https://launchpad.net/gcc-arm-embedded ) — alex@thinkpad / hgweb
- QEMU: fix arrow unpress handling on cameras without UDLR (tested on EOSM) — alex@thinkpad / hgweb
- Merged in daniel_fort/magic-lantern/unified_650D_audio_meters_fix (pull request #870)
650D audio meters fix — alex _broscutamaker@gmail.com_ / hgweb - 650D has the same audio meters issue as the 700D -- needs the same fix. — daniel fort _dan@digiola.com_ / hgweb
- Merged in daniel_fort/magic-lantern/unified_700D_audio_meters_fix_1 (pull request #866)
Audio meters fix for 700D
Approved-by: Daniel Fort <dan@digiola.com> — alex _broscutamaker@gmail.com_ / hgweb - Audio meters stop functioning after recording the first clip when using mlv_snd. Easy fix suggested by a1ex. — daniel fort _dan@digiola.com_ / hgweb
#99 (Oct 24, 2017 12:40:38 AM)
- QEMU tests: replaced two slow grep commands with sed — alex@thinkpad / hgweb
- 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 - QEMU tests: refactored matching heuristic for call/return trace on main firmware
(rewritten in Python - much faster) — alex@thinkpad / hgweb
#98 (Oct 16, 2017 3:15:47 AM)
- QEMU install: brew docutils needs additional setup; just use the one from pip — alex@thinkpad / hgweb
- mtools_copy_ml.sh: removed dependency on realpath
(not available on Mac) — alex@thinkpad / hgweb - Makefile: fix compiling tcc — alex@thinkpad / hgweb
- QEMU install: Mac cleanups, to be tested
(xcode-select auto-installed by brew, docutils available as package) — alex@thinkpad / hgweb - Makefile: moved toolchain setup to Makefile.setup
(this allows toolchain to be overridden from Makefile.user) — alex@thinkpad / hgweb - run_canon_fw.sh: 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 - QEMU install: refuse to overwrite an existing installation — alex@thinkpad / hgweb
- 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
#97 (Oct 15, 2017 4:33:19 AM)
- QEMU install: we have gcc-arm-embedded:i386 on the PPA :) — alex@thinkpad / hgweb
- Makefile: fixes to allow compiling ML with Linaro arm-eabi-gcc; updated toolchain recommendations — alex@thinkpad / hgweb
- QEMU: patch for building with gcc 7.x — alex@thinkpad / hgweb
- 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
#96 (Oct 9, 2017 5:10:46 AM)
- 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 - QEMU: typo when loading raw images for capture emulation — alex@thinkpad / hgweb
- MPU spells: identified some lens properties (PROP_LENS and PROP_LENS_NAME) — alex@thinkpad / hgweb
- MPU spells: identify property description for Complete WaitID messages — alex@thinkpad / hgweb
- 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 - MPU spells: identified PROP_BATTERY_CHECK
(verified before dialogs such as card format or firmware update) — alex@thinkpad / hgweb - QEMU: print names of MPU spells (exported from extract_init_spells.py)
and highlight the ones without name or without known behavior — alex@thinkpad / hgweb - MPU spells: documented a bunch of properties and updated their indexing
(some trial and error, others copied from http://www.magiclantern.fm/forum/index.php?topic=17596.0 ) — alex@thinkpad / hgweb - QEMU: handle INFO unpress event (for 5D3) — alex@thinkpad / hgweb
- QEMU: generate valid dark frames if a CR2 isn't available — alex@thinkpad / hgweb
- QEMU: allow full-res 14-bit data from any format readable by dcraw
(usually CR2 and DNG; example in README) — alex@thinkpad / hgweb - QEMU: use <%d> for EDMAC connections in debug messages
(e.g. connection <5>, channel #16) — alex@thinkpad / hgweb - QEMU: moved image processing engine functions to separate file
(EDMAC, PREPRO, JPCORE...) — alex@thinkpad / hgweb - make install_qemu: check whether sd.img or cf.img is mounted before copying files — alex@thinkpad / hgweb
- run_canon_fw.sh: 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
#95 (Oct 3, 2017 2:15:35 AM)
- QEMU: updated 600D test to include the info screen
(had to enable it in Canon menu) — alex@thinkpad / hgweb - QEMU: disabled sensor cleaning animation on 5D2, 50D, 60D
(interferes with ML menu; updated tests) — alex@thinkpad / hgweb - QEMU: warn user when shutdown is not clean — alex@thinkpad / hgweb
- QEMU: updated 100D menu test to show all menus (including the FlexiZone AF setting) — alex@thinkpad / hgweb
- QEMU: run 100D with FlexiZone AF enabled (this setting results in ML crashing at startup)
http://www.magiclantern.fm/forum/index.php?topic=16040.msg190934#msg190934 — alex@thinkpad / hgweb - 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
#94 (Oct 1, 2017 1:02:06 PM)
- 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 - QEMU install: updated regex for parsing GUI_CAMS from run_tests.sh
(to allow multi-line declaration) — alex@thinkpad / hgweb
#93 (Oct 1, 2017 3:14:43 AM)
- QEMU tests: 100D typo
(old file) — alex@thinkpad / hgweb - 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 - QEMU: 5D2/50D RTC patch from g3gg0
(date/time dialog is history!) — alex@thinkpad / hgweb - QEMU: updated README — alex@thinkpad / hgweb
- QEMU: enabled PROP_MPU_GPS on all DIGIC 5 models — alex@thinkpad / hgweb
- QEMU: EOS M boots the GUI!
(it also needs the GPS patch - moved to GPS.h) — alex@thinkpad / hgweb - QEMU: updated tests
(after RTC emulation, I2C and patches cleanup) — alex@thinkpad / hgweb - GDB scripts: date/time patches no longer needed! — alex@thinkpad / hgweb
- QEMU: reworked I2C debug messages — alex@thinkpad / hgweb
- QEMU: updated MMIO highlighting code
(module name is now highlighted as well - easier to spot) — alex@thinkpad / hgweb - QEMU: moved RTC emulation to its own handler; reworked debug messages — alex@thinkpad / hgweb
- QEMU: enabled RTC emulation for most models
exceptions: 5D2 and 50D appear to use a different chip or method — alex@thinkpad / hgweb - QEMU: RTC patch from g3gg0
5D3 and 60D no longer show the date/time screen! — alex@thinkpad / hgweb - QEMU: I2C patch from g3gg0 — alex@thinkpad / hgweb
- 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
#92 (Sep 30, 2017 2:00:20 AM)
- QEMU install: don't install two toolchains if user selects 64-bit GDB — alex@thinkpad / hgweb
#91 (Sep 29, 2017 6:41:43 PM)
- QEMU install: libnewlib-arm-none-eabi is architecture-independent — alex@thinkpad / hgweb
- QEMU install: download toolchain from launchpad and use developer.arm.com as mirror
(developer.arm.com is currently down, hopefully not from our experiments) — alex@thinkpad / hgweb - 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) - https://unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path — alex@thinkpad / hgweb - QEMU install: 32-bit Mac toolchain doesn't have gdb... — alex@thinkpad / hgweb
- QEMU install: wrong quotes — alex@thinkpad / hgweb
- QEMU install: fix some copy/paste errors — alex@thinkpad / hgweb
- QEMU install: allow using the current 64-bit toolchain on Ubuntu; minor fixes — alex@thinkpad / hgweb
- QEMU install: more toolchain options (experimental)
- Mac: try the toolchain from https://acroname.com/software/arm-eabi-gcc-toolchain-mac-osx-macos-x-32bit (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 - 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 _broscutamaker@gmail.com_ / hgweb - QEMU install: remove docutils install for macOS — christophe francey _kichetof@gmail.com_ / hgweb
- QEMU install: elegant way to install packages on macOS
Checks if the package is already installed otherwise install it — christophe francey _kichetof@gmail.com_ / hgweb - 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 - QEMU install: pip does not require sudo — alex@thinkpad / hgweb
- QEMU install: fix for dpkg -l also returning non-installed packages
https://wiki.debian.org/ListInstalledPackages — alex@thinkpad / hgweb - 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 - QEMU install: pip recommends sudo -H
https://stackoverflow.com/questions/27870003/pip-install-please-check-the-permissions-and-owner-of-that-directory — alex@thinkpad / hgweb - QEMU install: also set up the toolchain for compiling ML (Ubuntu) — alex@thinkpad / hgweb
- QEMU install: typo — alex@thinkpad / hgweb
- Makefile: updated toolchain recommendation; minor edits — alex@thinkpad / hgweb
- 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 - 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 - QEMU install: gcc-arm-embedded try #5 — alex@thinkpad / hgweb
- QEMU install: gcc-arm-embedded try #4 — alex@thinkpad / hgweb
- QEMU install: gcc-arm-embedded try #3 — alex@thinkpad / hgweb
- QEMU install: gcc-arm-embedded try #2 — alex@thinkpad / hgweb
- QEMU install: let's try gcc-arm-embedded from PPA — alex@thinkpad / hgweb
- Merged in kichetof/magic-lantern-1/kichetof/qemu-check-if-brew-is-installed-on-macos-1506424463270 (pull request #860)
also included this suggestion: https://bitbucket.org/hudson/magic-lantern/commits/a24f36e36ea4b27a3c86b8e77e70b49cf4e04fea#comment-5261641 — alex@thinkpad / hgweb - QEMU: check if brew is installed on macOS — christophe francey _kichetof@gmail.com_ / hgweb
- Makefile: use gcc 5.4.1 by default (current version from https://launchpad.net/gcc-arm-embedded ) — alex@thinkpad / hgweb
- QEMU install: more Mac patches (not tested)
from http://www.magiclantern.fm/forum/index.php?topic=16012.msg190369#msg190369 — alex@thinkpad / hgweb - QEMU install: also install docutils and vncdotool — alex@thinkpad / hgweb
- QEMU install: verbosity fine-tuning — alex@thinkpad / hgweb
- QEMU: minor README updates — alex@thinkpad / hgweb
- QEMU: README formatting — alex@thinkpad / hgweb
- QEMU: README formatting — alex@thinkpad / hgweb
- QEMU: updated install instructions in README — alex@thinkpad / hgweb
- QEMU install: arm-none-eabi-gdb requires 32-bit libraries on Ubuntu — alex@thinkpad / hgweb
- QEMU: set up arm-none-eabi-gdb from the install script — alex@thinkpad / hgweb
- QEMU: auto-install dependencies if running on Ubuntu-based systems (to be tested) — alex@thinkpad / hgweb
- QEMU: some Mac patches for install script (not tested)
http://www.magiclantern.fm/forum/index.php?topic=16012.msg190369#msg190369 — alex@thinkpad / hgweb - QEMU: ggrep patch for Mac from kichetof
http://www.magiclantern.fm/forum/index.php?topic=16012.msg190396#msg190396 — alex@thinkpad / hgweb - QEMU: supply an email address for git if the default doesn't work
http://www.magiclantern.fm/forum/index.php?topic=16012.msg190409#msg190409 — alex@thinkpad / hgweb
#90 (Sep 24, 2017 4:34:11 AM)
- QEMU tests: M3 display test, using DISKBOOT.BIN from Ant123
(also test other PowerShot models to see whether they are loading DISKBOOT.BIN from the card) — alex@thinkpad / hgweb - QEMU: EOS M3 display support from Ant123 (using a custom CHDK build) — alex@thinkpad / hgweb
- QEMU README: Bitbucket doesn't resize the images... — alex@thinkpad / hgweb
- QEMU README: let's try some screenshots — alex@thinkpad / hgweb
- QEMU: more README updates
- shutdown notes (system_powerdown vs quit)
- rewritten QEMU monitor section
- how to bypass the date/time dialog — alex@thinkpad / hgweb - QEMU: minor improvements to README — chris miller _chris.nz@gmail.com_ / hgweb
- QEMU: README updates
- shutdown and reboot
- running from physical card
- menu navigation (keys)
- misc notes, minor typos — alex@thinkpad / hgweb
#89 (Sep 22, 2017 7:40:12 PM)
- QEMU: 1000D GUI works too
(based on 450D) — alex@thinkpad / hgweb - QEMU: stretch display vertically on VxWorks models
(double all lines to get correct aspect ratio) — alex@thinkpad / hgweb - QEMU: emulate JUMP and Direct Print buttons (for VxWorks models) — alex@thinkpad / hgweb
- Backout 89254290c3f7
(shutdown only works only when not activating Canon menu, with or without this patch) — alex@thinkpad / hgweb
#88 (Sep 22, 2017 12:47:39 PM)
- 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 - QEMU: print whether available keys are press-only or they also send unpress events — alex@thinkpad / hgweb
- QEMU: re-created 70D MPU spells; shutdown working — alex@thinkpad / hgweb
- QEMU: shutdown working on most models able to start the GUI (all but 70D) — alex@thinkpad / hgweb
- minimal targets: removed old references to qemu-util — alex@thinkpad / hgweb
- QEMU tests: always stop GDB when QEMU quits — alex@thinkpad / hgweb
- QEMU tests: updated to handle shutdown and reboot
(shutdown test after menu navigation, reboot test when formatting card and restoring ML) — alex@thinkpad / hgweb - QEMU: handle PROP_ABORT (after opening battery door)
fixme: it doesn't shutdown, figure out why — alex@thinkpad / hgweb - QEMU: handle the powerdown event
(menu: Machine -> Power Down) — alex@thinkpad / hgweb - QEMU: experimental shutdown handling (card door and power switch) — alex@thinkpad / hgweb
- reloc.c: cleaned up ifdef's — alex@thinkpad / hgweb
- QEMU: minor README update
(ML menu now working on all models able to boot the GUI) — alex@thinkpad / hgweb - 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 - QEMU: experimental Av button handling for Rebel cameras
(fixme: has some side effects, such as changing the displayed shutter speed) — alex@thinkpad / hgweb - QEMU: don't auto-repeat keys, except for scrollwheels — alex@thinkpad / hgweb
- QEMU: also allow right shift for half-shutter — alex@thinkpad / hgweb
- QEMU: handle the FUNC button (for 50D menu navigation) — alex@thinkpad / hgweb
- Merged unified into qemu — alex@thinkpad / hgweb
- QEMU: updated 700D to 1.1.5 (GDB scripts and menu tests) — alex@thinkpad / hgweb
- QEMU: README updates — alex@thinkpad / hgweb
- installer: fix compilation — alex@thinkpad / hgweb
- Merged in daniel_fort/magic-lantern/update-to-700D.115 (pull request #813)
Update to 700D.115 — alex@thinkpad / hgweb - 700D: fix AbortEDmac — alex@thinkpad / hgweb
- Dummy merge with dfort's unified — alex@thinkpad / hgweb
- 700D, 6D, 7D: fix AbortEDmac — alex@thinkpad / hgweb
- 700D: undo dialog_refresh_timer change in mlv_rec/mlv_lite
(this address is the same in 1.1.4 and 1.1.5) — alex@thinkpad / hgweb - Update sf_dump module to 700D.115 — daniel fort _dan@digiola.com_ / hgweb
- Fixed is_taskid_valid stub. — daniel fort _dan@digiola.com_ / hgweb
- Merged unified into update-to-700D.115 — daniel fort _dan@digiola.com_ / hgweb
- Added minimal autoexec.bin for 700D — daniel fort _dan@digiola.com_ / hgweb
- Merged unified into update-to-700D.115 — daniel fort _dan@digiola.com_ / hgweb
- Merged unified into update-to-700D.115 — daniel fort _dan@digiola.com_ / hgweb
- Incorporated pull request #842 to fix Autoexposure module — daniel fort _dan@digiola.com_ / hgweb
- Merged unified into update-to-700D.115 — daniel fort _dan@digiola.com_ / hgweb
- Resolve conflicts with changes to Task info in stubs.S — daniel fort _dan@digiola.com_ / hgweb
- Merged unified into update-to-700D.115 — daniel fort _dan@digiola.com_ / hgweb
- Added new ML-SETUP.FIR created by a1ex — daniel fort _dan@digiola.com_ / hgweb
- update to firmware revision 700D.115 — daniel fort _dan@digiola.com_ / hgweb
- hg rename 700D.114 700D.115 — daniel fort _dan@digiola.com_ / hgweb
- Merged hudson/unified into unified to prevent new remote heads. — daniel fort _dan@digiola.com_ / hgweb
- Update to latest exiftool — daniel fort _dan@digiola.com_ / hgweb
#87 (Sep 14, 2017 2:54:39 AM)
- QEMU: initial README draft — alex@thinkpad / hgweb
- Makefile: "make install_qemu" for platform targets;
updated run_ml_all_cams.sh to use it — alex@thinkpad / hgweb - qemu-util: qprintf requires stdarg.h (when not included from dryos.h) — alex@thinkpad / hgweb
#86 (Sep 13, 2017 6:52:28 PM)
- Makefile: allow using CONFIG_QEMU for modules (qprintf and related functions) — alex@thinkpad / hgweb
- Makefile: allow overriding CONFIG_* options on the command line
e.g. make CONFIG_QEMU=y
(suggestion from g3gg0) — alex@thinkpad / hgweb - qemu-util: make the QEMU debugging API header-only — alex@thinkpad / hgweb
- console include qemu-util.h is no longer needed — alex@thinkpad / hgweb
- menu: removed QEMU workaround (no longer needed - GUI mode switch works on most models) — alex@thinkpad / hgweb
- QEMU: workaround for invalidating executable code after ROM patches
fixme: this should be handled internally by QEMU; not sure why it isn't
to reproduce: register_interrupt hook on dm-spy-experiments branch, with hooks enabled right after Canon's init task
(the hook will fail on models where this function is in ROM, e.g. 550D, but will succeed if it's in RAM, e.g. 5D3) — alex@thinkpad / hgweb
#84 (Sep 12, 2017 9:33:44 PM)
- Raw backend: some more debug messages
(useful for qemu-frsp tests) — alex@thinkpad / hgweb - QEMU tests: reworked FA_CaptureTestImage test:
- enabled debugmsg in the main log; moved UART output to a new file
- run until FA_CaptureTestImage Fin appears in the UART log
- also check models with no display (from the UART log) — alex@thinkpad / hgweb
#83 (Sep 12, 2017 3:32:52 AM)
- qemu-frsp: fix compilation — alex@thinkpad / hgweb
- Merged unified into qemu — alex@thinkpad / hgweb
- QEMU tests: FA_CaptureTestImage test also working on 50D, 500D, 550D and - without display - on 1100D — alex@thinkpad / hgweb
- qemu-frsp: use CONFIG_QEMU to enable debug messages from raw.c — alex@thinkpad / hgweb
- qemu-util: removed old experiments
(kept the initial hello world for historical purposes) — alex@thinkpad / hgweb - Raw backend: print to QEMU console if compiled with CONFIG_QEMU=y
(without enabling RAW_DEBUG) — alex@thinkpad / hgweb - qemu-frsp: fix compiling on 500D, 5D2 and 50D — alex@thinkpad / hgweb
- memcheck: check malloc heap in the same way as AllocateMemory (500D only for now) — alex@thinkpad / hgweb
- memcheck: option to identify uninitialized memory accesses in main firmware
that could be exploited from bootloader — alex@thinkpad / hgweb - memcheck: fix operation on DIGIC 6 — alex@thinkpad / hgweb
- memcheck: fix operation without ML memcpy — alex@thinkpad / hgweb
- QEMU: tests for memchk, from minimal ML
(not all of them are passing) — alex@thinkpad / hgweb - qemu-hptimer: CONFIG_INSTALLER no longer needed — alex@thinkpad / hgweb
- 7D: fix minimal targets (no LEDON/LEDOFF on this model though) — alex@thinkpad / hgweb
- Merged in daniel_fort/magic-lantern/unified_silent_module_fix (pull request #854)
modify silent.c to work with commit f404e5f — alex@thinkpad / hgweb - TCC Makefile: fix minor typo — alex@thinkpad / hgweb
- silent.c: there are no info bars in paused LiveView mode — alex@thinkpad / hgweb
- modify silent.c to work with commit f404e5f
Raw backend: allow displaying raw previews without conflicting with LiveView info bars — daniel fort _dan@digiola.com_ / hgweb - GDB scripts: register_interrupt on all models (with test) — alex@thinkpad / hgweb
- GDB scripts: removed duplicate code between */debugmsg.gdb and */patches.gdb
(if patches.gdb is present, debugmsg.gdb will always include it)
(also moved 1300D patch to separate file) — alex@thinkpad / hgweb - GDB scripts: disabled slow items by default
(semaphores, message queues, MPU communication, ResLock, EDMAC) — alex@thinkpad / hgweb - GDB scripts: symbol-file commands to get debugging symbols from ML (commented out)
todo: auto-enable when autoexec.bin is executed? — alex@thinkpad / hgweb - Merged in raw_fixes (pull request #828)
Raw fixes part 5 — alex _broscutamaker@gmail.com_ / hgweb - fio-ml: added get_dcim_dir_suffix(); moved get_dcim_dir() from dryos.h — alex@thinkpad / hgweb
- mlv_rec/mlv_lite: moved write_mlv_vers_blocks to mlv.c/h
(avoids duplicate code) — alex@thinkpad / hgweb - mlv_play: fix a fio_malloc issue (not tested, might fix issue #2766) — alex@thinkpad / hgweb
- Merged in raw_capture_info (pull request #827) — alex@thinkpad / hgweb
- mlv_dump: fix compilation after rawc header update — alex@thinkpad / hgweb
- 5D3 1.2.3: fix CARD_A_MAKER (off by one) — alex@thinkpad / hgweb
- mlv_lite: always override (toggle) the preview mode on *long* half-shutter press, when not autofocusing
(avoids transient screen changes on quick half-shutter presses) — alex@thinkpad / hgweb - mlv_lite: preview both full-size buffers while recording
(to catch future bugs that might cause the raw buffer to update every other frame) — alex@thinkpad / hgweb - Raw backend: exact height autodetection for 5D3
(lossless 8-12 bit compression works!) — alex@thinkpad / hgweb - mlv_lite: fix shutter button remaining locked after recording with Frozen LV
(problem from exmem backend; not sure how to do a proper fix) — alex@thinkpad / hgweb - mlv_lite: slow down color preview to let lower-priority tasks run (such as histogram) — alex@thinkpad / hgweb
- FPS override: disable in x10 mode when half-shutter is pressed, to help with focusing
(example setup: full-res LiveView, FPS override at 4 FPS for continuous recording, zoom on half-shutter) — alex@thinkpad / hgweb - FPS override: display rolling shutter in the main menu when available
(either when raw recording is enabled or while recording H.264)
(useful for diagnosing the new crop modes) — alex@thinkpad / hgweb - FPS override: also display rolling shutter as percentage of frame duration — alex@thinkpad / hgweb
- mlv_lite: do not print debug info when freezing LiveView
(seems to help with corrupted frames in modes with resolution pushed to limit, e.g. 1080p48) — alex@thinkpad / hgweb - Include strstr in ML core — alex@thinkpad / hgweb
- mlv_lite: fix squeeze info in menu for 50/60p modes — alex@thinkpad / hgweb
- mlv_lite: display actual aspect ratio in menu, if different from selection — alex@thinkpad / hgweb
- raw_rec: fix some resolution inconsistencies — alex@thinkpad / hgweb
- mlv_lite: fine-tuned menu for Frozen LV mode
(previously known as Hacked Preview) — alex@thinkpad / hgweb - mlv_lite: reworked preview options with (hopefully) a lot more reasonable defaults
- color preview with correct framing whenever plain LiveView is not accurate (crop/zoom modes etc)
- only use grayscale preview when recording speed is critical
- renamed the preview options
- half-shutter to override the automatic preview choice
(note: slot_count is valid_slot_count in compressed_raw) — alex@thinkpad / hgweb - Raw backend: allow displaying raw previews without conflicting with LiveView info bars;
updated mlv_rec and mlv_lite to use this capability — alex@thinkpad / hgweb - mlv_rec, mlv_lite: fix rawc saving after structure update in mlv.h — alex@thinkpad / hgweb
- Fix c6f92ee — alex@thinkpad / hgweb
- mlv_rec, mlv_lite: save RAWC (raw_capture_info) — alex@thinkpad / hgweb
- Raw backend: fix raw_capture_info.skipping_y for EOS M
(720p unless recording H.264) — alex@thinkpad / hgweb - mlv.h: replaced struct raw_capture_info with individual fields
(binary compatible with previous version) — alex@thinkpad / hgweb - raw_capture_info: redefined offset_x and offset_y to refer to first (top-left) *active* pixel
that way, optical black variations between formats (e.g. CR2 vs FRSP) are no longer relevant — alex@thinkpad / hgweb - mlv_dump: show the meaning of sensor crop factor — alex@thinkpad / hgweb
- mlv_rec, mlv_lite: fix minor crop factor display issue
(division by 0 in photo mode) — alex@thinkpad / hgweb - mlv_rec, mlv_lite: save RAWC (raw_capture_info) — alex@thinkpad / hgweb
- mlv_dump: print RAWC (raw_capture_info) — alex@thinkpad / hgweb
- mlv.h: RAWC block (struct raw_capture_info) — alex@thinkpad / hgweb
- Raw backend: new CBR for modules (CBR_RAW_INFO_UPDATE) — alex@thinkpad / hgweb
- Raw backend: new structure about image capture parameters (resolution, pixel binning modes)
(also updated mlv_lite and mlv_rec)
(can you suggest a better name?) — alex@thinkpad / hgweb - get_current_dialog_handler: fix return value when no dialogs are present — alex@thinkpad / hgweb
- fix rules to allow "make -j" — g3gg0 / hgweb
- Merged in edmac (pull request #811)
EDMAC module + fixes — alex _broscutamaker@gmail.com_ / hgweb - edmac-memcpy: fix compilation — alex@thinkpad / hgweb
- Merged unified into edmac — alex@thinkpad / hgweb
- edmac.mo: fine-tuned transfer size info — alex@thinkpad / hgweb
- selftest: AbortEDmac test — alex@thinkpad / hgweb
- selftest: edmac_memcpy test — alex@thinkpad / hgweb
- edmac.mo: transfer size test — alex@thinkpad / hgweb
- edmac-memcpy: use and decode transfer size from flags (to be tested) — alex@thinkpad / hgweb
- edmac_test: proper memory allocation — alex@thinkpad / hgweb
- edmac-memcpy: updated edmac_find_divider for latest hypothesis — alex@thinkpad / hgweb
- edmac_memcpy: looks like we can use widths that are not modulo 8 bytes — alex@thinkpad / hgweb
- edmac-memcpy: refactored edmac_memcpy to avoid duplicate code — alex@thinkpad / hgweb
- AbortEDmac stub for 500D, 550D, 5D2, 50D, 7D (not tested) — alex@thinkpad / hgweb
- edmac.mo: fix model-specific differences — alex@thinkpad / hgweb
- edmac.mo: in EDMAC model tests, print a summary of copying activity
(how many bytes were copied, how many were skipped and so on)
(this test outputs the raw logs used to find the EDMAC model - http://www.magiclantern.fm/forum/index.php?topic=18315.0 ) — alex@thinkpad / hgweb - edmac.mo: tests for EDMAC model (to be included in QEMU) — alex@thinkpad / hgweb
- AbortEDmac stub for 5D3 1.2.3 — alex@thinkpad / hgweb
- edmac.c: fix typo — alex@thinkpad / hgweb
- Merged unified into edmac — alex@thinkpad / hgweb
- EDMAC: fix signed off2 on DIGIC 4 — alex@thinkpad / hgweb
- Merged in backtrace (pull request #849)
Stack trace (aka backtrace) in crash logs — alex _broscutamaker@gmail.com_ / hgweb - Close branch backtrace — alex _broscutamaker@gmail.com_ / hgweb
- selftest: fix incorrect strings (AllocateMemory != system memory) — alex@thinkpad / hgweb
- edmac.mo: experiment - log all EDMAC channels every 0.1ms — alex@thinkpad / hgweb
- edmac.mo: show offset 0x40 on the info screen — alex@thinkpad / hgweb
- edmac: edmac_get_channel — alex@thinkpad / hgweb
- edmac: there are more than 48 connections (not sure how many) — alex@thinkpad / hgweb
- Modules: allow including module.h in multiple source files
(fixes compilation of edmac.mo) — alex@thinkpad / hgweb - Modules: removed some unused definitions — alex@thinkpad / hgweb
- edmac.h: allow edmac_format_size to be called from core (of course, if the edmac module is loaded) — alex@thinkpad / hgweb
- bench.mo: use microsecond timer for memory benchmarks — alex@thinkpad / hgweb
- bench.mo: verify memcpy-like functions when running memory benchmark — alex@thinkpad / hgweb
- edmac-memcpy.c: refactored to avoid static struct edmac_info — alex@thinkpad / hgweb
- Rewritten find_free_edmac_channels so it no longer requires user input — alex@thinkpad / hgweb
- Moved find_free_edmac_channels to the edmac module — alex@thinkpad / hgweb
- Moved EDMAC info screen and pretty-printing function to a module — alex@thinkpad / hgweb
- edmac: pretty-printing function for size configuration (edmac_format_size)
auxiliary functions: edmac_get_info, edmac_fix_off1
also updated debug edmac info with the new function — alex@thinkpad / hgweb - edmac: edmac_get_pointer; comments — alex@thinkpad / hgweb
- edmac: experimental model for total data transfer size — alex@thinkpad / hgweb
- Enabled AbortEDmac stub (most models; not tested) — alex@thinkpad / hgweb
- stub-cleanup.py: support for uncommenting unused stubs; minor refactors — alex@thinkpad / hgweb
- Stubs format — alex@thinkpad / hgweb
#82 (Sep 10, 2017 3:30:59 PM)
- QEMU: always load camera-specific files from CAM/ or CAM/FW/ (refactored to avoid duplicate code) — alex@thinkpad / hgweb
- QEMU tests: updated menu test for 70D 1.1.2 — alex@thinkpad / hgweb
#79 (Sep 10, 2017 2:09:19 AM)
- QEMU tests: updated 70D needles (expected results) for 1.1.2 — alex@thinkpad / hgweb
- QEMU tests: allow camera models as arguments — alex@thinkpad / hgweb
- QEMU: with -d exec, make sure the instructions aren't printed twice — alex@thinkpad / hgweb
#78 (Aug 8, 2017 2:50:53 AM)
- QEMU tests: very basic Dry-shell test — alex@thinkpad / hgweb
- QEMU: experimental UART support in main firmware
(Dry-shell working on all DIGIC 4 and 5 models) — alex@thinkpad / hgweb - QEMU: option to highlight certain MMIO registers
(requires editing the source code) — alex@thinkpad / hgweb - QEMU: option to export MMIO reads as dm-spy entries (dm-spy-experiments branch)
this allows cross-checking the values with the ones from actual hardware
usage:
- ./run_canon_fw.sh 5D3 [...] -d io,nochain -singlestep
- copy/paste some entries into dm-spy-extra.c (grep for mmio_log to find them)
- get logs from both camera and QEMU (dm-spy-experiments branch, CONFIG_DEBUG_INTERCEPT_STARTUP=y, maybe also CONFIG_QEMU=y)
- adjust the emulation until the logs match — alex@thinkpad / hgweb
#77 (Aug 6, 2017 11:12:16 AM)
- QEMU: require verbose (e.g. -d io,int,verbose) to show DryOS timer interrupts and DIGIC timer — alex@thinkpad / hgweb
- QEMU: incomplete 5D3 1.2.3 GUI (boots with black screen, no menus) — alex@thinkpad / hgweb
#76 (Aug 6, 2017 3:47:59 AM)
- QEMU logging: option to identify tail function calls (heuristic) — alex@thinkpad / hgweb
- QEMU tests: trimming should work now — alex@thinkpad / hgweb
- QEMU tests: trimming must be done on useful lines, not on raw input lines
(otherwise the test will be sensitive to any additional info in the raw log) — alex@thinkpad / hgweb - QEMU tests: call/return trace tests first
(they are more likely to fail or require frequent updates) — alex@thinkpad / hgweb - QEMU tests: include interrupts in main firmware call/return test
(this allows counting related stats from the filtered log - smaller) — alex@thinkpad / hgweb - QEMU tests: use ansi2txt only once in the main firmware call/return test (speed optimization) — alex@thinkpad / hgweb
#75 (Aug 5, 2017 6:55:15 PM)
- QEMU tests: IDC needs trimming as well in order to get deterministic results — alex@thinkpad / hgweb
- QEMU tests: trim calls-main-basic.idc until matching the "needle" md5
(hopefully this trick will get repeatable results on faster PCs) — alex@thinkpad / hgweb - QEMU tests: 5D2 IDC test not deterministic (functions are the same, but comments are not) — alex@thinkpad / hgweb
- QEMU: do not use non-printable task names
(VxWorks: current_task is set before it has a valid name) — alex@thinkpad / hgweb - QEMU: backout parts of 8e29c15
large timeout didn't solve the repeatability issue - results are still sensitive to processing speed
some models keep running in a loop, and after 10-20 seconds, they "discover" a new function and so on — alex@thinkpad / hgweb
#74 (Jul 31, 2017 3:51:38 AM)
- QEMU tests: let's try a larger timeout; minor fine-tunings — alex@thinkpad / hgweb
#73 (Jul 30, 2017 7:36:18 AM)
- QEMU tests: found a way to get deterministic execution (icount option)
- reworked the call/return trace tests to also run on main firmware (with -icount)
- fixme: CF models do not have deterministic execution, even with -icount
- fromutility tests also enabled on CF models (IDC only)
- "first interrupt" test replaced with full call/return trace on main firmware
- removed "sorted IDC" tests (the regular IDC + call/return trace tests are much stronger) — alex@thinkpad / hgweb - wait_log.sh: script to wait for a string to appear in a log file, with timeout since last update of the log file — alex@thinkpad / hgweb
#72 (Jul 30, 2017 12:15:12 AM)
- remove_end_loop.py: minor fixes — alex@thinkpad / hgweb
#71 (Jul 26, 2017 5:46:53 PM)
- Moved my_fprintf to fio-ml.c (fixes compilation of minimal/qemu-frsp) — alex@thinkpad / hgweb
- QEMU logging: always name DebugMsg, even if no symbols are loaded — alex@thinkpad / hgweb
- QEMU logging: fix loading symbol names on Thumb code — alex@thinkpad / hgweb
- QEMU: fix off by one error when loading ML stub names — alex@thinkpad / hgweb
- boot-hack: check whether we can reach anything in the ROM with relative jumps — alex@thinkpad / hgweb
- boot-hack: self-check for ARMLIB_OVERFLOWING_BUFFER — alex@thinkpad / hgweb
#70 (Jul 25, 2017 9:58:21 AM)
- boot-hack: fix wrong comments (AllocateMemory != system memory) — alex@thinkpad / hgweb
#69 (Jul 15, 2017 6:41:51 PM)
- Merged backtrace into qemu — alex@thinkpad / hgweb
- Makefile: minor fine-tuning; updated comments — alex@thinkpad / hgweb
- Makefile: fix compiling backtrace on fresh clone — alex@thinkpad / hgweb
- selftest: fine-tuned comments and strings — alex@thinkpad / hgweb
- selftest: re-enabled fault emulations
(some of them are useful for testing the stack trace, as they will trigger ERR70) — alex@thinkpad / hgweb - backtrace: sync with qemu (e4376a1) — alex@thinkpad / hgweb
- GDB scripts: comment out DebugMsg (prefer -d debugmsg instead) — alex@thinkpad / hgweb
- run_canon_fw.sh: identify DebugMsg from GDB script if not set
(moved from run_tests.sh)
also print command-line after clearing the screen — alex@thinkpad / hgweb - QEMU: GDB scripts for 50D and 6D — alex@thinkpad / hgweb
#68 (Jul 15, 2017 11:02:15 AM)
- backtrace: moved sources to src/ to avoid symlinking (cross-platform issues)
and let the install script figure it out — alex@thinkpad / hgweb - Merged backtrace into qemu — alex@thinkpad / hgweb
- Merged unified into qemu — alex@thinkpad / hgweb
- Makefile: workaround to unbreak the builds
(how to fix it properly?) — alex@thinkpad / hgweb - Makefile: mark $(QEMU_INSTALLED_DBI_DIR)/backtrace.% as optional dependency
todo: any way to do the same without .SECONDEXPANSION ? — alex@thinkpad / hgweb - Makefile: moved backtrace.o at the top to fix first-time compilation
this makes sure backtrace.h is created before any other files that may use it (currently boot-hack.c)
also remove the symlinks on "make clean" — alex@thinkpad / hgweb - backtrace: sync with qemu (3db5423, fbb532b, ab6d33c, 115fe25) — alex@thinkpad / hgweb
- backtrace: brute force stack scanning as backup strategy (idea from g3gg0: gdb.c, gdb_get_callstack) — alex@thinkpad / hgweb
- backtrace: fix BKT_RANDOM_BRANCHES experiment — alex@thinkpad / hgweb
- backtrace: BX LR is never encountered during tests — alex@thinkpad / hgweb
- backtrace: fix stack overflow — alex@thinkpad / hgweb
- Stack traces for crash and assert logs, using the backtrace backend — alex@thinkpad / hgweb
- Updated backtrace.c to work on the camera as well
(same source file for both QEMU and ML) — alex@thinkpad / hgweb - arm-mcr.h: fixed read_lr (not sure what the problem was) and added read_sp — a1ex / hgweb
- Imported backtrace code from 29f6edc — alex@thinkpad / hgweb
- Ghost image: fixed issue #2749 — alex@thinkpad / hgweb
- Merged in daniel_fort/magic-lantern/find_fnt.py-update (pull request #844)
find_fnt.py update — alex _broscutamaker@gmail.com_ / hgweb - Added suggestion by @a1ex to guess the ROM[0,1] load address. — daniel fort _dan@digiola.com_ / hgweb
- Changed "base" to the address used when dumping the ROM — daniel fort _dan@digiola.com_ / hgweb
- Merged in daniel_fort/magic-lantern/unified-multiple-FW_VERSION-minimal-ML (pull request #846)
Multiple firmware versions for minimal ML — alex _broscutamaker@gmail.com_ / hgweb - Makefile.platform.base error trap for multiple firmware versions — daniel fort _dan@digiola.com_ / hgweb
- dual_iso: change cr2hdr to use the same wrapper for module_strings like mlv_dump, also fixes compile error caused by a module.h change from static to global
(module_strings_wrapper.h from 0c1c8b3) — g3gg0 / hgweb - Modules: allow including module.h in multiple source files
(b0574dd) — alex@thinkpad / hgweb - Undo 4126b56 (to allow merging with crop_rec_4k) — alex@thinkpad / hgweb
- Update to latest exiftool — daniel fort _dan@digiola.com_ / hgweb
- mlv_rec: reduce chunk count to keep room for other files to create (and circumvent mlv_play failing playback) — g3gg0 / hgweb
- mlv_rec: insert alignment NULL block before writers start to write aligned sizes — g3gg0 / hgweb
- mlv_rec: ensure 32 bit alignment for VERS block sizes. just because. — g3gg0 / hgweb
- Merged in daniel_fort/magic-lantern/700D_AE_fix (pull request #842)
Fixed 700D AE constants (for autoexpo.mo)
Approved-by: Daniel Fort <dan@digiola.com> — alex _broscutamaker@gmail.com_ / hgweb - Fixed AE constants — daniel fort _dan@digiola.com_ / hgweb
- fio-ml: workaround for existing code using FIO_ReadFile incorrectly (such as mlv_play)
selftest included — alex@thinkpad / hgweb - Merged in cache-fixes (pull request #838)
Cache coherence fixes (clean_d_cache, FIO, EDMAC)
Approved-by: Alex <broscutamaker@gmail.com>
Approved-by: g3gg0 <g3gg0.de@gmail.com> — alex _broscutamaker@gmail.com_ / hgweb - Close branch cache-fixes — alex _broscutamaker@gmail.com_ / hgweb
- fio-ml: updated comment on FIO_WriteFile — alex@thinkpad / hgweb
- selftest: check whether cache cleaning causes any performance regressions
(result: no significant difference on file I/O) — alex@thinkpad / hgweb - Merged in daniel_fort/magic-lantern/EOSM_stubs_tweaks (pull request #839)
Display filters working (anamorphic preview, fisheye correction, raw video preview and others)
EOSM stubs tweaks
Approved-by: Alex <broscutamaker@gmail.com> — alex _broscutamaker@gmail.com_ / hgweb - Corrected YUV422_LV_BUFFER_DISPLAY_ADDR value and enabled display filters: http://www.magiclantern.fm/forum/index.php?topic=9741.msg186289#msg186289 — daniel fort _dan@digiola.com_ / hgweb
- Updated post_isr_hook/pre_isr_hook stubs — daniel fort _dan@digiola.com_ / hgweb
- Changed for consistency of stubs across all models. — daniel fort _dan@digiola.com_ / hgweb
- my_fprintf: fix warning — alex@thinkpad / hgweb
- edmac-memcpy: use cache handling similar to FIO;
updated selftest and bench modules for the new restriction — alex@thinkpad / hgweb - selftest: make sure the FIO cache coherence test fails without the FIO_WriteFile wrapper — alex@thinkpad / hgweb
- selftest: test for FIO_WriteFile with cacheable buffer
if you comment out clean_d_cache() from the FIO_WriteFile wrapper, this test will fail — alex@thinkpad / hgweb - selftest: save log after each sub-test
(so one can interrupt the test suite and still see the log for the tests completed so far) — alex@thinkpad / hgweb - selftest: fine-tuned DMA cacheable buffer test — alex@thinkpad / hgweb
- fio-ml: FIO_ReadFile wrapper to warn about caching issues
not sure how to handle it automatically - clean_d_cache before is not enough
adding another clean_d_cache afterwards appears to fix it, but it's risky
sed -i.bak '/ FIO_ReadFile/_FIO_ReadFile/' */stubs.S — alex@thinkpad / hgweb - Refactored without fio_malloc in a few places
(todo: find a way to reproduce caching issues on file I/O and add it to selftest.mo) — alex@thinkpad / hgweb - fio-ml: FIO_WriteFile wrapper to handle caching issues automatically
sed -i.bak '/ FIO_WriteFile/_FIO_WriteFile/' */stubs.S — alex@thinkpad / hgweb - selftest: test for clean_d_cache
interrupts disabled, using edmac_memcpy to copy between display buffers
this test will fail without previous commit — alex@thinkpad / hgweb - fix index size in clean_d_cache
(todo: test in selftest.mo) — alex@thinkpad / hgweb - removed unnecessary declaration of mlv_snd_is_enabled — g3gg0 / hgweb
- mlv_snd: report back using ml-cbr when recording audio — g3gg0 / hgweb
- added ml-cbr to modules using MODULE_NAMED_CBR() — g3gg0 / hgweb
- audio uses ml-cbr to ask for recording — g3gg0 / hgweb
- ml-cbr: use strcmp to stay on safe side (caller might pass arbitrary length) — g3gg0 / hgweb
- ml-cbr: update header with more information — g3gg0 / hgweb
- fix ml-cbr locking issues — g3gg0 / hgweb
- dual_iso: temporary patch for module_get_string API change - probably needs a revert before merging crop_rec_4k into unified — g3gg0 / hgweb
- Deal with Windows line ending in grep 3.0, changed multi-line grep command to single line extended regular expression and remove localsyms file with make clean. — daniel fort _dan@digiola.com_ / hgweb
- mlv_rec: embed VERS blocks into MLV file so there is no uncertainity about the modules used for a given recording — g3gg0 / hgweb
- mlv_lite: embed VERS blocks into MLV file so there is no uncertainity about the modules used for a given recording — g3gg0 / hgweb
- mlv_lite: use FIO_SeekSkipFile to determine file header size — g3gg0 / hgweb
- mlv_dump: handle VERS blocks — g3gg0 / hgweb
- mlv_rec: added code and structures to helper routines to get version information embedded into the MLV file — g3gg0 / hgweb
- added routines and made a module loader routine non-static to allow other code to fetch e.g. strings from modules — g3gg0 / hgweb
- Merged in memcheck-fixes (pull request #829)
Fixes for various null pointer and uninitialized memory bugs — alex _broscutamaker@gmail.com_ / hgweb - mem.c: disabled double free assert (it still gets overwritten by some deallocators) — alex@thinkpad / hgweb
- menu.c: fixed some more null pointer reads
(found in QEMU with -d memchk) — alex@thinkpad / hgweb - tskmon: fix read from null pointer — alex@thinkpad / hgweb
- module.c: fix reading after the input buffer when parsing module symbols
(found in QEMU) — alex@thinkpad / hgweb - memcheck: fix detection of double-free calls
(our marker was overwritten by Canon's deallocator, so the check was useless)
(bug found in QEMU) — alex@thinkpad / hgweb - get_current_dialog_handler: fix read from null pointer
(found in QEMU) — alex@thinkpad / hgweb - bmp.c: fix dereferencing random (uninitialized) pointer
(found in QEMU) — alex@thinkpad / hgweb - Backout 722c851 (fix FIR not included in the zip) — alex@thinkpad / hgweb
- Merged in raw_fixes (pull request #820)
Raw fixes part 4
Approved-by: Alex <broscutamaker@gmail.com> — alex _broscutamaker@gmail.com_ / hgweb - Silent pictures: minor error handling fix — alex@thinkpad / hgweb
- Silent pics: only show the slit-scan mode option when you actually select slit-scan — alex@thinkpad / hgweb
- Silent pictures: fix allocating memory for a single picture
(frame size not known in advance and might be larger than max shoot block size) — alex@thinkpad / hgweb - Silent pictures: fix overflow when allocating memory for burst mode — alex@thinkpad / hgweb
- Merged in task_name (pull request #796)
New method for getting current task names (refactor)
Approved-by: Alex <broscutamaker@gmail.com> — alex _broscutamaker@gmail.com_ / hgweb - Close branch task_name — alex _broscutamaker@gmail.com_ / hgweb
- Raw backend: fix black border on raw previews (completes 23d1f0e) — alex@thinkpad / hgweb
- Merged cleanup into unified — alex _broscutamaker@gmail.com_ / hgweb
- Removed april fools prank — alex@thinkpad / hgweb
- debug.c: removed unused code — alex@thinkpad / hgweb
- Zip comment: removed old links — alex@thinkpad / hgweb
- fio-ml: fix possible buffer overflow with PROP_CARD_SELECT
(might happen on unusual settings or new models) — alex@thinkpad / hgweb - Makefile: summarize CONFIG options and GCC version from Makefile.user (if any) in the build log; minor fixes — alex@thinkpad / hgweb
- Makefile: don't try to build the FIR on make install/zip — a1ex / hgweb
- Modules: removed some unused definitions — alex@thinkpad / hgweb
- Debug -> Unmount SD: minor UI tweak (turn on the LED after unmounting) — alex@thinkpad / hgweb
- Merged in lens_info_fix (pull request #775)
Lens info fix
Approved-by: Daniel Fort <dan@digiola.com>
Approved-by: Licaon Kter <licaon.kter@protonmail.com>
Approved-by: DeafEyeJedi <deafeyejedi@yahoo.com>
Approved-by: Lars Steenhoff <larssteenhoff@gmail.com>
Approved-by: g3gg0 <g3gg0.de@gmail.com>
Approved-by: Alex <broscutamaker@gmail.com> — alex _broscutamaker@gmail.com_ / hgweb - Close branch lens_info_fix — alex _broscutamaker@gmail.com_ / hgweb
- Silent pictures: always reset powersave timer when taking a picture — alex@thinkpad / hgweb
- Lens info: serial number (to be tested) — alex@thinkpad / hgweb
- Lens info: minor menu updates (mostly help text) — alex@thinkpad / hgweb
- Lens info: minor menu layout changes — alex@thinkpad / hgweb
- Lens info: moved to Debug menu (to keep the Prefs menu for... preferences) — alex@thinkpad / hgweb
- Merged in pre-record (pull request #728)
Pre-recording feature (mlv_lite)
http://www.magiclantern.fm/forum/index.php?topic=17069.0
Approved-by: DeafEyeJedi
Approved-by: David Milligan
Approved-by: Maqs
Approved-by: g3gg0
Approved-by: Mathew Kelly
Approved-by: Alex — alex _broscutamaker@gmail.com_ / hgweb - Close branch pre-record — alex _broscutamaker@gmail.com_ / hgweb
- mlv_lite: fix chunk frame count (to be tested) — alex@thinkpad / hgweb
- srm_malloc_suite: extra wait after locking the GUI
(to be checked on cameras that don't pass the SRM memory test from selftest.mo) — alex@thinkpad / hgweb - srm_malloc_suite: minor fix
(no effects with current usage) — alex@thinkpad / hgweb - Raw backend: fix black borders on raw previews — alex@thinkpad / hgweb
- Merge with unified — g3gg0 / hgweb
- mlv_lite: fix MLV frame count when using pre-recording — alex@thinkpad / hgweb
- Merged unified into pre-record — alex@thinkpad / hgweb
- check for property length and decide if this feature is available — g3gg0 / hgweb
- fixed lens ID reading, added version etc. to be tested — g3gg0 / hgweb
- raw_rec: pre-recording feature (experimental) — alex@thinkpad / hgweb
- Merge raw_fixes into pre-record — alex@thinkpad / hgweb
#67 (Jul 14, 2017 7:02:04 PM)
- run_ml_all_cams: fix missing quote — alex@thinkpad / hgweb
- QEMU logging: backtrace test script — alex@thinkpad / hgweb
- run_ml_all_cams: prefer single quotes instead of \$ for options — alex@thinkpad / hgweb
- run_ml_all_cams: allow full customization of log file name — alex@thinkpad / hgweb
- Stack traces for crash and assert logs, using the backtrace backend — alex@thinkpad / hgweb
- Updated backtrace.c to work on the camera as well
(same source file for both QEMU and ML) — alex@thinkpad / hgweb - arm-mcr.h: fixed read_lr (not sure what the problem was) and added read_sp — a1ex / hgweb
- QEMU logging: experimental stack trace routine (backtrace) that does not require prior instrumentation
it attempts to walk the stack, emulating instructions that change LR, SP, function returns and tail calls
some more experiments and self-tests are available as compile-time options
this method can be adapted to run on the camera as well — alex@thinkpad / hgweb
#66 (Jul 14, 2017 4:28:47 PM)
- run_ml_all_cams: fix copying zip to SD/CF image — alex@thinkpad / hgweb
- QEMU logging: fix assertion when printing callstack from interrupts on Thumb code — alex@thinkpad / hgweb
- QEMU logging: save/restore callstack exec state for each DryOS task when handling interrupts
This fixes calls/returns that were missed if an interrupt happened exactly before the jump
(non-deterministic issue; was fairly rare and not obvious) — alex@thinkpad / hgweb - QEMU logging: indent now public (eos_indent); larger buffer — alex@thinkpad / hgweb
- QEMU logging: CALL_LOCATION for eos_callstack_get_caller_param; fix CALL_DEPTH — alex@thinkpad / hgweb
- QEMU logging: overriding LR no longer needed in call_stack_push — alex@thinkpad / hgweb
- run_ml_all_cams: fix copying zip to SD/CF image — alex@thinkpad / hgweb
#65 (Jul 14, 2017 11:12:18 AM)
- QEMU logging: do not report jumps from tight loops
otherwise, some loops would print a huge amount of jumps (unnecessary)
these would slow down certain tests a lot, e.g. 5D3 callstack on fromutility — alex@thinkpad / hgweb - QEMU logging: record direct jumps to function calls (many such calls in DIGIC 6) — alex@thinkpad / hgweb
- QEMU logging: log task switches before other items
otherwise, consistency errors may appear - see test_callstack.py
minor differences in VxWorks tests — alex@thinkpad / hgweb - QEMU: ignore CBZ (on Thumb-2 code) — alex@thinkpad / hgweb
- run_ml_all_cams: use multi-line QEMU_SCRIPT's (nicer formatting) — alex@thinkpad / hgweb
- run_ml_all_cams: fix BOOT=0 — alex@thinkpad / hgweb
- run_ml_all_cams: fix ML_PLATFORMS when not specified — alex@thinkpad / hgweb
#63 (Jul 13, 2017 11:20:01 PM)
- QEMU: 650D GUI — alex@thinkpad / hgweb
- QEMU: 650D GUI (including tests) — alex@thinkpad / hgweb
- QEMU: 1300D updates
- SD interrupts (DCIM test passed)
- HDMI status (minor)
- GDB script updated for latest firmware
- patch JPCORE (fixes assert) — alex@thinkpad / hgweb - QEMU tests: removed MENU_CAMS (all GUI_CAMS are now able to browse Canon menu) — alex@thinkpad / hgweb
- QEMU: 70D menu tests (format test not working) — alex@thinkpad / hgweb
#61 (Jul 13, 2017 6:55:27 PM)
- QEMU tests: only print ROMCPY messages before the first interrupt — alex@thinkpad / hgweb
- QEMU: options for run_ml_all_cams.sh to compile and run a given set of ML platforms, from any HG changeset — alex@thinkpad / hgweb
- QEMU: updated splitgdb.sh as discussed on EOS M2 thread
http://www.magiclantern.fm/forum/index.php?topic=15895.msg186245#msg186245 — alex@thinkpad / hgweb - QEMU: flush after qprintn, so the output will appear right away — alex@thinkpad / hgweb
- QEMU logging: handle %c with -debugmsg — alex@thinkpad / hgweb
- QEMU logging: minor fixes for -d autoexec — alex@thinkpad / hgweb
- QEMU: updated 5D4 GDB script and tests for 1.0.4 — alex@thinkpad / hgweb
- QEMU logging: workaround to handle some missing return from interrupts
(updated 600D and 1100D unique function tests - they differ by one function) — alex@thinkpad / hgweb - QEMU: EOS M2 tests + patches.gdb — alex@thinkpad / hgweb
- QEMU: OOB fix from https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg03239.html — alex@thinkpad / hgweb
- Merged in daniel_fort/magic-lantern/qemu-EOSM2-wip_1 (pull request #835)
QEMU EOSM2 preliminary setup. — alex _broscutamaker@gmail.com_ / hgweb - Updates to debugmsg.gdb — daniel fort _dan@digiola.com_ / hgweb
- Found correct values by checking against 1.0.2 firmware. — daniel fort _dan@digiola.com_ / hgweb
- I’m pretty sure “set *(int*)0xFF356DE8 = 0xe12fff1e” is wrong but everything else should be good. — daniel fort _dan@digiola.com_ / hgweb
- Added EOSM2 to mph.c — daniel fort _dan@digiola.com_ / hgweb
- Updated EOSM2 debugmsg.gdb file. — daniel fort _dan@digiola.com_ / hgweb
- Added EOSM2.h file, copied from 100D. — daniel fort _dan@digiola.com_ / hgweb
- Copied button codes from 100D to EOSM2. — daniel fort _dan@digiola.com_ / hgweb
- Added EOSM2 in supported cameras list. — daniel fort _dan@digiola.com_ / hgweb
- Added mpu registers to EOSM2 in model_list.c — daniel fort _dan@digiola.com_ / hgweb
- Merged qemu into qemu-EOSM2-wip-1 — daniel fort _dan@digiola.com_ / hgweb
- Merged latest qemu commits — daniel fort _dan@digiola.com_ / hgweb
- Merged in qemu commits — daniel fort _dan@digiola.com_ / hgweb
- Added items from ML on EOS-M2 forum post: http://www.magiclantern.fm/forum/index.php?topic=15895.msg185228#msg185228 — daniel fort _dan@digiola.com_ / hgweb
- EOSM2 preliminary setup. — daniel fort _dan@digiola.com_ / hgweb
- Merged in daniel_fort/magic-lantern/qemu-build-tweaks-2 (pull request #836)
Qemu build tweaks 2
Approved-by: Daniel Fort <dan@digiola.com> — alex _broscutamaker@gmail.com_ / hgweb - -s option not needed with uname. — daniel fort _dan@digiola.com_ / hgweb
- Check for mounted EOS_DIGITAL disk image handled differently on OS X. — daniel fort _dan@digiola.com_ / hgweb
- Merged qemu into qemu-build-tweaks-2 — daniel fort _dan@digiola.com_ / hgweb
- Merged qemu into qemu to prevent multiple heads. — daniel fort _dan@digiola.com_ / hgweb
- Changed shebang for portability. Missed these two scripts in my last pull request. — daniel fort _dan@digiola.com_ / hgweb
- OS X doesn’t require root permissions to mount disk image. — daniel fort _dan@digiola.com_ / hgweb
- Use hdiutil on OS X systems. — daniel fort _dan@digiola.com_ / hgweb
- Merged in daniel_fort/magic-lantern/qemu-build-tweaks-1 (pull request #834) — daniel fort _dan@digiola.com_ / hgweb
#60 (Jun 11, 2017 2:38:53 AM)
- QEMU: updated reference data for sorted IDC tests on some models
(100D, 700D, EOSM, 5D) — alex@thinkpad / hgweb - QEMU: 80D patches.gdb
(required to run the stack trace check on a DIGIC 6 model with DryOS task switches) — alex@thinkpad / hgweb - QEMU logging: fix some rarely missed jumps
(usually in return from interrupt) — alex@thinkpad / hgweb - QEMU logging: fix Thumb PC in call stack traces (for DIGIC 6) — alex@thinkpad / hgweb
- QEMU test suite: check callstack consistency
(whether verbose stack trace matches the call/return trace)
(also checks context info, such as current task or interrupt) — alex@thinkpad / hgweb - QEMU: do not log UART messages when it's redirected to a file
(-serial file:out.log) — alex@thinkpad / hgweb - QEMU: with -d calls, always align location information
(insert a newline on very long lines)
(updated tests) — alex@thinkpad / hgweb - QEMU: also log interrupt ID when using -d calls — alex@thinkpad / hgweb
- QEMU: use verbose stack trace for DebugMsg and GDB scripts
(each call on its own line - much more readable)
to get callstack for every single DebugMsg, use "-d debugmsg,callstack,v"
or, for GDB scripts: "-d callstack -s -S" for QEMU, "macro define PRINT_CALLSTACK 1" in the GDB script, without quotes) — alex@thinkpad / hgweb - QEMU: option to log DebugMsg calls natively, without GDB scripts
(much faster; very similar to nkls' initial implementation) — alex@thinkpad / hgweb - QEMU: redirect the monitor console to qemu.monitor unix socket
(to restore the old behavior, run with -monitor vc) — alex@thinkpad / hgweb
#58 (Jun 7, 2017 3:15:24 AM)
- Merged in daniel_fort/magic-lantern/qemu-build-tweaks-1 (pull request #834)
(fixes for building QEMU on Mac)
QEMU build tweaks 1
Approved-by: Daniel Fort <dan@digiola.com> — alex _broscutamaker@gmail.com_ / hgweb - Merged in latest qemu commits — daniel fort _dan@digiola.com_ / hgweb
- QEMU: parameterized MPU spells for PROP_CARDn_STATUS;
updated WriteProtect handling on most DIGIC 4/5 models
(otherwise, these GUIs would show the card write-protected dialog) — alex@thinkpad / hgweb - QEMU: use timestamps to decide the relationship between MPU spells
(only messages received shortly after a mpu_send call should be considered replies) — alex@thinkpad / hgweb - QEMU: warning about duplicate MPU spells
(they will show where the communication may depend on state) — alex@thinkpad / hgweb - QEMU: include a description for each input MPU spell
(updated extract_init_spells.py with definitions for some known spells) — alex@thinkpad / hgweb - Suppress printing an error message if the command isn’t found. — daniel fort _dan@digiola.com_ / hgweb
- Changed shebang in bash scripts. This should make them more portable. An issue came up because the Macintosh uses an older version of bash in /bin/bash and we want to use a newer Homebrew installed version in /user/local/bin/bash without breaking other setups. — daniel fort _dan@digiola.com_ / hgweb
- QEMU: parameterized MPU spells for UILock and NotifyGUIEVent — alex@thinkpad / hgweb
- QEMU: parameterized MPU spells (experimental) — alex@thinkpad / hgweb
- QEMU: incomplete half-shutter emulation
(fixme: it should show the metering indicator or close menus/dialogs) — alex@thinkpad / hgweb
#57 (Jun 7, 2017 12:27:34 AM)
- QEMU: menu navigation works on 5D3 1.1.3 — alex@thinkpad / hgweb
- QEMU logging: minor cleanups — alex@thinkpad / hgweb
- QEMU logging: moved ABI checking in its own routine (minor refactor) — alex@thinkpad / hgweb
- QEMU logging: moved -tasks in its own routine (much faster)
note: task switching locations differ on VxWorks models after this change
(they are approximate anyway) — alex@thinkpad / hgweb - QEMU logging: option to enable verbosity only when autoexec.bin is loaded
(useful for new ports; bootloader can be very verbose with certain logging settings) — alex@thinkpad / hgweb - QEMU: exposed callstack to GDB and ML guest code
based on nkls' first implementation of DebugMsg helper
assert in gdb scripts now always prints the call stack — alex@thinkpad / hgweb - GDB scrips: task switch logging helper (pure GDB) — alex@thinkpad / hgweb
- QEMU logging: stronger test for ML stubs
(fixes some non-function symbols that appear when compiling ML with -ggdb) — alex@thinkpad / hgweb - Experimental debug info in magiclantern elf file
it allows mapping from code address to source line
(example: eu-addr2line -s -S -e magiclantern 0x50d60)
it should not end up in autoexec.bin or affect it in any way — alex@thinkpad / hgweb - QEMU logging: attempt to guess strings and named functions in call/return trace
(adapted from dm-spy-experiments)
(self-test results updated) — alex@thinkpad / hgweb
#56 (May 30, 2017 2:59:01 PM)
- qemu-util now always available (in dryos.h)
(these functions are only compiled with CONFIG_QEMU=y; otherwise they are just type-checked and optimized out) — alex@thinkpad / hgweb - boot-hack: fix boot with CONFIG_QEMU on some models
(qprintf/vsnprintf reboots the camera because it's not yet initialized)
also added a safeguard to prevent such mistakes — alex@thinkpad / hgweb
#55 (May 28, 2017 4:30:04 PM)
- QEMU test suite: fix PowerShot tests using wrong debugmsg.gdb — alex@thinkpad / hgweb
- QEMU logging: fix copy/paste error in ROM block autodetection — alex@thinkpad / hgweb
- QEMU logging: explicit option to show task switches
(rather than hijacking callstack) — alex@thinkpad / hgweb
#54 (May 28, 2017 3:15:54 PM)
- QEMU test suite: list memory blocks copied from ROM during bootloader tests
(both EOS and PowerShot firmwares) — alex@thinkpad / hgweb - QEMU logging: allow ROM block copying in arbitrary increments, up to 128-bit
mixing memory access sizes is allowed too
the block must be copied sequentially, from left to right or from right to left or mixed, with no gaps at any moment during the copy operation
copying e.g. 16 bytes from/to offset 0, 16 bytes f/t 0x10, 4 bytes f/t 0x20 and 1 byte f/t 0x24 will be considered a 0x25-byte block
but copying 16 bytes f/t offset 0, 4 bytes f/t 0x14 and then 4 bytes f/t 0x10 will be treated as 2 adjacent blocks (16 bytes and 8 bytes); that's because of the gap during the copy operation
only blocks larger than 0x40 bytes are printed — alex@thinkpad / hgweb - QEMU logging: experimental option for finding memory blocks copied from ROM to RAM
(only 32-bit sequential copies for now) — alex@thinkpad / hgweb - QEMU logging: fix memory logging selection in complex cases
e.g. romr,ramw should only log ROM reads and RAM writes
in simple cases (such as just romr or just ramw), hooks are installed only for the selected operation (read or write)
in these cases, additional checks will be redundant
however, with complex cases such as romr,ramw, hooks are installed for all reads and and all writes
so we can no longer rely on the hooks (being installed or not) for filtering the results — alex@thinkpad / hgweb - QEMU logging: fix task info on Eeko — alex@thinkpad / hgweb
- QEMU logging: quiet some jumps that are not function calls (frequently used on Thumb-2) — alex@thinkpad / hgweb
- QEMU: fix CSS in HTML logs from subdirectories — alex@thinkpad / hgweb
#53 (May 27, 2017 8:19:46 PM)
- QEMU scripts: allow loading symbols from any ML target (e.g. minimal, installer) — alex@thinkpad / hgweb
- QEMU: .current_task_addr for most models
(where it was already known - copied from ML stubs or from debugmsg.gdb) — alex@thinkpad / hgweb - QEMU logging: experimental task switch detection (DIGIC 2-6) — alex@thinkpad / hgweb
- QEMU logging: attempt to fix a rare crash when returning from interrupt — alex@thinkpad / hgweb
- QEMU logging: fix VxWorks return from interrupt; refactored interrupt detection on DIGIC 6 — alex@thinkpad / hgweb
#52 (May 27, 2017 2:57:30 PM)
- QEMU test suite: fix call/return trace logs being trimmed way before the first interrupt
(the deterministic part is usually much larger than previously covered) — alex@thinkpad / hgweb - QEMU test suite: also report nested interrupts — alex@thinkpad / hgweb
#51 (May 27, 2017 12:08:14 PM)
- QEMU: fix minor regression in DIGIC 6 bootloader
(introduced in 7f1ba92; some tests changed) — alex@thinkpad / hgweb - QEMU logging: minor rename — alex@thinkpad / hgweb
#49 (May 26, 2017 2:19:18 AM)
- QEMU test suite: workaround for the non-determinism in the sorted IDC test
(retry up to 5 times until it succeeds) — alex@thinkpad / hgweb - QEMU test suite: more tests for call/return trace and IDC scripts (including Thumb, interrupts, secondary cores)
Not all models are passing. — alex@thinkpad / hgweb - QEMU: fix cache lockdown printf's (they should go to stderr) — alex@thinkpad / hgweb
- QEMU: fix handling UART interrupts with serial redirected — alex@thinkpad / hgweb
#47 (May 25, 2017 7:54:41 PM)
- QEMU: fine-tuned verbsity of various components
(interrupts, digic timer, DMA, serial flash, CFATA) — alex@thinkpad / hgweb - QEMU logging: fix call identification on Thumb (eeko) — alex@thinkpad / hgweb
- QEMU logging: fix crash on 5D3 eeko — alex@thinkpad / hgweb
- QEMU: changed REG_PRINT_NUM so it no longer includes a newline; updated boot-hack and fixed regression in boot-check logs — alex@thinkpad / hgweb
- QEMU: warn on ROM size mismatch — alex@thinkpad / hgweb
- QEMU run_canon_fw.sh: clear screen on each run — alex@thinkpad / hgweb
- QEMU logging: experimental symbol name loading from ML object files
example (bash): . ./export_ml_syms.sh 500D.111; ./run_canon_fw.sh 500D,firmware="boot=1" ...
fixme: QEMU elf loader patched in a not very clean way — alex@thinkpad / hgweb
#46 (May 23, 2017 12:14:57 AM)
- QEMU logging: simplified function call detection a bit more
(results should be unchanged) — alex@thinkpad / hgweb - QEMU logging: always guess function arguments located on the stack
(-d calls now implies -d ramr) — alex@thinkpad / hgweb - QEMU logging: explicit option to export to IDC
(-d idc) — alex@thinkpad / hgweb - QEMU logging: check R4-R11 and SP when returning from function calls
(all registers now stored on the call stack) — alex@thinkpad / hgweb - QEMU logging: in IDC comments, record task name when available and drop prev_sp — alex@thinkpad / hgweb
- QEMU logging: basic test for IDC (function list only)
(useful when formatting changes) — alex@thinkpad / hgweb - QEMU test suite: nicer way to interrupt our background QEMU process — alex@thinkpad / hgweb
- QEMU logging: simplified function call detection
(results should be unchanged) — alex@thinkpad / hgweb - QEMU logging: indent callstack locations at 80 chars
indent amount configurable at compile time
tests updated — alex@thinkpad / hgweb - QEMU: 1300D current_task_addr — alex@thinkpad / hgweb
#45 (May 20, 2017 12:35:31 AM)
- QEMU: initial GDB script for 1300D; display test — alex@thinkpad / hgweb
- QEMU: initial support for Mac and clang in install scripts (to be tested) — alex@thinkpad / hgweb
- QEMU: fix compiling with clang — alex@thinkpad / hgweb
- QEMU test suite: removed basic GUI test (redundant) — alex@thinkpad / hgweb
- QEMU test suite: tests for callstack and call/return trace — alex@thinkpad / hgweb
- QEMU: disable gray noise that appeared until GUI initialization (faster) — alex@thinkpad / hgweb
- QEMU logging: minor callstack speed optimization — alex@thinkpad / hgweb
- QEMU logging: in call/return trace, print caller (from call stack) instead of raw LR — alex@thinkpad / hgweb
- QEMU logging: callstack speed optimization — alex@thinkpad / hgweb
- QEMU logging: fix handling nested interrupts in callstack — alex@thinkpad / hgweb
- QEMU logging: initial call stack support for Thumb-2 (DIGIC 6) — alex@thinkpad / hgweb
- QEMU logging: attempt to guess additional function arguments from RAM tracing
(use -d calls,ram to enable this) — alex@thinkpad / hgweb - QEMU logging: print first 4 arguments and return value for all function calls
(with -d calls) — alex@thinkpad / hgweb - QEMU: get stack limits of current DryOS task and print them on the call stack
new API: eos_get_current_task_stack — alex@thinkpad / hgweb - QEMU logging: API for retrieving various parameters from the call stack
(SP, stack frame size, call depth, function arguments)
note: R0-R3 stored on the call stack
API name: eos_callstack_get_caller_param — alex@thinkpad / hgweb - QEMU logging: fine-tune options; auto-enable dependencies — alex@thinkpad / hgweb
- QEMU: indent memcheck and io_log messages according to call depth
new API: eos_callstack_get_indent — alex@thinkpad / hgweb - QEMU memcheck: fix line wrapping in verbose messages about multitasked free calls
(minor; visible with -d memchk,v) — alex@thinkpad / hgweb - QEMU logging: generic print_location; refactored memcheck to use it
(eos_print_location) — alex@thinkpad / hgweb - QEMU logging: simple call stack printing API, used in memcheck when reporting errors
(eos_callstack_print) — alex@thinkpad / hgweb - QEMU logging: experimental call stack reconstruction
ideas from https://github.com/panda-re/panda/blob/master/panda/plugins/callstack_instr/USAGE.md
fixme: requires -d calls,nochain -singlestep
new APIs: eos_get_current_task_id, eos_callstack_indent — alex@thinkpad / hgweb - QEMU logging: refactored to split IDC and call logic — alex@thinkpad / hgweb
- QEMU memcheck: split exec hook into components
(malloc and memcpy for now; non-functional change) — alex@thinkpad / hgweb - QEMU memcheck: refactored with CPU env (easier to get register values; non-functional) — alex@thinkpad / hgweb
- QEMU memcheck: refactored malloc list with a data structure (non-functional) — alex@thinkpad / hgweb
- QEMU memcheck: identify blocks affected by heap errors (messages similar to valgrind) — alex@thinkpad / hgweb
- QEMU memcheck: fix memcpy handling
(do not copy allocation flags, only initialization; fix copying from ROM) — alex@thinkpad / hgweb - QEMU: AbortEDmac emulation — alex@thinkpad / hgweb
- QEMU: basic model of EDMAC transfer delay — alex@thinkpad / hgweb
- QEMU: gui/menu tests for 5D2 and 50D — alex@thinkpad / hgweb
#44 (May 6, 2017 8:25:37 PM)
- QEMU: force line-buffered output for our messages — alex@thinkpad / hgweb
- QEMU: a few more assertions for memcheck — alex@thinkpad / hgweb
- QEMU: fix card formatting on 50D and 5D2; menu tests for 5D2 — alex@thinkpad / hgweb
- QEMU: fix CURRENT_CPU outside MMIO handlers
(defaults to cpu0; fixes CF routines crashing when used with -d memchk)
(may need to be changed for EOS M5, when its time comes) — alex@thinkpad / hgweb - QEMU: updated 5D2 MPU spells, thanks Ilia. Menu works!
http://www.magiclantern.fm/forum/index.php?topic=9852.msg184191#msg184191 — alex@thinkpad / hgweb
#42 (May 2, 2017 9:56:10 PM)
- QEMU: GDB script for 5D2 — alex@thinkpad / hgweb
- QEMU: 50D menu navigation tests — alex@thinkpad / hgweb
- QEMU: 50D menu navigation works! — alex@thinkpad / hgweb
- QEMU: 50D button codes — alex@thinkpad / hgweb
- QEMU: fix 50D CFATA and HDMI; GUI boots! — alex@thinkpad / hgweb
- QEMU: 50D MPU spells, thanks jrm21
http://www.magiclantern.fm/forum/index.php?topic=9852.msg184191#msg184191 — alex@thinkpad / hgweb
#41 (May 2, 2017 7:29:51 PM)
- QEMU: minor speed optimization in serial_flash — alex@thinkpad / hgweb
- QEMU: speed up test suite
(large delays no longer needed) — alex@thinkpad / hgweb - QEMU: CFDMA write works on 5D2 (DCIM test passed!) — alex@thinkpad / hgweb
- QEMU: fix CFDMA on 5D2 (only read works) — alex@thinkpad / hgweb
- QEMU: made MPU/SF/SD/CF logging macros generic (in eos.h)
-d sdcf for logging SD/CF messages — alex@thinkpad / hgweb - QEMU: configurable resolution for digic timer — alex@thinkpad / hgweb
#40 (May 2, 2017 2:57:39 AM)
- QEMU: updated tests for faster card formatting
(BUSY dialog no longer caught) — alex@thinkpad / hgweb - QEMU: trigger SDIO interrupt on errors as well
(fixes semaphore timeout after CMD1; to be tested for side effects) — alex@thinkpad / hgweb - mpu: refactored verbosity; most messages now hidden by default
(-d mpu or -d mpu,verbose or -d io,mpu etc to show them) — alex@thinkpad / hgweb - serial_flash: refactored verbosity; most messages now hidden by default (-d sflash shows them) — alex@thinkpad / hgweb
- QEMU: fix memory logging on models with serial flash — alex@thinkpad / hgweb
#39 (May 1, 2017 10:51:51 PM)
- QEMU: minor fixes in scripts — alex@thinkpad / hgweb
- QEMU memcheck: fix printf's
(should go to stderr) — alex@thinkpad / hgweb - QEMU memcheck: get ML stubs from environment variables — alex@thinkpad / hgweb
#38 (May 1, 2017 5:23:33 PM)
- QEMU memchk: experimental TCM checking
(catches even more null pointer bugs) — alex@thinkpad / hgweb - QEMU memchk: moved stubs in a data structure, for easier porting — alex@thinkpad / hgweb
- QEMU: highly experimental memory checking tool (-d memchk)
(stubs hardcoded for 500D) — alex@thinkpad / hgweb - Memory logging: fine-tuned messages — alex@thinkpad / hgweb
- QEMU: moved our memory logging routines to logging.c — alex@thinkpad / hgweb
- QEMU: moved our calls logging hook to separate file; preparing to add more tools — alex@thinkpad / hgweb
- QEMU: hook called when execution a TranslationBlock
(todo: move the hardcoded analysis tools from cpu-exec) — alex@thinkpad / hgweb - QEMU: use 64 bits for qemu_loglevel; renumbered and defined some more options for future use — alex@thinkpad / hgweb
- QEMU: output all our messages to stderr
(should fix colors getting mixed up) — alex@thinkpad / hgweb - QEMU: use macros for ANSI colors — alex@thinkpad / hgweb
- QEMU: minor fix in UILock.h
(todo: parameterized MPU messages) — alex@thinkpad / hgweb - QEMU: compile with code coverage (gcov); helper script for lcov — alex@thinkpad / hgweb