No edit summary Tags: Visual edit apiedit |
(sx620 in autobuild, replace tinyurls blocked by wikia spam filter) |
||
(42 intermediate revisions by 11 users not shown) | |||
Line 4: | Line 4: | ||
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. |
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 : [ |
+ | Firmware dumps for all CHDK supported cameras are currently archived here : [https://drive.google.com/drive/u/0/folders/0B08pqRtyrObjTy11Y003Sk1lYTQ CHDK on Google Drive] |
The page also has links to articles which could be useful if you want to participate in the development process.1 |
The page also has links to articles which could be useful if you want to participate in the development process.1 |
||
Line 93: | Line 93: | ||
|- valign="top" |
|- valign="top" |
||
| align="right" |'''SDxxx(IXUS)''': |
| align="right" |'''SDxxx(IXUS)''': |
||
− | |[[SD780IS|{{color|green|SD780IS (IXUS100IS)}}]] {{Delimiter}} [[IXUS870IS|{{color|green|SD880IS (IXUS870IS)}}]] {{Delimiter}} [[SD940|{{color|green|SD940IS (IXUS120IS)}}]] {{Delimiter}} [[SD960IS|{{color|green| SD960IS (IXUS110IS)}}]] {{Delimiter}} [[SD970IS|{{color| |
+ | |[[SD780IS|{{color|green|SD780IS (IXUS100IS)}}]] {{Delimiter}} [[IXUS870IS|{{color|green|SD880IS (IXUS870IS)}}]] {{Delimiter}} [[SD940|{{color|green|SD940IS (IXUS120IS)}}]] {{Delimiter}} [[SD960IS|{{color|green| SD960IS (IXUS110IS)}}]] {{Delimiter}} [[SD970IS|{{color|magenta|SD970IS (IXUS990IS)}}]] {{Delimiter}} [[SD980IS|{{color|green|SD980IS (IXUS200IS)}}]] {{Delimiter}} [[SD990|{{color|green|SD990IS (IXUS980IS)}}]] |
|- valign="top" |
|- valign="top" |
||
| align="right" |'''SDxxxx(IXUS)''': |
| align="right" |'''SDxxxx(IXUS)''': |
||
Line 125: | Line 125: | ||
|- valign="top" |
|- valign="top" |
||
| align="right" |'''ELPH''': |
| align="right" |'''ELPH''': |
||
− | |[[ELPH135|{{color| |
+ | |[[ELPH135|{{color|green|ELPH135 (IXUS 145)}}]] {{Delimiter}} [[ELPH140|{{color|green|ELPH140 IS (IXUS 150)}}]] {{Delimiter}} [[ELPH150|{{color|blue|ELPH 150 IS(IXUS 155)}}]] {{Delimiter}} [[IXUS160|{{color|green|ELPH160 (IXUS 160)}}]] {{Delimiter}} [[IXUS165|{{color|black|ELPH165 (IXUS 165)}}]] {{Delimiter}} [[ELPH170|{{color|blue|ELPH170 IS (IXUS 170)}}]] {{Delimiter}} [[ELPH180|{{color|green|ELPH180 (IXUS 175)}}]] {{Delimiter}} [[ELPH190|{{color|blue|ELPH190 IS (IXUS 180)}}]] {{Delimiter}} [[IXUS185|{{color|green|IXUS 185}}]] {{Delimiter}} [[ELPH200|{{color|blue|ELPH200 IS (IXUS 190)}}]] {{Delimiter}} [[ELPH340HS|{{color|blue|ELPH340 HS (IXUS 265 HS)}}]] {{Delimiter}} [[ELPH350HS|{{color|blue|ELPH350 HS (IXUS 275 HS)}}]] {{Delimiter}} [[ELPH360HS|{{color|magenta|ELPH360 HS (IXUS 285 HS)}}]] |
|- valign="top" |
|- valign="top" |
||
| align="right" |'''SXxxx HS''': |
| align="right" |'''SXxxx HS''': |
||
− | |[[SX520HS|{{color|green|SX520 HS}}]] {{Delimiter}} [[SX530HS|{{color|green|SX530 HS}}]] {{Delimiter}} [[SX600HS|{{color|blue|SX600 HS}}]] {{Delimiter}} [[SX610HS|{{color| |
+ | |[[SX520HS|{{color|green|SX520 HS}}]] {{Delimiter}} [[SX530HS|{{color|green|SX530 HS}}]] {{Delimiter}} [[SX600HS|{{color|blue|SX600 HS}}]] {{Delimiter}} [[SX610HS|{{color|green|SX610 HS}}]] {{Delimiter}} [[SX620HS|{{color|green|SX620 HS}}]] |
|- valign="top" |
|- valign="top" |
||
| align="right" |'''SXxxx IS''': |
| align="right" |'''SXxxx IS''': |
||
− | |[[SX400IS|{{color| |
+ | |[[SX400IS|{{color|green|SX400 IS}}]] {{Delimiter}} [[SX410IS|{{color|green|SX410 IS}}]] {{Delimiter}} [[SX420IS|{{color|magenta|SX420 IS}}]] {{Delimiter}} [[SX430IS|{{color|magenta|SX430 IS}}]] |
|- valign="top" |
|- valign="top" |
||
| colspan="2" |<br /><u>'''DIGIC V - (DryOS)'''</u> |
| colspan="2" |<br /><u>'''DIGIC V - (DryOS)'''</u> |
||
Line 156: | Line 156: | ||
|- |
|- |
||
| align="right" |'''EOS:''' |
| align="right" |'''EOS:''' |
||
− | | 7D Mark II |<nowiki> 5DS | 5DS R | 750D | 760D | 7D Mark II | 80D </nowiki>{{Delimiter}} [[M3|{{color|magenta|M3}}]] {{Delimiter}} [[M10|{{color| |
+ | | 7D Mark II |<nowiki> 5DS | 5DS R | 750D | 760D | 7D Mark II | 80D </nowiki>{{Delimiter}} [[M3|{{color|magenta|M3}}]] {{Delimiter}} [[M10|{{color|magenta|M10}}]] |
|- valign="top" |
|- valign="top" |
||
| align="right" |'''Gxx''': |
| align="right" |'''Gxx''': |
||
− | |[[G1 X Mark II|{{color|blue|G1 X Mark II}}]] {{Delimiter}} [[G3 X|{{color|blue|G3 X}}]] {{Delimiter}} [[G5 X|{{color| |
+ | |[[G16|{{color|green|G16}}]] {{Delimiter}} [[G1 X Mark II|{{color|blue|G1 X Mark II}}]] {{Delimiter}} [[G3 X|{{color|blue|G3 X}}]] {{Delimiter}} [[G5 X|{{color|green|G5 X}}]] {{Delimiter}} [[G7 X|{{color|green|G7 X}}]] {{Delimiter}} [[G9 X|{{color|blue|G9 X}}]] |
|- valign="top" |
|- valign="top" |
||
| align="right" |'''Sxxx''': |
| align="right" |'''Sxxx''': |
||
Line 165: | Line 165: | ||
|- valign="top" |
|- valign="top" |
||
| align="right" |'''SXxx HS''': |
| align="right" |'''SXxx HS''': |
||
− | |[[SX60HS|{{color| |
+ | |[[SX60HS|{{color|green|SX60HS}}]] |
|- valign="top" |
|- valign="top" |
||
| align="right" |'''SXxxx HS''': |
| align="right" |'''SXxxx HS''': |
||
− | |[[SX270|{{color| |
+ | |[[SX270|{{color|green|SX270 HS}}]] {{Delimiter}} [[SX280|{{color|green|SX275 HS}}]] {{Delimiter}} [[SX280|{{color|green|SX280 HS}}]] {{Delimiter}} [[SX540 HS|{{color|black|SX540 HS}}]] {{Delimiter}} [[SX700|{{color|green|SX700 HS}}]] {{Delimiter}} [[SX710|{{color|green|SX710 HS}}]] {{Delimiter}} [[SX720|{{color|blue|SX720 HS}}]] {{Delimiter}} [[SX730|{{color|magenta|SX730 HS}}]] |
|- valign="top" |
|- valign="top" |
||
| align="right" |'''Nxxx''': |
| align="right" |'''Nxxx''': |
||
Line 178: | Line 178: | ||
|- valign="top" |
|- valign="top" |
||
| align="right" |'''EOS''': |
| align="right" |'''EOS''': |
||
+ | |[[M5|{{color|blue|M5}}]] {{Delimiter}} [[M6|{{color|blue|M6}}]] {{Delimiter}} [[M100|{{color|blue|M100}}]] |
||
− | |M5 |
||
|- valign="top" |
|- valign="top" |
||
| align="right" |'''Gxx''': |
| align="right" |'''Gxx''': |
||
− | |[[G7 X Mark II|{{color| |
+ | |[[G7 X Mark II|{{color|blue|G7 X Mark II}}]] {{Delimiter}} [[G9 X Mark II|{{color|black|G9 X Mark II}}]] {{Delimiter}} [[G1 X Mark III|{{color|black|G1 X Mark III}}]] |
|} |
|} |
||
− | |||
;Legend |
;Legend |
||
:* Black - neither original firmware nor firmware dump is available |
:* Black - neither original firmware nor firmware dump is available |
||
Line 202: | Line 201: | ||
== Common articles == |
== Common articles == |
||
− | {{notice|Several CHDK development related files, tools and utilities are also available from here: [ |
+ | {{notice|Several CHDK development related files, tools and utilities are also available from here: [https://drive.google.com/drive/u/0/folders/0B08pqRtyrObjTy11Y003Sk1lYTQ mirror DL location]}} |
;[[Release Strategy]] |
;[[Release Strategy]] |
||
Line 220: | Line 219: | ||
;[[Adding support for a new camera]] |
;[[Adding support for a new camera]] |
||
: How to add support for a new camera model. |
: How to add support for a new camera model. |
||
+ | |||
+ | ;[[Digic 6 Porting]] |
||
+ | : Porting information specific to the Digic 6 architecture. |
||
;[[Adding support of a new firmware version]] |
;[[Adding support of a new firmware version]] |
||
Line 232: | Line 234: | ||
;[http://chdk.setepontos.com/index.php?topic=10098.0 code_gen] |
;[http://chdk.setepontos.com/index.php?topic=10098.0 code_gen] |
||
: a utility for creating the necessary CHDK task assembler files |
: a utility for creating the necessary CHDK task assembler files |
||
+ | |||
+ | ;[[Firmware analysis with Ghidra]] |
||
+ | : Using [https://ghidra-sre.org/ Ghidra] for a dump analysis. |
||
;[[Loading dump to IDA]] |
;[[Loading dump to IDA]] |
||
Line 272: | Line 277: | ||
: Reference for functionality found in camera (and used by CHDK). |
: Reference for functionality found in camera (and used by CHDK). |
||
+ | ;[[Bug reports and feature requests]] |
||
− | ;[[Documentate_the_CHDK_Sources | Documentation of the Sourcecode]] |
||
⚫ | |||
− | : Yes, some documentation is also required. |
||
− | |||
− | ;[[ Bug tracking and feature requests with Mantis| Bug tracking and feature requests with Mantis ]] |
||
⚫ | |||
== Some technical info == |
== Some technical info == |
Revision as of 22:30, 15 May 2020
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.1
Cameras overview
- 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:
- get the camera to somehow respond to something on the card. (cameras in Red)
- 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)
- analyze the firmware, find out where key routines are.
- modify the source code to add the locations of these key routines
- compile the software and CHDK runs on the camera in some limited state (cameras in Magenta)
- After all minor bugs are fixed the build can be added to the trunk (cameras in Green)
Common articles
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.
- Digic 6 Porting
- Porting information specific to the Digic 6 architecture.
- 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.
- code_gen
- a utility for creating the necessary CHDK task assembler files
- Firmware analysis with Ghidra
- Using Ghidra for a dump analysis.
- 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).
- Bug reports and feature requests
- How 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.