# Downloaden von Programmen

### Programm-Beschreibung

Diese Funktion ermöglicht die Übertragung von Anwenderprogrammen von einem Host-System (PC, Mac oder Unix-Workstation) über ein serielles Kabel zum EyeBot RAM.

### Einstellungen auf Host-System und EyeBot

- Serielle Daten vom Hostrechner

  Auf dem Hostrechner muß ein Terminalprogramm (z.B. "Kermit" auf PC oder "Terminal" auf Mac) installiert und entsprechend den EyeBot-Daten konfiguriert sein. Das Terminalprogramm sendet ausführbare Programme im Format "S-Record" zum EyeBot.

- Parameter am EyeBot

  Folgende Parameter können am EyeBot eingestellt werden:

  - Baudraten: 9600, 19200, 38400, 57600, 115200.
  - Handshakes: None, RTS/CTS.
  - Portnummer: 1 (default), 2, 3

- Protokolleinstellungen für PC/Mac

- Auf Unix-Systemen kann man entweder Kermit verwenden oder
  einmalig die Leitungsgeschwindigkeit einstllen (für COM2):
  stty speed 57600 crtscts < /dev/ttyS1
  die aktuellen Einstellungen kann man testen mit (für COM2):
  stty -a < /dev/ttyS1
  der Datentransfer unter Unix (für COM2) wird dann sehr einfach:
  cat myfile.hex > /dev/ttyS1
  für einfaches Download wird auch ein Shell-Script bereitgestellt, welches speed 57600, RTS/CTS und port COM2 annimmt:
  dl myfile.hex

### Datenübertragung

Während der Datenübertragung zeigt EyeBot den Namen der übertragenen Datei, sowie die Anzahl der bislang erhaltenen Bytes an. Nach der Abschlußmeldung der Übertragung kann das Anwenderprogramm ausgeführt werden.

### Fehlermeldungen

Beim Download wird jede Zeile auf Übertragungsfehler hin untersucht. Falls ein Fehler aufgetreten ist, wird die Übertragung abgebrochen und eine entsprechende Fehlermeldung auf dem LCD ausgegeben.

- Liste mit Fehlermeldungen und Lösungen

### Beschränkungen

- Speicherplatz

  EyeBot RAM für Anwenderprogramme beginnt bei 20000 hex und endet bei 40000 hex (128 KB). Das RAM kann jedoch auf 1MB erweitert werden.

- Baud Rate

  The maximxiale Baudrate beträgt 57600.

- Anzeige der übertragenen Datenmenge

  Die Anzeige der übertragenen Bytes funktioniert nur in Verbindung mit der Flußkontrolle RTS/CST. Ansonsten wird nur die Erfolgsmeldung am Ende der Übertragung ausgegeben.

### Befehlsfolge

- Hardware: Download-Kabel zwischen EyeBot und Host-System anschließen (z.B. serieller Port am PC)
- Compilieren oder Assemblieren des Anwenderprogramms
- Das Anwenderprogramm darf keine Adressen unter 20000 HEX verwenden; diese sind für das Betriebssystem reserviert
- Verwenden der objcopy Routine um ein S-Record-File (".hex") zu erzeugen
- Setzen der Übertragungsparameter am EyeBot: Übertragungsgeschwindigkeit (z.B. 57.600 Baud) und Handshake
  Auswahl Set / Ser vom Eyebot-Menü

      SerSetup:
      Serial Speed: *
         9600
      Handshake:
         RTS/CTS

       +  -   Nxt END

- Auswahl Usr / Ld vom EyeBot-Menü

      Ready to
      download at
      57600, RTS/CTS:
      Downloading:

                 END

- Senden des .HEX Files vom Host (PC) mittels DOS kermit oder Windows Terminal
  kermit: transmit myprog.hex

      Ready to
      download at
      57600, RTS/CTS:
      Downloading:
           myprog.hex
      Bytes:   80260
      Ld Run Rom END

- EyeBot teilt die Beendigung der Übertragung oder eventuelle Fehler mit. Anschließend kann das Anwenderprogramm gestartet werden.

      User Prog.:

      Program loaded:
          myprog.hex

      Ld Run Rom END

- Bei EyeBots mit großem Flash-ROM können Benutzerprogramme im ROM abgelegt werden. Abhängig von RAM- und ROM-Größe können bis zu drei Anwenderprogramme im Flash-ROM permanent gespeichert und wieder geladen werden.

      ---Flashdrive---
      Program in RAM:
          myprog.hex
      Programs in ROM:
            NONE.hex *
            NONE.hex
            NONE.hex
      Sav Ld Nxt END

- Bei EyeBots mit großem Flash-ROM kann ein "turn key" system erzeugt werden, d.h. ein System bei dem automatisch ein Anwenderprogramm vom ROM geladen und ausgeführt wird, sobald der EyeBot eingeschaltet wird oder ein Reset erfolgt. Um dies zu tun, wird das zu ladende Benutzerprogramm startup.hex genannt und in einem ROM Slot gespeichert. Falls mehrere Programme mit diesem Namen existieren, wird das mit der kleinsten Slotnummer verwendet.

  Wenn während des Starts des Robios eine beliebige Taste des EyeBot gedrückt wird, unterbindet dies den automatischen Start eines Benutzerprogamms.

Thomas Bräunl, Barbara Linn und Klaus Schmitt, 1997