Wie kann ich mein eigenes CHDK erstlellen (kompilieren)

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Wie kann ich mein eigenes CHDK erstlellen (kompilieren)

Beitragvon CHDKLover » 08.10.2007, 10:50

Hi Leute,
um das ganze Projekt interessanter zu gestalten, wird es notwendig sein ein eigenes CHDK zu erstellen. Deswegen möchte ich hier eine Möglichkeit zeigen, die dies unter Windows XP ermöglicht. Zuerst braucht ihr eine Compiler der die Quellcodedatein in einen für die Camera verständlichen Maschinencode übersetzt. Ein fertiges Packet mit allen benötigten Compilerdateien findet ihr hier [Link entfernt, da verltet] zum download (22,1MB).
Nun entpackt alle im RAR-Archiv befindlichen Dateien in einen Ordner, zum Beispiel nach "D:\projekte\chdk\gcc\". Um den Compiler später von überall starten zu können muss der Pfad zum Compiler "D:\projekte\chdk\gcc\bin" in der Umgebungsvariable "PATH" bekannt gegeben werden. Dies macht ihr am einfachsten indem ihr "Windowstaste" + "Pause" gleichzeitig drückt oder in der Systemsteuerung -> (Leistung und Wartung) -> System auswählt. Nun wechselt ihr zu Registerlasche "Erweitert", klickt auf den Button "Umgebungsvariablen" und bearbeitet die Umgebungsvariable "PATH" (Schreibweise egal) so ab, dass, wie auf dem Beispielbild zu sehen, am Ende der Pfad zu eurem Compiler steht. Achtung die Pfadangabe muss durch ein Semikolon von den anderen Pfaden abgetrennt werden!

Bild

