Suche Mitstreiter, die das CHDK verbessern/erweitern wollen

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

Suche Mitstreiter, die das CHDK verbessern/erweitern wollen

Beitragvon CHDKLover » 08.11.2007, 21:11

Hi Leute,
hat jemand von euch Lust mit mir und hoffentlich ein paar anderen, unsere/eure Wünsche und die anderer Forummitglieder in die Wirklichkeit umzusetzen?
Im Grunde teilt sich das ganze in 3 große Gruppen auf.
    Die 1. Gruppe (Dumper) versucht Firmwaredumps von neuen Kameras zu erstellen.
    Die 2. Gruppe (Porter) versucht die Einsprungspunkte für das CHDK aus dem dumps zu ermitteln und das CHDK für die Kamera kompilierbar zu machen.
    Die 3. Gruppe (Coder) ist etwas unabhängiger zu den anderen beiden und müsste das CHDK Programmiertechnisch auf dem Laufenden halten.

Ich würde mich, wegen meinen Kenntnissen in der Programmierung, eher zu der 3. Gruppe zählen und hoffe weitere Interessenten finden zu können. Wer Lust hat und möglichst Grundkenntnisse in der Programmiersprache C hat oder die Aufgeben der ersten beiden Gruppen erfüllen zu können kann ja mal schreiben.
Als nächstes würde ich gern die Informationen, die ich mit dem CHDK gesammelt habe posten:
Die meisten Veränderungen werden in den Ordnern "core", "include", "lib" und "platform" sein. Dabei ist "core" der wahrscheinlich interessanteste Ordner (für Gruppe 3) und zum Beispiel einen eigenen Menüeintrag mit Untermenüs zu er stellen. Darüber hinaus ist hier Platz für eigene Funktionen. In dem Ordner "platform" stehen alle Daten die aus dem Porting Prozess (Gruppe 2) gewonnen wurden.
Ich werde mich bemühen weitere Informationen und Theoretische Vorgehensweisen (für alle drei Gruppen) in das Forum zu posten.
Habt ihr eigene Erfahrungen habt, lasst sie uns wissen. Danke
Zuletzt geändert von CHDKLover am 07.06.2008, 11:59, insgesamt 1-mal geändert.
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 19:25
Wohnort: Dresden
Kamera(s): a610 100e

Re: Suche Mitstreiter, die das CHDK verbessern/erweitern wol

Beitragvon jeff666 » 16.11.2007, 23:15

CHDKLover hat geschrieben:
    Die 1. Gruppe (Dumper) versucht Firmwaredumps von neuen Kameras zu erstellen.
    Die 2. Gruppe (Porter) versucht die Einsprungspunkte für das CHDK aus dem dumps zu ermitteln und das CHDK für die Kamera kompilierbar zu machen.
    Die 3. Gruppe (Coder) ist etwas unabhängiger zu den anderen beiden und müsste das CHDK Programmiertechnisch auf dem Laufenden halten.


(1) hab ich schon gemacht (A720IS) und bin jetzt bei (2) - und so wie's aussieht hab ich da etwas Arbeit vor mir. Hab jetzt ein paar Tage frei um die Firmware genauer zu untersuchen und hoff mal ein paar Infos rauskriegen zu koennen.

Evtl. wird's fuer die Cams mit DRYOS einen CHDK-Nachfolger geben muessen. Das kann man aber erst sagen, wenn man genug ueber das neue OS weiss.

Wenn ich Signifikante Neuigkeiten rausbekomme, landen die im CHDK-Wiki. Ich halte es fuer keine gute Idee (moeglicherweise) wichtige Infos zerstreut ueber 5 plattformen zu verteilen wodurch sie schwer zu finden sind.

Gruss.
jeff666
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 7
Registriert: 16.11.2007, 22:59

Beitragvon CHDKLover » 18.11.2007, 20:11

Hi jeff666,
klingt super interessant, aber DRYOS wird erstmal ein Problem sein. Find es leider nur schade, dass du nur ins Wiki posten willst. Zum Beispiel um kleinere Problem oder Hänger zu klären währe es hier vielleicht besser. Endresultate könnte man ja dann ins Wiki posten.

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

Beitragvon jeff666 » 18.11.2007, 20:35

CHDKLover hat geschrieben:Hi jeff666,
klingt super interessant, aber DRYOS wird erstmal ein Problem sein.


Da gibt's dann wenigstens was zu hacken ;)

Bin grad dabei die Firmware im IDA zu durchforsten. Auf einem Monitor den Disassembler, auf dem anderen die ARM Tech-referenz. Nach 'nem Tag lesen und stoebern fang ich sogar an die Syntax zu verstehen :D

