Wikia

CHDK Wiki

For Developers

Talk34
565pages on
this wiki
Revision as of 15:39, October 16, 2013 by Nafraf (Talk | contribs)

Notice

Builds from the CHDK unstable dev branch can be found at Trunk Autobuild


The table below is color coded to show the status of development work on porting CHDK to different cameras. If there is some work being done to port to a particular camera, there should also be a link to a camera-specific development page.

Firmware dumps for all CHDK supported cameras are currently archived here : CHDK on Google Drive

The page also has links to articles which could be useful if you want to participate in the development process.

Cameras overview

DIGIC - (VxWorks OS)
Sx IS: S1IS
DIGIC II - (VxWorks OS)
Axxx: A410 | A420 | A430 | A450 | A460 | A530 | A540 | A550 | A610 | A620 | A630 | A640 | A700 | A710IS
SDxx: SD30
SDxxx(IXUS): SD200 (IXUS30) | SD300 (IXUS40) | SD400 (IXUS50) | SD430 (IXUS Wireless) | SD450 (IXUS55) | SD500 (IXUS700) | SD550 (IXUS750) | SD600 (IXUS60) | SD630 (IXUS65) | SD700 (IXUS800IS)
Sx IS: S2IS | S3IS
Sxx: S80
EOS: 20D | 30D | 350D (Rebel XT) | 400D (Rebel XTi) | 5D
HVxx: HV20 | HV30 | HF10 | HF100 (DIGIC DV II, DryOS OS + Toshiba TX19A/ITRON4 OS)

DIGIC III - (VxWorks OS)
Axxx: A560 | A570IS
SDxx: SD40 / i7 zoom
SDxxx(IXUS): SD750 (IXUS75) | SD800IS (IXUS850IS) | SD850IS (IXUS950IS) | SD900 (IXUS900Ti) | SD1000 (IXUS70)
Gx: G7
EOS: 40D | 450D (Rebel XSi) | 1000D (Rebel XS)
TXx: TX1

DIGIC III - (DryOS OS)
Axxx: A470 | A480 | A490 | A495 | A580 | A590IS | A650IS | A720IS | A800
Axxxx IS: A1000IS | A2000IS | A3000IS | A3100IS | A3150IS
SDxxx(IXUS): SD770IS (IXUS85IS) | SD790IS (IXUS90IS) | SD870IS (IXUS860IS) | SD890IS (IXUS970IS) |SD950IS (IXUS960IS) | SD1100IS (IXUS80IS)
Sx IS: S5IS
SXxxx IS: SX100IS | SX110IS
Gx: G9
Ex: E1

DIGIC IV - (DryOS OS)
Axxx: A810
Axxxx IS: A1100IS | A1200 | A1300 | A1400 | A2100IS | A2200 | A2300 | A2400IS | A2500 | A2600 | A3200IS | A3300IS | A3400IS | A3500IS | A4000IS
Dxx: D10 | D20
SDxxx(IXUS): SD780IS (IXUS100IS) | SD880IS (IXUS870IS) | SD940IS (IXUS120IS) | SD960IS (IXUS110IS) | SD970IS (IXUS990IS) | SD980IS (IXUS200IS) | SD990IS (IXUS980IS)
SDxxxx(IXUS): SD1200IS (IXUS95IS) | SD1300IS (IXUS105IS) | SD1400IS (IXUS130IS) | SD3500IS (IXUS210IS) | SD4000IS (IXUS300HS) | SD4500IS (IXUS1000HS)
Sxx: S90 | S95
SXx IS: SX1IS
SXxx IS: SX10IS | SX20IS | SX30IS
SXxxx IS: SX120IS | SX130IS | SX150IS | SX160IS | SX170IS | SX200IS | SX210IS | SX220 HS | SX230 HS | SX500IS
Gxx: G10 | G11 | G12
EOS: 1D Mark IV | 5D Mark II | 50D | 500D (Rebel T1i) | 550D (Rebel T2i) | 7D | 60D | 600D (Rebel T3i) | 1100D (Rebel T3)
ELPH: ELPH115 IS (IXUS 132) | ELPH130 IS (IXUS 140) | ELPH300 HS (IXUS 220 HS) | ELPH500 HS (IXUS 310 HS) | ELPH100 HS (IXUS 115 HS & IXUS 117 HS) | ELPH310 HS (IXUS 230 HS) | ELPH510 HS (IXUS 1100 HS , IXY 51S)

