Introduction[]
gensig is a tool written by CHDK people to create functions signatures based on function address, its name and a camera memory dump. Then, finsig is using signatures to find functions addresses in new camera, thus help porting CHDK.
The general explanation for CHDK build chain is here:
http://chdk.wikia.com/wiki/Signature_finder
Update: gensig2/finsig2 http://chdk.setepontos.com/index.php?topic=6560
How to create signatures for DryOS DSLR[]
I used these tools (slightly modified, for minor reasons): https://tools.assembla.com/chdk/browser/trunk/tools/gensigs.sh https://tools.assembla.com/chdk/browser/trunk/tools/finsig.c https://tools.assembla.com/chdk/browser/trunk/tools/gensig.c
1. first I created sig_ref_dryos_218_110.txt (for 5d2 v1.1.0, 218 is the model id) based on
http://bitbucket.org/hudson/magic-lantern/src/tip/stubs-5d2.110.S
(because it is the most complete stub file for 5d2, and can be tested on 204)
and sig_ref_dryos_270_108.txt (for 550d v1.0.8) from
http://bitbucket.org/hudson/magic-lantern/src/tip/stubs-550d.108.S
2. then I applied signatures generation on the related dumps:
./gensigs.sh sort dryos "218_110 270_108" >signatures_dryos_AI.h
- "sig_ref_dryos_218_110.txt" is signatures file for 5d2 1.1.0, dump is "sig_ref_dryos_218_110.bin", loaded at 0xff810000.
- "sig_ref_dryos_270_108.txt" is signatures file for 550d 1.0.8, dump is "sig_ref_dryos_270_108.bin", loaded at 0xff010000.
Result: "signatures_dryos_AI.h" contains signatures for all functions described for 5d2 110 and 550d 108.
How to use signatures[]
then I recompiled finsig with these new signatures (just changed #include"signatures_dryos_AI.h".
then I used finsig to find functions addresses in 5d2 204 and 550d 106.
finsig.exe 5d2_204.bin 0xff810000 >5d2_204_finsig3.h finsig.exe 0270_106_09.bin 0xff010000 >550_106_finsig3.h
I tested all of this under mingw/msys + gcc under windows 7. http://www.mingw.org/ Thanks a lot to CHDK people for gensig and finsig !!!
See also on the Mailing list:
find automatically addresses of known functions for a new firmware: gensig and finsig