CHDKLover hat geschrieben:Find es leider nur schade, dass du nur ins Wiki posten willst.


Wenn Du (oder jemand anderes) konstruktive Beitraege zur Architektur liefern kann oder Fragen dazu hat, dann verweigere ich mich natuerlich keiner Diskussion. Das Resultat sollte dann aber ins Wiki, einfach weil's die zentrale Anlaufstelle ist und durch die englische Sprache am wenigsten Leute ausgrenzt.

Gruss,
Jeff
jeff666
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 7
Registriert: 16.11.2007, 22:59

Ich habe eine Kleinigkeit ergänzt...

Beitragvon rr807 » 24.09.2008, 14:09

Hallo Entwickler,

ich habe mir aus Neugier mal die Juciphox-Sourcen gezogen, und eine Kleinigkeit eingebaut, die ich mir als Feature gewünscht habe:
Bei Bracketing im Continuous Mode werden die Dateinamen der RAW-Dateien um den Shoot-Counter ergänzt.
Beispiel:

crw_1001.crw
CRW_1002_01.CRW
CRW_1003_02.CRW
CRW_1004_03.CRW
CRW_1005_01.CRW
CRW_1006_02.CRW
CRW_1007_03.CRW
crw_1008.crw

Hier habe ich ein einzelnes Foto aufgenommen, dann auf Bracketing im Continuous Mode umgeschaltet und 2 TV-Reihen a 3 Bilder gemacht, und anschließend wieder ein Foto ohne Bracketing.

Da ich Neuling auf dem Gebiet bin, stellt sich mir folgende Frage: Besteht Interesse, dieses für alle Anwender einzubauen? Wer entscheidet darüber? Wie funktioniert das? Wem gebe ich den ergänzten Code für dieses Feature?
Ich fände gut, wenn ich auch einen kleinen Beitrag zu CHDK oder Juciphox leisten könnte. Außerdem müsste ich dann nicht jedes Update wieder anpassen... ;-)

Gruß
Randolf
EOS 500D
Ixus 950IS mit CHDK
rr807
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 24
Registriert: 28.08.2008, 11:54

Beitragvon msl » 24.09.2008, 15:20

Hallo,

das klingt sehr interessant und wird sicherlich viele interessieren.

Du kannst Deinen Ergänzungscode hier generell veröffentlichen. Du solltest die Veränderungen aber möglichst zur aktuellen Version machen. Juciphox ist da schon wieder nicht Stand der Dinge.

Hier im Forum kannst Du auch PhyrePhoX ansprechen. Er gehört zum Entwicklerteam. Eine andere Möglichkeit wäre, direkt ins internationale Forum zu posten.

Aber mach Deine Änderungen erstmal öffentlich, dann werden wir weitersehen.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon rr807 » 24.09.2008, 15:42

OK, hier ist meine Ergänzung in der core/raw.c
Die von mir hinzugefügten Zeilen sind rot.

<< Den Code habe ich wieder entfernt, damit Ihr nicht so viel scrollen müsst... ;) >>

Randolf
Zuletzt geändert von rr807 am 24.09.2008, 17:51, insgesamt 1-mal geändert.
EOS 500D
Ixus 950IS mit CHDK
rr807
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 24
Registriert: 28.08.2008, 11:54

Beitragvon CHDKLover » 24.09.2008, 16:07

Hallo rr807,
danke für deine Arbeit, ich finde es eine sehr nützliche Erweiterung!

//alte Anleitung!!! -> neue siehe weiter unten!
Ich möchte dir trotzdem noch eine kurze Anleitung geben, wie du Veränderungen komfortabel und automatisch herausfinden und abspeichern kannst (für Windows):
  • lade dir zunächst den SVN Client für deine Windowsversion herunter und installiere ihn mit Administrationsrechten
  • starte eine Konsole (Eingabeaufforderung) und navigiere in den Ordner indem du den CHDK-Quellcode herunterladen willst.
  • Jetzt musst du mit folgendem Befehl den Download des neusten Quellcodes anstoßen:
    Code: Alles auswählen
    svn checkout https%u3a//tools.assembla.com/svn/chdk/trunk chdk
  • nach dem Download sollte ein neuer Ordner "chdk" erstellt worden sein, indem sich nun die aktuellsten CHDK-Quellcodes befinden.
  • nun kannst du nach belieben die Quelldateien editieren
  • möchtest du eine Differezdatei erstellen (beinhaltet alle Veränderten Codesegmente, diff) kannst du z.b. folgende Zeile in die Konsole eingeben:
    Code: Alles auswählen
    svn diff chdk >out.diff
  • die *.diff Datei kannst du dann hier im Forum hochladen und nachdem die Veränderungen Diskutiert bzw. getestet wurden sind, werden sie in den Trunk übernommen.

