CHDK:Historie
CHDK (Canon-hack Development Kit) začal vyvíjet během druhé poloviny r. 2006 programátor 'VitalyB'. Ten disassembloval aktualizační software pro fotoaparát IXUS (PowerShot SD300), aby zjistil jak vlastně tato procedura funguje. Během stahování firmware se mu podařilo vytvořit jeho kopii tím, že zachytával blikání LED diody při datovém přenosu[1].
Potom zkusil vytvořit vlastní modifikovanou verzi firmware, kterou nainstaloval přes standardní volbu 'Firmware Update'. Tuto modifikovanou verzi napsal tak, aby zabírala co nejméně dostupné paměti fotoaparátu, aby tak zbylo dost volné paměti i na spouštění dalších uživatelských procesů.
Po důkladném prostudování originálního firmware naprogramoval jednoduchý "RAW enabler", který dovolil uživatelům fotoaparátu typu A610 ukládat kromě souboru ve formátu JPG také nekomprimovaný 10-bitový RAW soubor s daty ze snímacího čipu.
K tomu přidal úsporný interpreter jazyka uBAsic od Adama Dunkela, který tak umožnil používat jednoduché skriptování. Pablo d'Angelo vylepšil parser tohoto interpreteru tak, aby místo skoku na číslo řádku používal návěští.
První build (tehdy ještě HDK) zobrazoval "živý" histogram, umožňoval (díky jednoduchému skriptu) bracketing se třemi expozicemi a jako malý vtípek navrch - místo standardní uvítací obrazovky na displej vypisoval obligátní - "hello world"
Brzy následovala podpora dalších typů fotoaparátů CANON vybavených stejně jako IXUS čipem DIGIC II a operačním systémem VXworks - A620, A630 a A710.
Histogram byl postupně kromě lineárního a logaritmického zobrazení rozšířen o možnost zobrazení RGB a přibyl také editor OSD nastavení, který umožňuje uživateli změnit výchozí rozmístění informačních polí na displeji. Další vývoj aplikace závisel jen na dostupnosti dalších typů fotoaparátů a odlišnostech v jejich originálním firmware.
Build byl volně dostupný pod GPL2 licencí na webu, ovšem stránka byla v ruštině a tak přestože se o něm již v polovině prosince 2006 objevila zmínka v diskuzním fóru na webu věnovaném digitální fotografii dpreview.com větší pozornost nevzbudil.
To se však mělo zanedlouho změnit. Uživatelé se totiž zpočátku obávali, že jeho instalací mohou poškodit originální firmware přístroje a přijít tak o záruku výrobce. Přes prvotní obavy ale přibývalo těch co s nadšením uvítali toto rozšíření možností jejich fotoaparátu.
V únoru 2007 totiž na 'DP preview' oznámil další programátor - 'GrAnd', že přidal možnost zobrazovat na displeji různé hodnoty (ohniskovou vzdálenost, velikost a krokování zoomu, plus nastavení hyperfokální vzdálenosti) a stav baterie. Přidal také do histogramu zobrazovení varování před oříznutím světel a stínů, a také doprogramoval kalkulátor hloubky ostrosti (založený na skutečné hodnotě clony), který se zobrazuje při namáčknutí spouště. Další vítaným doplněk byl procentuální ukazatel aktuálního stavu akumulátoru.
Zanedlouho následovalo další rozšíření, které sebou přineslo manažer souborů, čtečku TXT souborů, doplnilo možnosti nastavení blesku a umožnilo ukládat RAW soubory do jiné než výchozí pozice a nastavit jim jiný prefix a suffix.
Důležitou změnou byla úprava procesu spouštění. Původně se totiž CHDK spouštěl z karty při každém zapnutí. Úprava zajistila to, že se CHDK spouští pouze je-li SD karta zamčená (tj. ve stavu 'lock'). Celý fígl je založen na tom, že bezprostředně po nabootování je soubor DISKBOOT.BIN označen jako skrytý.
Kalendář a hodiny byly přidané spolu s rozšířením čtečky textových souborů o automatické rolování textu. Byla přidaná podpora nastavení různých RGB barev a fontů a podporované typy fotoaparátů rozšířeny o Canon PowerShot S3IS.
'GrAnd' spustil wiki v angličtině a vytvořil instalační utilitu, která usnadnila instalaci na MS Windows. Naprogramoval také všechny funkce a nástroje, které vytvořily základ CHDK, což umožnilo jiným vývojářům programovat vlastní specializované verze.
Takovou upravenou verzí CHDK byl SDM, který začalo v červnu 2007 tvořit 'Fingalo'. Rozšířil uBasic o další příkazy a v září přidal k MX3 detekci pohybu.
Další lidé poskytli k analýze svůj firmware a podpora CHDK se brzy rozšířila o další modely - A640, A700, A710, G7, IXUS700, A570 (by Rossig/MX3) a IXUS800. Také byly přidané další parametry, které se týkaly videa. Přibyl TV bracketing, tím že 'Fingalo' přidal možnost nastavit delší interval expozice mezi jednotlivými snímky.
Následovala podpora A560, což byl fotoaparát s procesorem Digic III. Původně totiž bylo možné používat CHDK pouze na fotoaparátech s procesorem Digic II a operačním systémem VxWorks, ale postupně se podpora rozšířila i na fotoaparáty s novějšími procesory Digic III a Digic IV. CHDK tak lze provozovat na všech novějších fotoaparátech, s operačním systémem.
Richard Lemieux vyřešil omezenou přesnost fotoaparátu při odhadu vzdálenosti.
EWAVR (aka 'Zosim') zjistil že lze číst z namapované paměti informace o aktuálním stavu hardware fotoaparátu. To umožňuje např. otestovat připojenou SD kartu, nebo sledovat stav USB portu. V okamžiku kdy je USB kabel zapojen do PC se na USB portu objeví napětí v rozmezí +3 až +5V. Díky tomu bylo možné pracovat s USB portem jako by byl dalším tlačítkem na kameře a u fotoaparátů, kterým to jinak originální firmware neumožňuje, i zabránit automatickému přepnutí do download módu.
Tato novinka byla rychle integrována do SDM a Fingalo sestavil první build který dovolil synchronizovat dva fotoaparáty za účelem přízení stereoskopické fotografie.