View source
digic6-dumper
  • Contributors
    1. Loading...
Author Commit Message Date Builds
Daniel Fort
Merged in kitorPL/magic-lantern/kitor/eosr_120 (pull request #959) Update EOS R to 1.2.0 firmware
Kajetan Krykwinski
correct bmp_vram_info for EOS R
Kajetan Krykwinski
R 1.2.0 firmware signature
Kajetan Krykwinski
Fix stubs
Kajetan Krykwinski
signature definition for R 1.2.0
Kajetan Krykwinski
fix typo in stubs
Kajetan Krykwinski
update plaform map
Kajetan Krykwinski
updated stubs to R 1.2.0
Kajetan Krykwinski
rom version updates
Kajetan Krykwinski
updated EOSR to 1.2.0
Kajetan Krykwinski
branch created
Daniel Fort
M50: update to Canon firmware version 1.0.2
Alex
77D: empty gui.h required for compiling
Alex
fio-ml.h: updated fio_file structure for DIGIC 6/7/8 Tested on 5D4, 200D, 77D and M50, all in QEMU.
Alex
Merged qemu into digic6-dumper (minimal/qemu-fio test)
Alex
qemu-fio: burn-in test for FindClose (FindFirst/FindClose/FindNext repeated many times)
Alex
qemu-fio: minimal test code for file I/O routines in QEMU Only FindFirst/FindNext test for now; others to be added later. Compile with e.g.: cd minimal/qemu-fio make MODEL=60D clean make MODEL=60D install_qemu CONFIG_QEMU=y FIXME: works on DIGIC 4/5, fails on DIGIC >= 6, not tested on DIGIC 2/3.
Alex
QEMU tests: minor fix for HPTimer test (slightly faster, no longer times out)
Alex
5D4: sync debugmsg.gdb to the one from chris_overseas (a8bdfa9)
Alex
DIGIC 6/7/8 Hello World: reworked with 32-bit access in the display buffer
Alex
DIGIC 6/7/8 Hello World: also set opacity for all pixels (should now work in LiveView for UYVY models, such as 80D and 200D)
Alex
DIGIC 6/7/8 Hello World: set U and V for all pixels on UYVY models (80D, 200D and others) No more color artifacts at font edges.
Alex
DIGIC 6/7/8 Hello World: use rgb2yuv422 from imgconv.c/h; (@names_are_hard, why did you swap the endianness in your rgb2yuv422?!)
Alex
imgconv.h: updated YUV<->RGB routines for DIGIC 6/7/8 (to be tested) U and V now have an offset of 0x80; previously, on DIGIC 5 and earlier models, achromatic was 0.
Alex
internals-common: assuming all DIGIC 5 and newer models use Rec.709 TODO: need a trained eye to check.
Alex
DIGIC 6/7/8: generic Hello World code, based on names_are_hard's and chris_overseas' work. To be tested. MARV structure: https://www.magiclantern.fm/forum/index.php?topic=17360.msg212411#msg212411
Alex
internals-common: enabled new DryOS task hooks on all new models (DIGIC 6/7/8; to be tested)
Alex
internals-common.h: common definitions for CPU types and DIGIC families
Alex
check_stubs.py: fix crash when attempting to compare stubs present in only one file
Alex
DIGIC 6/7/8: explicit macros for Thumb code, ARM code and data pointers in stubs.S - THUMB_FN: for Thumb functions - ARM32_FN: for 32-bit ARM functions - DATA_PTR: for stubs not pointing to code (these can't be called as functions) Advantages: - Thumb bit handled automatically (less error-prone) - easier to read (compared to checking address parity manually) - easier to copy stubs from/to IDA or GDB scripts (no more need to edit the Thumb bit manually) Also: - updated mainte…
Alex
DIGIC 6/7/8: aligned comments
Alex
DIGIC 7/8: malloc/free stubs should be private (not yet used in source code)
Alex
DIGIC 6/7/8: reordered stubs
Alex
stub-reorder.py: do not attempt to find missing stubs by default
Alex
stub-reorder.py: updated sorting order heuristics: - ignore the underscore from stub names - free and free_dma_memory should be right after malloc/alloc_dma_memory - file stubs should be first - create/delete/open/close/etc should be grouped, usually first - property functions: logical order is very close to reverse alphabetical order
Alex
stub-reorder.py: minor updates for DIGIC 6/7/8
Alex
200D, 77D: comments for interrupt and memory allocation stubs
Alex
77D: some nitpicks
calle2010
77D.102 stubs, firmware signature based on the work from aprofiti in ML forum https://www.magiclantern.fm/forum/index.php?topic=19737.msg206736#msg206736 (f387fc1, b44e17e, e25589c, 1578fb6, 397b9a2, 0264f84, minus the experiments -- a1ex)
calle2010
move platform directory 77D.100 to 77D.102
Alex
QEMU: 32-bit DIGIC timer support (DIGIC 6 and newer)
Alex
QEMU: updated emulation for 7D2 1.0.4 (ROM from real hardware; no longer using 80D bootloader). Some workarounds were required to emulate the bootloader. Communication between the two cores is not yet handled.
Alex
QEMU: renamed 7D2M to 7D2 (slave core is still 7D2S)
Alex
QEMU: updated tests for 5D 1.1.1 and 400D 1.1.1, both ROMs from real hardware (previously, it was a mix between an incomplete 5D firmware and 1000D bootloader)
Alex
QEMU: imported scnprintf/vscnprintf from Linux kernel and fixed incorrect usage in previous code (adapted commit e8bb011b)
Alex
QEMU: fixed indentation of multiline debug strings (-d debugmsg)
Alex
QEMU: fixed Thumb code disassembly with qdisas This used to work in earlier versions, but target_disas changed its syntax in 2.5.0. Useful for debugging io_trace on DIGIC 6 (with CONFIG_QEMU=y).
Alex
QEMU: fixed TCM size info (broken in df56963); simplified condition for 946_PRBS size info
Alex
QEMU: better description for DRSR, useful for emulating io_trace on DIGIC 6: - enable bit (similar to PRBS on DIGIC 5 and earlier) - consistency check for base address and size (base address must be multiple of size - Cortex R4 TRM p.178) - subregion disable bits (if used) Useful for emulating io_trace. Note: QEMU already calls tlb_flush when writing to DRSR, DRBAR or DRACR. No need to apply e4fd44e on DIGIC 6.
Alex
QEMU: print PC when taking an exception
Alex
QEMU install: option to to keep or replace existing sd.img and cf.img, if any
Alex
QEMU install: always use qemu-eos as username
Alex
QEMU: updated SD/CF image with the latest portable display test (19f18f0 from recovery branch)
Alex
QEMU test suite: updated for latest ROM dumper - now working on all EOS models - always update to latest version - allow RESCUE.LOG alongside with the ROM dumps - report extra files on the SD card, if any
Alex
QEMU: make sure all models have correct ROM sizes defined - do not allow ROM files with duplicate data - most models do not have ROM0; only define where it is actually used - ROM0/1, where present, should be defined with the right size (too low - won't boot; too high - will fail the duplication test) - test results: context changed in some models without ROM0 (noise from the ROM dump was sometimes pointing to strings in ROM1) https://www.magiclantern.fm…
Alex
GDB scripts: workaround to prevent GDB from crashing on 5D It appears to be a bug in GDB, e.g. trying to access guest memory when setting a convenience variable. Reprogramming the MPU to allow memory access where GDB expects it appears to do the trick for now.
Alex
GDB scripts: fixed CURRENT_ISR on A1100
Alex
QEMU: defined CURRENT_ISR on VxWorks models (5D, 40D, 400D, 450D, 1000D) The interrupt ID is only stored the stack, but the address appears to be repeatable for the first nesting level. Better than nothing.
Alex
QEMU: fixed CURRENT_TASK for 5D (both GDB script and model_list.c)
Alex
QEMU: updated CURRENT_ISR for EOS M5; workaround for current_task_addr
Alex
GDB scripts: updated formatting of CURRENT_ISR on 200D, 800D, 77D, 6D2, 750D (non-functional)
Alex
GDB scripts: updated CURRENT_ISR for 100D and 1300D to use the latest hypothesis (right before the interrupt ID, there is a counter telling whether we are running from interrupt or not, on all models so far)
Alex
MPU spells: fix possible buffer overflow when interpreting messages
Alex
QEMU test suite: use larger GUI timeouts for 70D, 1100D, 1200D, 1300D, EOSM and EOSM2, alongside 100D Fixes some intermittent failures in GUI tests, narrowed down to first button press being sent before starting Canon's GuiMainTask.
Alex
QEMU test suite: minor fix (colors incorrect if QEMU was already running)
Alex
QEMU: experimental SD/CF clock tests (some DIGIC 3/4 models; working only in bootloader context; disabled by default) These were used to fix/test the portable ROM dumper on old models. FIXME: with these changes, main firmware does not boot, so they were disabled.
Alex
QEMU: log all unhandled MMIO events, even if they repeat (this "feature" interferes with debugging; was present since the first commit, in 2013)
Alex
QEMU: fix overflow in eos_ml_helpers.c (qprintf)
Alex
Memory backend: use const char * for read-only strings
Alex
tasks: use const char * for DryOS task names
Alex
tasks.h: renamed current_task->name to current_task->task_name; updated old code to use get_current_task_name() instead. A few places still require raw access to the task_name field (e.g. tskmon).
Alex
get_current_task_name: updated interrupt ID for DIGIC 6/7/8 (no need to shift it by 2, unlike DIGIC 5 and earlier)
Alex
get_current_task_name: moved into tasks.h to remove duplicate code It was in 5 different places in ML source, not counting current_task->name and QEMU source.
Alex
log-d678: maximum MPU message size is 0xFF chars (no reason to use a smaller size)
Alex
log-d678: use 512 bytes for MPU messages; use the same buffer for both mpu_send/recv
Alex
log-d678: only check for MPU messages on the first CPU core (they don't arrive on the second core anyway, but our checks may cause race conditions)
Alex
log-d678: attempt to use Canon's cli/spinlock function on DIGIC 7/8 (200D for now) It appears to be some sort of cli/sei valid for both cores. To be tested.
Alex
arm-mcr.h: read_cpsr
Alex
spinlock: volatile keyword is required
Alex
Moved spinlock functions into arm-mcr.h (spin_lock, spin_unlock); refactored log-d678.c
Alex
log-d6: __sync_lock_test_and_set requires an explicit spinning loop https://stackoverflow.com/questions/1383363/is-my-spin-lock-implementation-correct-and-optimal
Alex
log-d678: attempt to log messages from both CPU cores on DIGIC 7/8 (to be tested on real hardware) http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka4175.html http://infocenter.arm.com/help/topic/com.arm.doc.ddi0388f/CBBDIIFI.html
Alex
Renamed log-d6.[ch] to log-d678.[ch] and minimal-d6.c to minimal-d678.c These files are starting to get code specific to DIGIC 7/8. They are not directly usable on DIGIC 8 yet, as most of the functions we need to override are in ROM. Only in QEMU for now.
Alex
arm-mcr.h, log-d6.h: renamed get_cpuid to get_cpu_id to avoid confusion with CPUID aka CPU model identification MPIDR is not 100% correct; we extract only specific bits from it. These bits are called "CPU ID" in ARM docs. http://infocenter.arm.com/help/topic/com.arm.doc.ddi0388e/CIHEBGFG.html
Alex
log-d6: refuse to run on CPU cores other than #0 Fixes corrupted logs on DIGIC 7/8 (confirmed on 200D by @names_are_hard ). Cause: race condition between the two processor cores. Even if we load ML on core #0 only, when overriding DebugMsg / ISR hooks / etc, the change is also visible from the second core. Disabling interrupts won't help. TODO: figure out how to do mutual exclusion between the two cores.
Alex
arm-mcr.h: get_cpuid() for multi-core processors (DIGIC 7/8)
Alex
5D4: hardcoded logging buffers, based on chris_overseas' experiment https://www.magiclantern.fm/forum/index.php?topic=17695.msg212320#msg212320 CONFIG_MMIO_TRACE works in QEMU.
Alex
io_trace: allow CONFIG_MMIO_TRACE for minimal targets, too (removed the 80D workaround)
chris_miller
5D4: updated the codebase to 1.1.2 3bf2df7, 73990b1, 24dbfdb, c0f8a82, 3e04262 from https://bitbucket.org/chris_miller/ml-fork/branch/5d4-112
Alex
check-stubs.py: also check ROM/RAM contents, 8 bytes for each stub (optional) RAM files should be created with the Portable ROM dumper. RAM files, if any, should be created with romcpy.sh (QEMU: -d romcpy).
Alex
check-stubs.py: updated heuristics for DIGIC 6/7/8 - everything above E0000000 is ROM - check parity differences (Thumb bit) - check "delta" changes (it's expected to drift, but no large jumps)
Alex
EOS R: skip 0x82000000-0x83000000 for CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP (apparently used as shared memory by a secondary core, codenamed Shirahama)
Alex
EOS R: UNCACHEABLE macro is no longer valid; using a workaround for CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP
Alex
EOS R, M50: updated CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP (see bee6ec3 for details and usage notes)
Alex
M50: uart_printf (not yet used, but... required to compile)
Alex
EOS R: added uart_printf for easier debugging
Alex
minimal-d78: need to call FIO_RemoveFile before FIO_CreateFile
Alex
EOS R: LED test code (not enabled by default)
Alex
EOS R: updated to 1.1.0 (note to self: check firmware version next time)
Alex
EOS R: initial platform directory - firmware 1.0.0 - boot process tested in QEMU - confirmed to boot on real hardware - very simple logging works (with Canon's DebugMsg) - ROM dumping from main firmware also works
Alex
reboot.c: debug code for jumping into Canon's main firmware (disabled by default)
Alex
DIGIC 8: MMIO tricks required to boot (tested on EOS R; maybe also needed on M50/SX70)
Alex
DIGIC 6: moved MMIO boot tricks in reboot.c - for consistency - 7D may use two different boot methods ("classic" and "cache hack"); keeping this in reboot.c reduces code duplication - in the future, we will want to be able to jump to any Canon firmware from the same binary; this will have to be done from reboot.c
Alex
7D, 7D2, 5DS, 5DSR: use CONFIG_DUAL_DIGIC (to enable the specific boot tricks)
Alex
CONFIG_DIGIC_version is now mandatory; defined CONFIG_DIGIC_IV on models using one.
Alex
7D2: added missing stubs and other definitions (to be tested - will it boot?)
Alex
5DS R: initial platform directory - boot process tested in QEMU (without file I/O) - boots on the camera (confirmed by @jcareaux) - basic logging works (including our DebugMsg) - todo: try the remaining 80D/5D4 experiments
Alex
Makefile: removed unnecessary AUTOEXEC_BASE and FIR_BASE sed -i.bak '/AUTOEXEC_BASE/d' */Makefile.platform.default sed -i.bak '/FIR_BASE/d' */Makefile.platform.default
Alex
reboot.c: make firmware signature mandatory fw-signature.h: fixed/added signatures for models that didn't compile (5D3.123, 700D.115, 5DS.111)
Alex
reboot.c: minor cleanups
Alex
5DS: compile as DIGIC 6 (to be tested)
Alex
Merged 5Ds_experiments into digic6-dumper
Alex
5DS: moved experimental minimal.c into platform/5DS.111 and reverted changes to main minimal.c (to help with merging)
Alex
DIGIC 7/8: use -march=armv7-a, thanks srsa https://www.magiclantern.fm/forum/index.php?topic=23296.msg211963#msg211963
Alex
DIGIC 7/8: updated comment about CPU type and Thumb-loaded binaries
Alex
760D, 77D, 6D2: fix compilation; minor Makefile cleanups (will compile the reboot-dumper experiments, i.e. LED blinking)
Alex
80D: minor cleanups - stubs: removed unused dm_set_store_level; updated comments for mpu_send/recv - Makefile: comments about RESTARTSTART
Alex
80D: firmware signature for 1.0.2
Alex
log-d6: only enable LOG_EARLY_STARTUP on 80D (this is to make sure the code works out of the box on other D6/7/8 models)
Alex
io_trace: log the entire MMIO range, including Omar/Zico communication https://www.magiclantern.fm/forum/index.php?topic=17360.msg211708#msg211708
Alex
io-trace: log the Thumb bit alongside with PC One may now tell whether MMIO events were triggered by ARM or Thumb code.
Alex
io_trace: also log LR for each MMIO event
Alex
io_trace: restore LR when re-executing the original instruction Does it help with any of the tricky ranges? e.g. BFE00000/200000 or BFF00000/100000
Alex
io_trace: fix number of MMIO events reported (minor)
Alex
log-d6: do not log MMIO events for our own timestamping code (slightly less noise in the logs)
Alex
io_trace: fully working on 80D in QEMU! To merge the logs: cat MMIO.LOG DEBUGMSG.LOG | sort -n
Alex
io_trace: minimalist DIGIC 6 port, with inline ARM/Thumb instruction re-execution Expected output: - on real hardware: - no crash, everything working as usual, including our logging code - no new information in the logs (yet) - in QEMU: - data abort exception for each MMIO event - every trapped instruction disassembled correctly, whether ARM/Thumb16/Thumb32 (printed as green) - code returning to next instruction (execution trace should be checked on 3 cases: ARM/…
Alex
io_trace: minimalist DIGIC 6 port, for debugging Only one MMIO event will be captured. Compile with: make CONFIG_MMIO_TRACE=y Expected outcome: - on real hardware: no crash - in QEMU, with `CONFIG_QEMU=y`: ./run_canon_fw.sh 80D,firmware=boot=1 -d exec,io,int,v,autoexec |& grep -a -B 10 -A 50 'Data Abort' 0xfe0d32ec: 6800 ldr r0, [r0, #0] ; instruction attempting to perform MMIO FE0D32EC: Taking exception 4 [Data…
Alex
Imported io_trace code from 296fdfb. Doesn't compile.
Alex
log-d6: fix some warnings
Alex
log-d6: attempt to use cacheable memory for logging buffer Expecting smaller overhead for the logging code.
Alex
Experiment - verbose startup logging on 80D Using hardcoded buffer address, as we don't have malloc during startup. https://www.magiclantern.fm/forum/index.php?topic=17360.msg211065#msg211065
Alex
Experiment - find unused memory areas on DIGIC 6 Usage: - compile with CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP enabled in src/config-defines.h - the startup process will be slower than usual (it might even lock up) - during the LED blinks (about 1 minute), exercise the camera a bit (open Canon menu, enter LiveView, take a photo and record a short video clip) - after the LED finishes blinking, a log file will be saved, showing what memory areas mig…
Alex
CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP: fixed compilation and updated for DIGIC 6/7/8 (it's slower than it should be on earlier models, but still functional)
Alex
log-d6: human-readable timestamps
Alex
QEMU: fixed shift warning in logging.c (found with UBSan)
Alex
QEMU: fixed shift warnings in disas.c (found with UBSan)
Alex
QEMU: fixed buffer overflow warning in serial_flash.c (found with ASan; not affecting well-behaved code)
Alex
QEMU: fixed underflow in logging.c (found with ASan)
Alex
QEMU: fixed underflow in debugmsg.c (found with ASan)
Alex
QEMU: fixed shift warnings in logging.c (found with UBSan)
Alex
QEMU: fixed shift warnings in eos.c (found with UBSan)
Alex
QEMU: workaround for compiling with -fsanitize=undefined in digic.c (possibly gcc bug)
Alex
QEMU: imported https://github.com/qemu/qemu/commit/30628cb12de Fixes compilation with -fsanitize=undefined
Alex
QEMU: imported https://github.com/qemu/qemu/commit/9005774b27b Fixes crash with long GDB requests on Mac - https://www.magiclantern.fm/forum/index.php?topic=2864.msg210189#msg210189
Alex
configure_eos.sh: fix passing arguments containing spaces
Alex
QEMU: debug message for sd_blk_write, similar to sd_blk_read (not compiled by default; uncomment DEBUG_SD in sd.c to enable)
Alex
QEMU: fixed some CPU ID registers to match CPUINFO logs on DIGIC 2..5 D5: https://www.magiclantern.fm/forum/index.php?topic=17714.msg170948#msg170948 (70D) D4: https://www.magiclantern.fm/forum/index.php?topic=17714.msg171742#msg171742 (1200D) D2/3: https://chdk.setepontos.com/index.php?topic=2139.0 (mostly identical to D4, except for slightly different MPU configurations) - removed the XSCALE hack to emulate DTCM/ITCM properly - using "arm946-eos5" to model the di…
Alex
QEMU: fixed some CPU ID registers to match CPUINFO logs on DIGIC 6 and 7 - D6: https://www.magiclantern.fm/forum/index.php?topic=17714.0, https://www.magiclantern.fm/forum/index.php?topic=17360.msg202322#msg202322 - D7: https://www.magiclantern.fm/forum/index.php?topic=19737.msg200737#msg200737, https://chdk.setepontos.com/index.php?topic=13014.msg131109#msg131109
Alex
annotate_mpu_log: allow operation with button codes from another camera model
Alex
annotate_mpu_log: also label unknown GUI events
Alex
QEMU: unified EOSM and EOSM2 button definitions Differences on previous definitions: - zoom events are internal; they should be enabled on both models - delete button should be checked in Canon menu with a MPU log, https://www.magiclantern.fm/forum/index.php?topic=2864.msg206275#msg206275 - no Av button
Alex
QEMU: unified 650D and 700D button definitions
Alex
QEMU: removed rear scrollwheel emulation from Rebel models (they were auto-generated)
Alex
QEMU: GMT_GUICMD_CLOSE_SLOT_COVER, GMT_GUICMD_CLOSE_BATT_COVER, GMT_GUICMD_LOCK_ON (common to all models; definitions only for now)
Alex
QEMU: comments for Q button on 60D, 600D, 1100D, 550D (600D/1100D use a different button code in LiveView; emulation is not fully correct)
Alex
QEMU: enabled old-style zoom button events for 5D3 and 6D (apparently still used internally, during GUI mode changes)
Alex
QEMU: Delete button emulation for 1100D/1200D This button code appears to be used only in Canon menu. Outside menus, i.e. in photo mode and LiveView, it works as Av. This change allows one to toggle the low-level format option in Canon menu.
Alex
QEMU: fix RATE and PicStyle buttons for 5D3
Alex
GDB scripts: log calls to named functions (useful for initial porting experiments; stubs for 5D3, 5D4, 80D, 200D)
Alex
GDB scripts: misc cosmetic tweaks
Alex
GDB scripts: silence all tbreak messages (with helpers to silence any other messages)
Alex
GDB scripts: export state object definitions as Python code (useful to create state machine diagrams and other automated analysis)
Alex
GDB scripts: documented every single user command in debug-logging.gdb From GDB prompt, run "help user-defined" to see these commands. Also included a test to make sure no other undocumented commands will be added in future.
Alex
GDB scripts: xxd wrapper https://stackoverflow.com/questions/9233095/memory-dump-formatted-like-xxd-from-gdb
Alex
GDB scripts: ADTG/CMOS/ENGIO logging helpers (stubs for 60D and EOSM2)
Alex
GDB scripts: moved whitespace placeholder to a function; fixed alignment on multi-core models
Alex
GDB scripts: updated register_func to handle model-specific quirks - D4 and newer: some functions are registered indirectly, using a wrapper - VxWorks models, except 400D: register_func takes only 2 arguments - fixed stub address on 77D and 5D3 113 - this change fixes auto-generated names (rather than naming the wrapper, it now identifies the right function)
Alex
QEMU: CF bit in ClockEnable register
Alex
backtrace: redirect debug messages to QEMU console, rather than discarding them
Alex
Merged in ccritix/magic-lantern-3-200d/ccritix/stubss-edited-online-with-bitbucket-1536901475678 (pull request #945)
Alex
200D: file I/O stubs (passing stub_test_file_io from selftest.c)
Alex
Close branch
Alex
200D: memory allocation stubs
Alex
200D: keeping only stubs we are going to use; fixed Thumb bit
Cristian Campean
Several stubs found for 200D
Alex
M50: dumper finally works if ROM contents is copied to RAM first (file I/O DMA apparently unable to read directly from ROM?)
Alex
M50: memory allocation stubs
Alex
M50: FIO stubs (not tested)
Alex
boot-d78: cache maintenance routines apparently expected to preserve R3 M50 boots!
Alex
reboot.c: M50 (possibly others too) are loading FIR files on both CPU cores; since our startup core is not prepared for that, let's jump to main firmware on secondary cores
Alex
reboot-dumper.c: attempt to identify LED address on DIGIC 8 (for EOS R, based on M50 LED addresses; unsuccessful)
Alex
reboot-dumper.c: polyglot startup code
Alex
minimal-d6: updated LV RAW experiments
Alex
5D4: firmware signature for 1.0.4
Alex
QEMU: fix handling replies of duplicate MPU messages (encountered in 80D, maybe others)
Alex
MPU spells: comment out photo capture from startup logs (affects 450D and 1000D)
Alex
MPU spells: documented PROP_BOARD_TEMP and renamed PROP_AF_DURING_RECORD/PROP_MOVIE_REC_AF to PROP_SHUTTER_AF_DURING_RECORD
Alex
QEMU tests: retry screenshots if there apparently was a successful match followed by a (possibly transient) difference
Alex
QEMU tests: fixed some transient screenshots (optional double-checking code to autodetect them)
Alex
GDB scripts: register_cmd (for DryOS shell functions) Useful for naming a few more functions, but requires entering the DryOS shell to trigger them. Stubs for 5D3.
Alex
GDB scripts: make sure all EOS models have CreateStateObject defined (only test models with this string present in the ROM)
Alex
GDB scripts: make sure all models have register_func (RegisterEventProcedure) defined Exception: Eeko.
Alex
QEMU: workaround for running GDB tests on 7D
Alex
QEMU: fix 7D LED assertion
Alex
QEMU tests: fix race condition when checking GDB scripts (shared file)
Alex
GDB scripts: 800D comments, for consistency with other platforms
Alex
GDB scripts: print "(null)" in other places where string arguments might be optional
Alex
GDB scripts: 5D4 uses a new syntax for create_semaphore (name is the third argument)
Alex
QEMU: 5D4 emulation updated for firmware 1.1.2 - updated test results and GDB script - fixed serial flash read interrupt; file I/O working!
Alex
GDB scripts: print "(null)" for empty semaphore / message queue names (auto-search the ROM for this string constant, as otherwise we'd need to define a malloc symbol for each camera model) If the "(null)" string is not found in the firmware, the GDB tests will fail with timeout.
Alex
QEMU: disabled eos_handle_rom MMIO handlers (unused, only triggered incorrectly on Eeko, where they caused a crash)
Alex
GDB scripts: fix pausing prompt on short terminals
Alex
Removed some CONFIG_QEMU entries that are no longer needed - cache_hacks.h: these are now emulated reasonably well - 5D2: old leftover in gui.c
Alex
minimal-d6: 5D4 VRAM experiments
Alex
log-d6: option to toggle between early startup logging (without malloc) and extended logging (with malloc => larger logs possible)
Alex
minimal-d6: LED blink test
Alex
5D4: updated startup code and ported the 80D logging experiments
Alex
5D4: make sure it compiles reboot-dumper
Alex
5D4: updated stubs; not tested yet
John Cheshire
Following on from Chris Miller's initial work, I have found so far 18 more stubs
chris_miller
5D4 - initial commit. Not much yet, just a few stubs filled in.
Alex
5D4: preparing to update to 1.0.4 (hg rename; updated comments and version numbers)
Alex
200D, M50: forgot to add empty gui.h
Alex
200D: fixed vsnprintf stub (previous one didn't work with large hex numbers, e.g. "%08X" % 0xE04BDCE7 printed "913")
Alex
Minimal targets: only compile subdirectories with a valid Makefile
Alex
QEMU tests: FA_CaptureTestImage works on 1300D (prints "Image Power Failure", but the fix is not straightforward)
Alex
200D: enabled logging code written for 80D (worked in QEMU after some minor changes)
Alex
log-d6: we've got a 32-bit DIGIC timer https://www.magiclantern.fm/forum/index.php?topic=17360.msg202319#msg202319
Alex
log-d6: minor changes to reduce stack memory usage
Alex
log-d6: use "const" for variables or data structures in the firmware
Alex
imath.h: macro for incrementing a variable modulo N
Alex
Boot process: patching the call to cstart is no longer needed (removed HIJACK_INSTR_BL_CSTART)
Alex
Merged patchmgr into digic6-dumper (arm-mcr.h updates)
Alex
arm-mcr.h: updated cache maintenance operations for DIGIC 7 & 8 (to be tested)
Alex
arm-mcr.h: minor cleanups, non-functional: - moved _sync_caches in the old place - commented out setup_memory_region et al
Alex
minimal-d6: fix compilation (ml_assert_handler as dummy stub)
Alex
Merged lua_fix into digic6-dumper
Alex
Init: removed dm_names (one less stub to worry about)
Alex
Init: removed CONFIG_EARLY_PORT (not working anyway; please use CONFIG_HELLO_WORLD instead)
Alex
Removed boot-hack.c and refactored the boot process: - moved platform-specific code into boot-*.c - moved platform-independent code into init.c - "cache hacked" boot process moved to boot-d45-ch.c - "AllocateMemory" boot process moved to boot-d45-am.c
Alex
Merged new-dryos-task-hooks into digic6-dumper
Alex
Tasks: new method for checking whether an interrupt is active (old method was not compatible with DIGIC 7; to be tested on all models)
Alex
80D, 200D, M50: timer stubs (for qemu-hptimer test)
Alex
Minimal targets & installer: moved platform-dependent startup code into boot-*.c / boot.h This change allows compiling the above targets on DIGIC 6, 7 and 8 models, alongside D4 and 5. TODO: same refactoring for VxWorks and 1300D.
Alex
80D: moved minimal logging code to top level, for easier porting to other DIGIC 6 models (80D.102/minimal.c,log.[ch] -> src/minimal-d6.c,log-d6.[ch]) Also enabled for 7D2, but not working yet (missing stubs; startup code needs tweaking).
Alex
DIGIC 6,7,8: preparing to fix minimal targets (not working yet) - do not override ML_MINIMAL_OBJ when compiling from minimal directory - use platform-specific CFLAGS for minimal targets
Alex
Merged qemu into digic6-dumper
Alex
M50: dm_set_store_level stub not needed
Alex
Makefile: when running "make install", copy ML-SETUP.FIR only for the generic profile (not for minimal or other targets)