Cameras based on the Digic 6 processor differ significantly from previous generation cameras. CHDK support is for these cameras is a work-in-progress as of late 2016. The page collects information relevant to creating CHDK ports for Digic 6 cameras.
It is likely that some of this applies to Digic 6+ and Digic 7, but only limited analysis has been done.
Significant differences from prior Digic versionsEdit
- The main CPU is now a Cortex-R4 (armv7 architecture). Digic 7 appears to use a different CPU, possibly Cortex A9.
- The majority of Canon firmware code is in the Thumb2 instruction set. The varying size of instructions makes disassembly significantly more difficult, and prevents existing CHDK tools from working on these firmwares.
- Several other CPUs exist, including an Xtensa core.
- The display is (probably) driven by a TAKUMI GPU, somehow connected to the Xtensa core
- Viewport and bitmap display frame buffer formats have changed significantly
Digic 6 ProcessorsEdit
As mentioned above, Digic 6 contains multiple different CPUs
The main ARM core where CHDK and the main Canon firmware runs
The Xtensa core responsible for the GPU. Strings like "mzrm" refer to Marius / Zico communication.
- User:Srsa_4c/GPL:disassemblev7.pl - Perl script to disassemble full digic 6 ROM.
- capdis - CHDK oriented disassembly tool, based on capstone. Useful for full dump disassembly and extracting ASM code for CHDK. See Capdis Disassembly Tool for usage information. In SVN trunk.
- Finsig thumb2 - Function / variable finder for thumb2 firmware, inspired by Signature finder. In SVN trunk.
- An interactive Disassembly viewer - GUI by User:Srsa_4c
Known Digic 6 (and later) ports and porting attempts
Ports with usable builds available
- SX270 / SX280 (also includes SX275) - Porting thread - The first Digic 6 port, by User:Srsa 4c
- G7 X - G7 X Porting thread
- EOS M10 - EOS M10 Porting thread
- EOS M3 - EOS M3 Porting thread
- SX60HS - SX60HS Porting thread
- G16 - G16 Porting thread
- SX710 - SX710 Porting thread
- SX700 - sx700 Porting thread
Other ports that were started but don't yet have published usable builds
Useful forum threadsEdit
General topics related to Digic 6 development
- chdk in the DIGIC6 world - General development, discussion of the different CPUs.
- finsig and other tools for thumb2 - Tools for disassembling and automatically detecting variables and functions in Digic 6 code
- Display (bitmap overlay) - Discussion of various issues related to Digic 6 display
- digic 6 motion detection - Development discussion related to motion detection support. Working code in SVN.
- Firmware Dumping / Canon EOS M5 - Initial investigation of Digic 7
- Raw buffers in digic 6