EXMEM-Erweiterung ab Revision 614

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

EXMEM-Erweiterung ab Revision 614

Beitragvon CHDKLover » 07.04.2011, 10:05

Ab Revision 614 (CHDK-DE) wurde durch philmoz die Einsatzmöglichkeiten für den externen RAM (EXMEM) stark erweitert. Jetzt ist es möglich, dem CHDK das Vielfache des Arbeitsspeichers zuzusprechen ohne die Kamera in ihrem Verhalten zu beeinflussen. Es gibt dabei zwei Betriebsmodi. Einmal wird das CHDK wie bisher in den Heap/Stack geladen und zusätzlich ein Speicherbereich im externen Memory für das CHDK bereitgehalten. Der zweite Modus verlagert das CHDK komplett in den externen Memory und überlässt der originalen Firmware den kompletten heap/stack, wie es ohne CHDK der Fall wäre.
Philmoz und ReyalP haben im Wiki eine Anleitung Verfasst, mit der jeder seine Kamera EXMEMfähig machen kann. In dieser Fehlt zur Zeit noch ein Punkt, der bestimmt bald noch ergänzt wird (siehe bedingte Kompilierung in platform/<Kamera>/sub/<Kameraversion>/boot.c) . Außerdem ist mir aufgefallen, dass bei VxWorks die Berechnungsformel für MEMISOSTART wie folgt lauten muss (-32 fällt weg):
Code: Alles auswählen
MEMISOSTART = MAXRAMADDR+1 - EXMEM_HEAP_SKIP - EXMEM_BUFFER_SIZE


Nach einer erfolgreichen Umstellung auf EXMEM sollten ähnliche Informationen in der Speicherinfo zu finden sein, am Beispiel der a610 und 8MB EXMEM_BUFFER_SIZE.

Speicher-Info: CHDK ohne EXMEM (zur Zeit Standard)
Freier Speicher: 342616 Bytes
CHDK-Größe: 294784 Bytes
geladen bei: 0xA0B70

Speicher-Info: CHDK in heap/stack + EXMEM
Freier Speicher: 8370912 Bytes
CHDK-Größe: 295664 Bytes
geladen bei: 0xA0B70

Speicher-Info: CHDK_IN_EXMEM
Freier Speicher: 8077648 Bytes
CHDK-Größe: 295680 Bytes
geladen bei: 0x1800000

CHDKLover
Dateianhänge
chdk_memory_layout.png
Speicher Layout
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Re: EXMEM-Erweiterung ab Revision 614

Beitragvon f_m_b » 10.04.2011, 18:40

Ich bin bereits am Testen. :-)
Ich melde mich wenn ich neue Erkenntnisse habe.

Edit 10.04.2011:

ok. Meine Tests sind abgeschlossen. :-)
Ich habe zeimlich alles was mir eingefallen ist mit der Kamera (1.02b) ausprobiert.
OPT_EXMEM_TESTING blieb mit folgenden Einstellungen ok...

exmem_alloc:
1.02b 0xFF889D7C
(1.00f 0xFF889D7C) Test steht noch aus
(1.02d 0xFF889DCC) Test steht noch aus

von der FW 1.02b:
MAXRAMADDR=0x03FFFFFF
EXMEM_HEAP_SKIP=0x2F7600 #(0x44000000-0x43D08A00) from sub_FF88A064 = size of video buffers in EXMEM area
EXMEM_BUFFER_SIZE=0x200000 # Amount of EXMEM memory to allocate for CHDK = 2MB
MEMISOSTART=0x3B089E0 # MAXRAMADDR+1 - EXMEM_HEAP_SKIP - EXMEM_BUFFER_SIZE - 32 (exmem allocates 64 bytes extra, 32 before and 32 after block allocated)

Insgesammt lassen sich bei der SX20 12MB (theoretisch) reservieren.
Mit 4MB habe ich ebenfalls getestet, mich aber letztendlcih für nur 2MB entschieden, da ich denke das reicht dicke aus.

Mit OPT_EXMEM_MALLOC=1 und OPT_CHDK_IN_EXMEM = 1 erhalte ich bei
Memory Info
Free Memory: 1763968 bytes
CHDK size: 300240 bytes
loaded at 0x3B089E0

Kontrollrechnung:
2097152 bytes (2MB)
- 300240 bytes
==============
1796912 bytes

1796912 bytes
- 1763968 bytes
==============
32944 bytes

32KB Heap nach Kamera ein hört sich ziemlich plausibel an.

Wenn OPT_EXMEM_MALLOC aktiv ist habe ich CAM_ZEBRA_NOBUF deaktiviert und ebenfalls getestet.
PTP scheint jetzt ebenfalls stabiler zu laufen. (Ausführlicher Test steht noch aus.)


Nächste Schritte:
- weitere Tests (z.B. PTP, verschieden Skripte) pass
- Testversion für 1.02d und 1.00f (je einmal mit OPT_EXMEM_TESTING und einmal ohne) bauen und bei der SX20 (CHDK-DE und CHDK) zum Test freigeben.
Edit 12.04.11 00:08: zum Test freigegeben
pass.

PS: ich bin einfach nur begeistert. =D>
@CHDKLover: Vielen Dank für die Einführung in ARMu, ohne die ich hier nicht weitergekommen wäre. \:D/


Edit 14.04.2011 23:45:
Wir haben die SX20 1.02b und 1.02d sehr gut getestet und der Test ist positiv verlaufen... Link
Von der 1.00f haben wir momentan noch keine Rückmeldung, aber es gibt bereits Freiwillige.
Da die 1.00f momentan nicht als "stabil" gekennzeichnet ist, denke ich wir könnten die Änderungen bereits einfließen lassen.

@CHDKLover:
Eine Frage: Für mich ist es kein Problem mittels Shell die Optionen von EXMEM zu setzen.
Da die SX20 wenig Speicher hat und EXMEM an dieser Stelle wirklich ein Quantensprung bedeutet...
Könnte man im Autobuildlauf für die SX20 die Optionen OPT_EXMEM_MALLOC und OPT_CHDK_IN_EXMEM per default aktivieren?
Das würde anderen SX20-Benutzern die Sache etwas vereinfachen.

Edit 25.04.2011 15:13:
Mit der 1.02d gibt es bei einigen Kameramodellen(Gibt es hier überhaupt Unterschiede? / Einstellungsproblem?) noch Probleme mit Videos...
Nachdem ich den "älteren" Stand von "Neszt 913" etwas auf Vordermann gebracht habe... ARMu sei Dank... funktioniert auch die Firmware 1.00f mit EXMEM. Erweiterter Test läuft gerade im intern. Forum von phaedra und jan.

Info: PTP läuft jetzt dank EXMEM super stabil, kein Vergleich mehr mit vorher.

Ansonsten melde ich mich wieder wenn es weitere Neuigkeiten gibt.
Dateianhänge
EXMEM.patch
based on rev. 626 -exmem changes
(5.21 KiB) 346-mal heruntergeladen
f_m_b
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 30.05.2010, 21:59
Kamera(s): -


Zurück zu Code-Ecke

Wer ist online?

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