So jetzt ist der Compiler einsatzbereit, jetzt fehlen nur noch die Quellcodedateien, die aktuellsten könnt ihr hier herunterladen. (Downloadlink unten "Zip Archive") Entpackt dieses ZIP-Archiv in einen Ordner eurer Wahl, zum Beispiel nach "D:\projekte\chdk\src\".
Jetzt sind wir schon fast am Ziel :D. Das einzige was ihr jetzt noch braucht ist folgendes Batchprogramm [Link entfernt, da veraltet], dass ich gestern zusammengeschrieben habe. Es übernimmt den Aufruf des Compilers mit den nötigen Parametern für die einzelnen Cameramodelle. Entpackt das ZIP-Archiv in den Ordner, worin sich die Quelldateien befinden ("D:\projekte\chdk\src\trunk\").
Nun solltet ihr in der Lage sein, durch den Aufruf dieser Batchdatei ein eigenes DHCK zu kompilieren. Und könnt den Quellcode zu euren belieben abändern.

Tschüss CHDKLover
Zuletzt geändert von CHDKLover am 19.02.2008, 12:20, insgesamt 2-mal geändert.
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon pieps » 16.02.2008, 17:39

Hallo CHDKLover,

kann ich mit Deinem Batchprogramm auch für die A570 kompilieren?

Ich habe diese Kamera nicht angezeigt bekommen.

Beim kompilieren für alle Kameras gibt es eine Fehlermeldung :-(

Gruss Pieps

P.S. Ich bin glaube ich zu blöd ....

Bild
pieps
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 30
Registriert: 08.01.2008, 17:42
Wohnort: Saarland

Beitragvon CHDKLover » 17.02.2008, 13:53

Hallo pieps,
kurz eine Frage, aber das kompilieren für eine Kamera funktioniert, oder???

CHDKLover
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon pieps » 17.02.2008, 17:18

Hallo CHDKLover,

nein

Gruss Pieps

Bild
pieps
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 30
Registriert: 08.01.2008, 17:42
Wohnort: Saarland

Beitragvon CHDKLover » 17.02.2008, 21:05

Hallo pieps,
hab das Script noch mal aktualisiert, jetzt ist auch diene Kamera gelistet (ist nur eine kleine BAT-Datei, kannst du jeder Zeit selber aktualisieren). Aber zu dem eigentlichen Problem hab ich bis jetzt auch keine vernünftige Antwort. Ansatz meiner ersten Fehleranalyse:
Da meine BAT-Datei am Anfang keinen Fehler gebracht hat, hast du die PATH Variable richtig gesetzt und das Script am richtigen Ort ausgeführt. - OK
Da der Compiler aus der Linuxwelt kommt, werden hier Prozesse beim Kompilieren über die Z-Shell gestartet (zsh, gcc\bin\sh.exe). Diese meldet nun, dass beim Aufruf von fork etwas schief gelaufen ist. Ein Fork ist ein Systemaufruf, der eine identische Kopie des aufrufenden Programms im Speicher erstellt (Klone) um zum Beispiel einen weiteren Prozess starten zu können ohne das aufrufende Programm zu überschreiben. Kurz gesagt versucht die Z-Shell einen neunen Prozess zu starten, den sie aber nicht finden kann. Leider ist aus der Fehlermeldung nicht zu entnehmen, um welchen Process es sich handelt. Es könnte sein das es sich um "bin/make.exe" handelt, da diese zu dem Zeitpunkt aufgerufen werden sollte. Versuch sonnst einfach mal die Shell manuell zu starten (gcc/bin/sh.exe) und versuch das Kommando "make --help" aufzurufen. Zur Kontrolle mein GCC Compiler-Ordner ist genau 101.364.727 Bytes groß.
Noch eine Frage: Ist auf deinem System noch ein weiterer C-Compiler installiert?

Ich hoffe das Problem lässt sich bald lösen!

CHDKLover
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon pieps » 18.02.2008, 18:56

Hallo CHDKLover,

ich habe noch Dev-C++ auf dem Rechner

Gruss Pieps
pieps
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 30
Registriert: 08.01.2008, 17:42
Wohnort: Saarland

Beitragvon pieps » 18.02.2008, 19:07

HalloCHDKLover,

der Fehler liegt wohl bei den Rechten unter Vista.

Ich komme der Sache langsam näher :-)

Gruss Pieps
pieps
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 30
Registriert: 08.01.2008, 17:42
Wohnort: Saarland

Beitragvon pieps » 24.02.2008, 18:04

Hallo CHDKLover,

ich habe zur Zeit aufgegeben. Irgendwo liegt bei mir ein Denkfehler.

"Versuch sonnst einfach mal die Shell manuell zu starten (gcc/bin/sh.exe) und versuch das Kommando "make --help" aufzurufen."

Dieser Versuch war positiv, es wird die Help angezeigt.

Gruss Pieps
pieps
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 30
Registriert: 08.01.2008, 17:42
Wohnort: Saarland

Beitragvon CHDKLover » 25.02.2008, 10:13

Hi pieps,
wenn es unter Windows Vista nicht arbeiten will, gibt es nur noch weitere Varianten. Diese sind leider auch mit ein wenig Zeitaufwand verbunden.
    - direkte Installation eines weiteren Betriebssystems (WinXP oder auch Linux)
    - Installation einer Virtuellen Maschine (zum Beispiel VMware), unter der du dann das 2. Betriebssystem installierst. Diese Variante ist zwar langsamer, aber etwas bequemer einzurichten.
Da ich selbest kein Windows Vista besitze kann ich auch keine Möglichkeit finden, wie du den Fehler beheben könntest. (Im web hab ich auch nichts gefunden)

Sorry CHDKLover
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon msl » 18.03.2008, 23:03

Hallo,

ich habe mal das Batchprogramm aktuallisiert und die Reihenfolge der Modelle an die Plattformliste angepasst.

Code: Alles auswählen
@echo off
title CHDK-Forum (forum.chdk-treff.de) Compiler Script v1.4
sleep 0
if "%errorlevel%" == "9009" goto _add_gcc_to_path
:_start
set AUTOCOLOSE=1
rem set AUTOREN=1
set aktdir=%~dp0
if not exist "version.inc" goto _infosrc
if not exist "bin\" mkdir bin
:_main
cls
echo.
echo    -----------------------[Modelluebersicht]------------------------
echo.
echo       1: A460 100d   16: A720 100c            31: IXUS800_sd700 100b
echo       2: A530 100a   17: G7 100e              32: IXUS880_sd700 101b
echo      xx: A540 100b   18: G7 100g              33: IXUS850_sd800 100e
echo       4: A550 100c   19: G7 100i              34: IXUS860_sd870 100c
echo       5: A560 100a   20: G7 101j              35: IXUS950_sd850 100c
echo       6: A570 100e   xx: IXUS40_sd300 100k    xx: IXUSW_sd430 110a
echo       7: A570 101a   xx: IXUS50_sd400 101a    37: S2IS 100e
echo       8: A610 100e   23: IXUS55_sd450 100b    38: S2IS 100f
echo       9: A610 100f   24: IXUS55_sd450 100c    39: S2IS 100g
echo      10: A620 100f   25: IXUS65_sd630 100a    40: S3IS 100a
echo      11: A630 100c   26: IXUS70_sd1000 100c   xx: S80 100g
echo      12: A640 100b   27: IXUS70_sd1000 101b   42:
echo      13: A650 100d   28: IXUS70_sd1000 102a   43:
echo      14: A700 100b   29: IXUS700_sd500 101a   44:
echo      15: A710 100a   30: IXUS700_sd500 101b   45:
echo.   
echo       a: Alle als Zip    q: Beenden            xx - nicht verfuegbar
echo.
echo    -----------------[forum.chdk-treff.de]-------------------
echo.

set _ok=
set /p _ok=Fuer welche Camera soll das CHDK kompiliert werden?:
if "%_ok%" == "0" (
if "%AUTOREN%" == "1" (set AUTOREN=0 ) else (set AUTOREN=1)
goto _main
)
if not "%_ok%" == "q" echo Starte...
if "%_ok%" == "1" gmake PLATFORM=a460 PLATFORMSUB=100d NO_INC_BUILD=1 firzipsub
if "%_ok%" == "2" gmake PLATFORM=a530 PLATFORMSUB=100a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "3" gmake PLATFORM=a540 PLATFORMSUB=100b NO_INC_BUILD=1 firzipsub
if "%_ok%" == "4" gmake PLATFORM=a550 PLATFORMSUB=100c NO_INC_BUILD=1 firzipsub
if "%_ok%" == "5" gmake PLATFORM=a560 PLATFORMSUB=100a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "6" gmake PLATFORM=a570 PLATFORMSUB=100e NO_INC_BUILD=1 firzipsub
if "%_ok%" == "7" gmake PLATFORM=a570 PLATFORMSUB=101a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "8" gmake PLATFORM=a610 PLATFORMSUB=100e NO_INC_BUILD=1 firzipsub
if "%_ok%" == "9" gmake PLATFORM=a610 PLATFORMSUB=100f NO_INC_BUILD=1 firzipsub
if "%_ok%" == "10" gmake PLATFORM=a620 PLATFORMSUB=100f NO_INC_BUILD=1 firzipsub
if "%_ok%" == "11" gmake PLATFORM=a630 PLATFORMSUB=100c NO_INC_BUILD=1 firzipsub
if "%_ok%" == "12" gmake PLATFORM=a640 PLATFORMSUB=100b NO_INC_BUILD=1 firzipsub
if "%_ok%" == "13" gmake PLATFORM=a650 PLATFORMSUB=100d NO_INC_BUILD=1 firzipsub
if "%_ok%" == "14" gmake PLATFORM=a700 PLATFORMSUB=100b NO_INC_BUILD=1 firzipsub
if "%_ok%" == "15" gmake PLATFORM=a710 PLATFORMSUB=100a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "16" gmake PLATFORM=a720 PLATFORMSUB=100c NO_INC_BUILD=1 firzipsub

if "%_ok%" == "17" gmake PLATFORM=g7 PLATFORMSUB=100e NO_INC_BUILD=1 firzipsub
if "%_ok%" == "18" gmake PLATFORM=g7 PLATFORMSUB=100g NO_INC_BUILD=1 firzipsub
if "%_ok%" == "19" gmake PLATFORM=g7 PLATFORMSUB=100i NO_INC_BUILD=1 firzipsub
if "%_ok%" == "20" gmake PLATFORM=g7 PLATFORMSUB=100j NO_INC_BUILD=1 firzipsub
if "%_ok%" == "21" gmake PLATFORM=ixus40_sd300 PLATFORMSUB=100k NO_INC_BUILD=1 firzipsub
if "%_ok%" == "22" gmake PLATFORM=ixus50_sd400 PLATFORMSUB=101a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "23" gmake PLATFORM=ixus55_sd450 PLATFORMSUB=100b NO_INC_BUILD=1 firzipsub
if "%_ok%" == "24" gmake PLATFORM=ixus55_sd450 PLATFORMSUB=100c NO_INC_BUILD=1 firzipsub
if "%_ok%" == "25" gmake PLATFORM=ixus65_sd630 PLATFORMSUB=100a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "26" gmake PLATFORM=ixus70_sd1000 PLATFORMSUB=100c NO_INC_BUILD=1 firzipsub
if "%_ok%" == "27" gmake PLATFORM=ixus70_sd1000 PLATFORMSUB=101b NO_INC_BUILD=1 firzipsub
if "%_ok%" == "28" gmake PLATFORM=ixus70_sd1000 PLATFORMSUB=102a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "29" gmake PLATFORM=ixus700_sd500 PLATFORMSUB=101a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "30" gmake PLATFORM=ixus700_sd500 PLATFORMSUB=101b NO_INC_BUILD=1 firzipsub
if "%_ok%" == "31" gmake PLATFORM=ixus800_sd700 PLATFORMSUB=100b NO_INC_BUILD=1 firzipsub
if "%_ok%" == "32" gmake PLATFORM=ixus800_sd700 PLATFORMSUB=101b NO_INC_BUILD=1 firzipsub

if "%_ok%" == "33" gmake PLATFORM=ixus850_sd800 PLATFORMSUB=100e NO_INC_BUILD=1 firzipsub
if "%_ok%" == "34" gmake PLATFORM=ixus860_sd870 PLATFORMSUB=100c NO_INC_BUILD=1 firzipsub
if "%_ok%" == "35" gmake PLATFORM=ixus950_sd850 PLATFORMSUB=100c NO_INC_BUILD=1 firzipsub
if "%_ok%" == "36" gmake PLATFORM=ixusW_sd430 PLATFORMSUB=110a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "37" gmake PLATFORM=s2is PLATFORMSUB=100e NO_INC_BUILD=1 firzipsub
if "%_ok%" == "38" gmake PLATFORM=s2is PLATFORMSUB=100f NO_INC_BUILD=1 firzipsub
if "%_ok%" == "39" gmake PLATFORM=s2is PLATFORMSUB=100g NO_INC_BUILD=1 firzipsub
if "%_ok%" == "40" gmake PLATFORM=s3is PLATFORMSUB=100a NO_INC_BUILD=1 firzipsub
if "%_ok%" == "41" gmake PLATFORM=s80 PLATFORMSUB=100g NO_INC_BUILD=1 firzipsub



if "%_ok%" == "a" gmake batch-zip
if "%_ok%" == "99" gmake batch-clean
if /I "%_ok%" == "q" goto _end
if /I "%_ok%" == "xx" goto _end

set _ok=
set /p _ok=Weiter kompilieren? (j/n):
if /I "%_ok%" == "j" goto _main
if /I "%_ok%" == "n" goto _end

:_add_gcc_to_path
set AUTOCOLOSE=0
cls
echo.
echo Der Compiler konnte nicht gefunden werden! Zur temporaeren Loesung, gib den Pfad ein, worin sich die die Compilerdateien befinden (z.b.: "D:\projekte\chdk\gcc\bin"). Oder fuege manuell den Pfad, getrennt durch ein Semikolon, in der Umgebungsvariable "PATH" hinzu (Standartloesung).
echo Eine falsche Eingabe oder "q" beendet das Programm!
set _path=
set /p _path=Compiler Pfad:
if exist "%_path%\gmake.exe" (
  if exist "%_path%\sleep.exe" (
    set PATH=%_path%;%PATH%
    goto _start
  ) else (
    goto _end
  )
) else goto _end

:_infosrc
set AUTOCOLOSE=0
echo.
echo Diese Datei muss in dem Grundordner der zu kompilierenden
Quelldateien kopiert, und erneut ausgefuehrt werden.
goto _end

:_end
if "%_ok%" == "n" cls
echo.
echo Weitere Informationen unter: forum.chdk-treff.de
if "%AUTOCOLOSE%"=="1" (
sleep 2
) else (
pause
)


Ich konnte damit alle verfügbare Modelle entsprechend Anleitung aus dem ersten Beitrag compilieren.

Vielleicht kann das alte Batchprogramm ja ersetzt werden. :)

