| |
Spezifikation für von MMC ladbaren Applikationen
Version 1.3, Stand 19.06.2003
Software Unterstützung von One Wire Bus Sensoren DS18S20, DS18B20
und DS2436
Zusätzlich zu "L35MANAG.APP" gibt es jetzt eine geänderte Version
mit Namen "L35M_WAP.APP". Wenn man diese installiert, wird der Währungsrechner
durch den L35-Manager ersetzt. Dieser kann dann direkt aus der Standard-Oberfläche
über FN-8 gestartet werden. Allerdings heißt der L35-Manager dann
"W@P Browser".
Applikationen werden in RAM-Bank 7 geladen und dort ausgeführt, die
benutzten Daten liegen entweder in den freien 4.5 KByte in RAM-Bank 0 oder
mit in der RAM-Bank-7, dies geht dann natürlich von der möglichen
Programmlänge ab.
Das ergibt folgende Einschränkungen für Applikationen:
- maximale CODE Größe 16 KB, max. Datengröße
4,5 KB (sollte aber für kleine APPs reichen)
- Daten werden nicht in RAM-Bank 7 gelegt, sondern in Bank 0 ab Adresse
0xd600, das wird erreicht durch Änderung des Linkfiles app.lnk (von
8000 auf d600).
- Code wird nicht in ROM-Bank gelegt, sondern in RAM Bank 7, das
wird erreicht durch Änderung der Files app.lnk (4000 -> 8000) und
app.sep (4000 -> 8000 und 7fff -> bfff)
- Alternativ kann man die Daten auch zusätzlich zum Code in
RAM Bank 7 legen, wenn 16 KB für Code + Daten reichen.
Implementierung:
- Die so erzeugten Applikationen bekommen die Extension .l35, die
Binär-Datei appbnk00.bin wird umgetauft in <Name>.l35
- Über einen Lader kann man dann .l35 Applikationen auswählen,
ins RAM laden und dort ausführen
- Nach Beendigung der Applikation kehrt sie in den Lader zurück
und man kann eine andere auswählen
- Lader wird zunächst bis zu 64 Applikationen verwalten können.
- Lader legt seine Daten in RAM Bank-0 ab Adresse 0xc800 und in RAM
Bank 3
- Stackbedarf für Lader: 2 Byte
Erweiterung 25.02.2002 (Version 0.3):
- Die L35 Applikationen können optional einen Header enthalten.
In diesem kann der Applikations-Name (16 Zeichen), ein ICON zur Anzeige im
L35 Lader (L35Manager), Größe 16 x 16 Bit und eine Prüfsumme
gespeichert werden, zusätzlich ein ID-Code des Programm-Authors, Datum
und Revision-Code.
- Der Header wird eingefügt über das Programm L35head.exe, das in die Visual-C Umgebung eingebunden
werden kann.
- Die Prüfsumme wird nach dem Laden ins RAM vom L35 Lader überprüft,
bei Fehler wird die Applikation nicht gestartet.
- Beim Start des L35 Laders werden alle Applikationen von MMC gelesen
und auf einen gültigen Header hin überprüft.
- Ist so ein Header vorhanden, wird im L35 Lader statt des Dateinamens
das zugehörige ICON und der Applikationsname angezeigt.
- Durch Anlegen einer Datei <L35.txt> im Verzeichnis \IC35\L35
kann das Verhalten des L35Managers durch Schlüsselwörter in der
Datei beeinflusst werden:
- NOBMP: Die Header der L35 Dateien werden nicht ausgewertet, dadurch
ergibt sich ein schnellerer Start
- SLOAD: Ein im L35Manager integrierter serieller Lader wird aktiviert.
Damit kann man von einem PC aus L35-Dateien über die serielle Schnittstelle
(RS232 Kabel) Laden, Ladezeit < 5 Sekunden. Dazu wird auf dem PC das
Programm Sload.exe benötigt. Dieses kann
in die Visual-C Umgebung eingebunden werden.
Parameter der zugehörigen PC-Programme:
- L35head.exe
- Aufruf : L35Head -f <infile> -o <outfile> -b <bmpfile>
-n <namefile> -a <author> -r <rev>
- -f <infile>: Ausgabefile des Linkers, i.a. appbnk00.bin
- -o <outfile>: L35 Filename
- -b <bmpfile>: 16 x 16 monochrom Windows Bitmap (optional)
- -n <namefile>: Ascii File das den Applikationsnamen enthält,
max. 16 Buchstaben (optional)
- -a <author>: 2 Buchstaben als Programm-Author Identifier
(optional)
- -r <rev>: File Revision Code, 0..255 (optional)
- Sload.exe
- Aufruf: Sload -f <file> [-c <1|2|3|4>] [-clk]
- -f <file>: L35 File, wahlweise mit oder ohne Header
- -c <1|2|3|4>: Wahl der seriellen Schnittstelle (COM1: ..
4)
- -clk: Wenn angegeben, wird die aktuelle PC-Uhrzeit auf den IC35
übertragen
Besonderheiten:
- Applikationen können weiterhin mit der Emulation auf PC getestet
werden
- Durch Neukompilation können auch normale .app-Applikationen
erzeugt werden (ohne Source Änderung)
- Deutlich verkürzte Turn-around Zeiten beim Test von Applikationen
(Deinstallation, Defragmentierung und Installation entfallen)
Aktueller Stand:
- Version 1.3 eines Laders existiert, L35Manag.app
- folgende ladbare Applikationen stehen zum Test zur Verfügung:
- Soli.l35 (Solitär-Spiel)
- Wuerfel.l35 (1-6 Würfel)
- Timer.l35 (Stoppuhr und 1 - 2 Timer)
- Master.l35 (Mastermind Spiel)
- Term.l35 (V24 Terminal)
- Ane.l35 (l' âne rouge, Geduldsspiel)
- 15er Spiel (Schiebepuzzle)
- Source Code für Applikation Wuerfel.l35 kann zur Verfügung
gestellt werden als Beispiel für die Einstellungen der Dateien app.lnk,
app.sep und app.epp
Interrupt Service Routinen (ISR-Problem):
Die Verwendung von ISR's (Timer und serielle Schnittstelle) bei IC35 Applikationen
bringt das folgende Problem mit sich:
- Die RAM-Bank ist beim Aufruf der ISR nicht immer richtig gesetzt
- Der Typ der Bank (ROM / RAM / LCD) ist nicht immer richtig
gesetzt
Dieses Problem kann man bei normalen Apps dadurch umgehen, dass man in
ISR's nur auf Speicher in Bank 0 zugreift
Alternativ kann man beim Start der ISR die richtige Bank/Typ Einstellen
und beim Verlassen wieder zurücksetzen
Bei L35 Applikationen führt das ISR Problem dazu, dass die ISR gar
nicht erreicht wird, da die RAM Bank ja nicht erreichbar ist, der IC35 wird
im allgemeinen abstürzen.
Lösung:
- Der L35-Lader Code hält zwei Einsprung-Adressen für
ISR's bereit, die vor dem Aufruf der L35-Applikations-ISR die korrekten Bänke
einstellen und nach Beendigung der ISR sie wieder restaurieren.
- Außerdem sind zwei RAM Adressen reserviert, um dort die Adresse
der USER ISR's zu hinterlegen
- Die L35-Applikation schreibt nun ihre ISR Adresse an definierte
Stelle ins RAM und gibt beim Aufruf von z.B. SetTimerIsr() die IC35-Lader
ISR Adresse mit.
- Dieses Verfahren bringt allerdings mit sich, dass der Stackbedarf
um 8 Bytes ansteigt
Als Beispiel dienen die Dateien Isr.c und Isr.h, die hier herunter geladen werden können.
Der L35 Manager unterstützt jetzt dieses Verhalten.
Weiterentwicklungen:
- Man könnte sich Verfahren überlegen, um die RAM Bank 4
nutzen zu können (spezielles Bank-Switching)
- Im Lader könnte man noch andere Fonts unterbringen und für
Applikationen nutzbar machen, das hat dann allerdings die Einschränkung,
dass .L35 Applikationen nicht mehr zu .APP Applikationen kompatibel sein
können
- Man könnte aufgerufenen Programmen Parameter übergeben,
z.B. im RAM Bereich ab 0xc800
Änderungsstand:
- 0.3: siehe oben
- 0.4: Header Checksumme
wird jetzt beim Laden einer Applikation aktualisiert, da vorher geänderte
Applikationen, die an gleicher Position auf MMC standen, wegen Checksum-Fehler
nicht gestartet wurden
- 0.5: Shortcuts bei L35
Oberfläche jetzt nach Applikations-Namen statt nach File-Namen
- 1.0: Erweiterte Oberfläche
beim Start, zusätzliche Version als Ersatz des W@P Browsers bzw. Währungsrechners,
um L35 Manager direkt mit FN-8 starten zu können.
- 1.1: Hardware Erweiterung One Wire Bus
an Smart Card Interface: DS18S20 Temperatur Sensor
- 1.2: Hardware Erweiterung DS18S20, DS18B20
oder DS2436 (zusätzlich Batteriespannungsanzeige)
- 1.3: Menu Anzeige korrigiert
Dank an
- Michael Brünnert
- Jagged
- Silvio Iaccarino
für wertvolle Diskussionsbeiträge.
|