DIGIC V - (DryOS)
ELPH: ELPH 110 HS (IXUS 125 HS) | ELPH320 HS (IXUS 240 HS) | ELPH330 HS (IXUS 255 HS) | ELPH520 HS (IXUS 500 HS) | ELPH530 HS (IXUS 510 HS)
Sxxx: S100 | S110
SXxx HS: SX40HS | SX50HS
SXxxx HS: SX240 HS | SX260 HS
Gxx: G1 X | G15

DIGIC VI - (DryOS)
SXxxx HS: SX270 HS | SX280 HS
Legend
  • Black - neither original firmware nor firmware dump is available
  • Red - Camera has responded to something on the card, but a firmware dump has not succeeded, current udumper code does not work on these cameras.
  • Blue - either original firmware or firmware dump is available; porting is needed
  • Magenta - A developer has started the porting process for this camera AND an alpha or early beta build with a limited feature set is available for testing
  • Green - A port has been completed on one or more firmware versions for this camera, the sources are in the trunk and the binaries are available from the Autobuild server.
  • Cyan - There is no active development of CHDK for this Camera, but there is an active development and a working version of the Magic Lantern firmware addon for Canon DSLRs.


Note: the porting process entails:

  1. get the camera to somehow respond to something on the card. (cameras in Red)
  2. using the process that got you step 1, and some electronics, read out a copy of the existing firmware (e.g., dump the firmware). (cameras in Blue)
  3. analyze the firmware, find out where key routines are.
  4. modify the source code to add the locations of these key routines
  5. compile the software and CHDK runs on the camera in some limited state (cameras in Magenta)
  6. After all minor bugs are fixed the build can be added to the trunk (cameras in Green)

Common articles

Notice

Several CHDK development related files, tools and utilities are also available from here: mirror DL location


Release Strategy
Release strategy and road map
Modifying the Source Code
Basic information about project structure.
Compiling the CHDK under GNU/Linux
Compiling the CHDK under Mac OS X
Compiling the CHDK under Windows
How to tune build environment and compile CHDK.
Obtaining a firmware dump
Various methods of getting of firmware dump.
Adding support for a new camera
How to add support for a new camera model.
Adding support of a new firmware version
How to add support for a new canon firmware revision of an already supported model.
Testing a new port
A simple fact is that most new CHDK ports are done by people with little or no previous experience with CHDK. Which means they are not really familiar with how CHDK is supposed to work and this makes comprehensive testing difficult. It is therefore recommended that in addition to working through the various CHDK manuals to assure at least some compliance with how things are suppose to work, testers try some scripts that will test some of the basic functionality : Testing Wiki Page
CHDK-PT : A tool for porting CHDK to different firmware versions of the same camera
Alternate software tool for porting between different firmware versions of the same camera.
Loading dump to IDA
Using IDA for a dump analysis.
IDA Visual Analysis
Visual graph analysis tools.
Signature finder
Finding signatures automatically with the "Signature finder" (finsig/gensig) tool
GPL Tools
Documentation for using GNU/GPL tools for binary blobs analysis
CHDK Coding Guidelines
Cautions and best practices for CHDK code.
Optimizing ARM sourcecode
How to make your CHDK code run more efficiently.
Camera RAM memory usage
How to optimize RAM usage, also some statistics...
Debugging
Tools and techniques for debugging CHDK code
Adding Firmware Features
A guide for finding and adding stuff from the firmware to CHDK and uBASIC.
PTP Extension
Article about the (experimental) CHDK PTP extension
ExMem - enabling and loading CHDK into extended memory.
Article about using ExMem extended memory to load CHDK and increase free memory.
DryOS Porting
Information about the new (in 2007) OS. This contains useful information from the initial porting effort, but DryOS is now well supported. Adding support for a new camera should be the primary reference.
Camera Functionality Documentation
Reference for functionality found in camera (and used by CHDK).
Documentation of the Sourcecode
Yes, some documentation is also required.
Bug tracking and feature requests with Mantis
How to use Mantis to report bugs/issues found in CHDK, request features, submit contributions.

Some technical info

List of PropertyCases
List with description of special registers which indicate and control DIGIC processor.
List of Params
List with description of special registers which indicate and control DIGIC processor.
Camera IDs
List of camera product IDs, OS version and release dates.
Event Procedure
List of camera Event Procedure
Developer Technical Documents
Useful external documents relating to processor, OS and relevant standards.
Canon error codes
List of error codes (and their textual representation) known by the firmware.

Around Wikia's network

Random Wiki