Gruß msl

Edit 20.03.2008
-Erweiterung A530

Edit 21.03.2008
-Erweiterung A540

Edit 22.03.2008
- Erweiterung IXUS70 100c

Edit 23.03.2008
- Erweiterung IXUS860 100c
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Gast » 19.04.2008, 22:50

Hallo, kann ich mit dieser Anleitung auch ein CHDK für meine S80 erstellen, die ist ja in deinem Batch mit aufgeführt.
Gast
 

Beitragvon msl » 19.04.2008, 23:06

Das geht leider nicht. :?

Sie ist mit einem "xx" gekennzeichnet und damit noch nicht verfügbar. Sie ist aber schon mit aufgeführt, weil sie im offiziellen Quellcode mit geführt wird. Die kameraspezifischen Sachen fehlen aber noch.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Gast » 21.04.2008, 17:27

Wird es denn in nächster Zukunft (1-2 Monate) einer Version für die S80 geben?
Gast
 

Beitragvon msl » 21.04.2008, 17:58

Das kann man nicht sagen.

Es hängt davon ab, inwieweit sich jemand damit beschäftigt. Wenn Du Glück hast, steht schon nächste Woche eine Version zur Verfügung. Genauso kann es passieren, dass im nächsten halben Jahr nichts passiert. :?

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Tommy » 26.06.2008, 18:40

Man kann den Pfad zum Compiler auch direkt in die Batchdatei schreiben:

@echo off
set PATH=D:\Canon_A720IS\CHDK_Comp\bin;%PATH%
title CHDK-Forum (http://http://forum.chdk-treff.de/) Compiler Script v1.3


Das hat den Vorteil, dass man die Erweiterung nur beim Compilieren drin hat.

Und gleich noch ne Frage hinterher: Wenn man die angegebenen Quellen compiliert, erhält man eine DISKBOOT.BIN ohne Symbolunterstützung. Was muß man ändern?
Ich dachte, ich hätte es schon hier im Forum gesehen, aber ich finde es einfach nicht mehr :oops:

Gruß Tommy
A720 IS
Tommy
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 24.06.2008, 16:35
Wohnort: Kelsterbach

Nächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 20 Gäste

cron