Die Updateaufforderung ("svn checkout https://tools.assembla.com/svn/chdk/trunk chdk") kannst du jederzeit wiederholen um deine lokalen Quelldateien zu aktualisieren.

Viel spaß CHDKLover
Zuletzt geändert von CHDKLover am 09.07.2009, 00:06, insgesamt 2-mal geändert.
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 19:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon rr807 » 24.09.2008, 16:57

Hallo CHDKLover,

danke für Deine Beschreibung! Ich habe es genau so gemacht, und kann hier das Diff präsentieren:

Code: Alles auswählen
Index: trunk/core/raw.c
===================================================================
--- trunk/core/raw.c   (Revision 524)
+++ trunk/core/raw.c   (Arbeitskopie)
@@ -9,6 +9,7 @@
 #define RAW_TARGET_DIRECTORY    "A/DCIM/%03dCANON"
 //#define RAW_TMP_FILENAME        "HDK_RAW.TMP"
 #define RAW_TARGET_FILENAME     "%s%04d%s"
+#define RAW_BRACKETING_FILENAME "%s%04d_%02d%s"
 
 //-------------------------------------------------------------------
 static char fn[64];
@@ -26,6 +27,7 @@
 int raw_savefile() {
       int fd, m=(mode_get()&MODE_SHOOTING_MASK);
     static struct utimbuf t;
+    static int br_counter;
 
     if (state_kbd_script_run && shot_histogram_enabled) build_shot_histogram();
 
@@ -46,6 +48,15 @@
 
     shooting_bracketing();
 
+    if(conf.tv_bracket_value || conf.av_bracket_value || conf.iso_bracket_value || conf.subj_dist_bracket_value) {
+        if(state_shooting_progress != SHOOTING_PROGRESS_PROCESSING)
+            br_counter = 1;
+        else
+            br_counter++;
+    }
+    else
+        br_counter=0;
+
     // got here second time in a row. Skip second RAW saving.
     if (conf.raw_save_first_only && state_shooting_progress == SHOOTING_PROGRESS_PROCESSING) {
         return 0;
@@ -65,7 +76,10 @@
         mkdir(dir);
 
         sprintf(fn, "%s/", dir);
-        sprintf(fn+strlen(fn), RAW_TARGET_FILENAME, img_prefixes[conf.raw_prefix], get_target_file_num(), img_exts[conf.raw_ext]);
+        if(br_counter)
+            sprintf(fn+strlen(fn), RAW_BRACKETING_FILENAME, img_prefixes[conf.raw_prefix], get_target_file_num(), br_counter, img_exts[conf.raw_ext]);
+        else
+            sprintf(fn+strlen(fn), RAW_TARGET_FILENAME, img_prefixes[conf.raw_prefix], get_target_file_num(), img_exts[conf.raw_ext]);
 
         fd = open(fn, O_WRONLY|O_CREAT, 0777);
         if (fd>=0) {


Gruß
Randolf
EOS 500D
Ixus 950IS mit CHDK
rr807
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 24
Registriert: 28.08.2008, 11:54

Beitragvon rr807 » 24.09.2008, 17:40

Der Vollständigkeit halber hier auch das Diff für Juciphox:

Code: Alles auswählen
Index: branches/juciphox/core/raw.c
===================================================================
--- branches/juciphox/core/raw.c   (Revision 524)
+++ branches/juciphox/core/raw.c   (Arbeitskopie)
@@ -9,6 +9,7 @@
 #define RAW_TARGET_DIRECTORY    "A/DCIM/%03dCANON"
 //#define RAW_TMP_FILENAME        "HDK_RAW.TMP"
 #define RAW_TARGET_FILENAME     "%s%04d%s"
+#define RAW_BRACKETING_FILENAME "%s%04d_%02d%s"
 
 //-------------------------------------------------------------------
 static char fn[64];
@@ -26,6 +27,7 @@
 int raw_savefile() {
       int fd, m=(mode_get()&MODE_SHOOTING_MASK);
     static struct utimbuf t;
+    static int br_counter;
 
     if (state_kbd_script_run && shot_histogram_enabled) build_shot_histogram();
 
@@ -46,6 +48,15 @@
 
     shooting_bracketing();
 
+    if(conf.tv_bracket_value || conf.av_bracket_value || conf.iso_bracket_value || conf.subj_dist_bracket_value){
+        if(state_shooting_progress != SHOOTING_PROGRESS_PROCESSING)
+            br_counter = 1;
+        else
+            br_counter++;
+    }
+    else
+        br_counter=0;
+
     // got here second time in a row. Skip second RAW saving.
     if (conf.raw_save_first_only && state_shooting_progress == SHOOTING_PROGRESS_PROCESSING) {
         return 0;
@@ -65,7 +76,10 @@
         mkdir(dir);
 
         sprintf(fn, "%s/", dir);
-        sprintf(fn+strlen(fn), RAW_TARGET_FILENAME, img_prefixes[conf.raw_prefix], get_target_file_num(), img_exts[conf.raw_ext]);
+        if(br_counter)
+            sprintf(fn+strlen(fn), RAW_BRACKETING_FILENAME, img_prefixes[conf.raw_prefix], get_target_file_num(), br_counter, img_exts[conf.raw_ext]);
+        else
+            sprintf(fn+strlen(fn), RAW_TARGET_FILENAME, img_prefixes[conf.raw_prefix], get_target_file_num(), img_exts[conf.raw_ext]);
 
         fd = open(fn, O_WRONLY|O_CREAT, 0777);
         if (fd>=0) {


... ist aber identisch zum Trunk.

Randolf
EOS 500D
Ixus 950IS mit CHDK
rr807
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 24
Registriert: 28.08.2008, 11:54

Beitragvon zeratul » 25.09.2008, 22:27

hmm was für Kenntnisse sind denn erfordlich?
mh ist alles in C oder nur Teile?

sofern mir das möglich ist (technisch und zeitlich) würde ich gerne mithelfen, da ich gerne chdk auf der 590is sehen würd
zeratul
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 8
Registriert: 25.09.2008, 11:26

Beitragvon CHDKLover » 25.09.2008, 23:01

Hallo zeratul,
der Großteil ist in c geschrieben. Um das CHDK Oberflächlich zu verändern reicht reines wissen in c aus. Um aber eine neue Kamera zu portieren ist Assembler (arm) schreiben, lesen und vor allem verstehen wichtig.

CHDKLover
Zuletzt geändert von CHDKLover am 27.09.2008, 18:52, insgesamt 1-mal geändert.
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 19:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon zeratul » 25.09.2008, 23:05

hmmm Assembler hab ich vor 3 oder 4 Jahren mal in der Schule machen müssen ^^
ansonsten bin ich eher in C++ (und andren Sprachen) zu Hause, aber C ist ja nicht soooooooo viel anders

würde mich auf jeden Fall interessieren

wie ist die Vorgehensweise so allgemein?
zeratul
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 8
Registriert: 25.09.2008, 11:26

Beitragvon CHDKLover » 25.09.2008, 23:29

Hallo zeratul,
am einfachsten Lädst du dir den SVN-Clinet herunter installierst ihn. Dann legst du dir einen Ordner an wo später der Quellcode rein soll. Dann mit rechtsklick "SVN Checkout.." auswählen. Folgende url eintragen https://tools.assembla.com/svn/chdk/trunk und den Download mit OK bestätigen. Wenn alles unten ist kannst du mit deinen Veränderungen anfangen. Wenn du meinst das alles erfolgreich war, kannst du deine Veränderungen ins Forum posten.
Um eine diff (Differenzdatei, mit allen Veränderten Daten) zu erstellen gehe wie folgt vor:
Verzeichnis wieder mit rechtsklick anwählen und über TortoiseSVN -> „Create patch“ anklicken, nun wird automatisch das diff erstellt, welches du dann im Forum hochladen und zur Diskussion stellen kannst.
Um ein anderes diff einzuspielen Wähle im TortoiseSVN den Menüpunkt "Apply patch" aus, noch das diff raussuchen. In dem Fenster TortoiseMerge müssen jetzt alle Dateien ausgewählt werden und über die rechte Maustaste das Kontextmenü aufgerufen werden -> "Patch all", und schon ist es integriert.

Viel Spaß CHDKLover
Zuletzt geändert von CHDKLover am 09.07.2009, 00:04, insgesamt 1-mal geändert.
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 19:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon zeratul » 25.09.2008, 23:31

ah ok die schildkröte kenn ich ;)
werd mir das mal anschauen, was es da so gibt, sobald ich zeit finde
ne 590is ist jedenfalls zu mir unterwegs :)
(raw macht süchtig)
zeratul
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 8
Registriert: 25.09.2008, 11:26

Nächste

Zurück zu Code-Ecke

Wer ist online?

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

cron