hed.chip
programmiert fast alle CMOS-MCS51-Varianten der Hersteller Atmel,
Dallas, Intel, Philips, Siemens, SST und Temic. Für Controller in den
Bauformen PLCC44 und SOIC20 sind Adapter verfügbar.
Wenn ein solcher Controller programmiert oder
ausgelesen werden soll, muß zunächst in der Befehlszeile das
richtige Mnemonic angegeben werden. hed.chip
vergleicht das Mnemonic mit der Hersteller-ID und der Baustein-ID und
wählt dann automatisch den richtigen Programmieralgorithmus.
Wenn eine Anwendung z.B. für einen Philips 87C52
entwickelt werden soll, muß mit Hilfe eines Crossassemblers bzw.
Crosscompilers eine Intel-Hex-Datei oder eine Binärdatei erzeugt
werden. Diese kann hed.chip
dann in den Controller programmieren:
- hedchip /gp87c5x /p/v myapp.hex
-
Es ist notwendig, daß in dem obigen Beispiel das
Mnemonic p87c5x und nicht etwa i87c5x für Intel Controller verwendet
wird. Wenn die Hersteller-ID nicht mit dem Mnemonic übereinstimmt,
wird hed.chip
jede Aktion mit dem Baustein ablehnen. Das gleiche gilt für den Fall,
daß die Baustein-ID hed.chip
nicht bekannt ist. Wir werden uns bemühen, für neue Bausteine so
schnell wie möglich Updates der hed.chip-Software
zu erstellen.
Achtung: Es wird keine Fehlermeldung und auch keine
Warnung erzeugt, wenn die Quelldatei für den Speicher des Controllers
zu groß ist.
MCS51 Controller haben zwei oder drei sogenannte
Lockbits, die den Baustein schützen:
| Parameter |
Lockbits |
Funktion |
| S1 |
1 |
schützt gegen weitere
Programmierung |
| S3 |
1 + 2 |
schützt gegen Auslesen des
Programmspeichers. Da nach wie vor externe Programme ablaufen
können, ist der Schutz nicht sehr sicher. S3 beinhaltet
automatisch S1. |
| S7 |
1 + 2 + 3 |
verhindert, daß externe Programme
ablaufen. Der Zustand des PINs EA/ ist bei gesetztem
3. Lockbit ohne Bedeutung. S7 beinhaltet automatisch S3 und
S1. Nicht alle Bausteine verfügen über dieses Lockbit. |
Mit S2 oder höher geschützte Bausteine werden vom
Programmer entweder nicht erkannt, weil auch die Hersteller-ID nicht
ausgelesen werden kann, oder sie werden als leer verkannt. Der
Versuch, einen solchen, vermeintlich leeren Baustein zu programmieren,
führt zu der Fehlermeldung ‘Baustein nicht programmierbar’.
Falls ein Baustein also von hed.chip
nicht akzeptiert wird oder nicht programmiert werden kann, sollte
dieser Baustein zunächst gelöscht werden. Zur Programmierung der
Lockbits muß in der Kommandozeile zusätzlich zu /p der Parameter
/s1, /s3 oder /s7 angegeben werden. Die höheren Lockbits schließen
automatisch die niedrigeren mit ein; /s7 programmiert also alle
Lockbits bei jedem beliebigen MCS51 Controller:
- hedchip /gp87c5x /p /v /s7 myapp.hex
-
Außerdem verfügen einige MCS51 Controller über
ein ‘Encryption Array’. Die Programmierung dieser ‘Schutzmaßnahme’
wird von hed.chip
nicht unterstützt, da uns dafür keine sinnvolle Anwendung bekannt
ist.
können im hed.chip
elektrisch gelöscht werden. Auch die kleinen Varianten im DIP20
Gehäuse können direkt in den Programmiersockel des hed.chip
eingesetzt werden. Diese Bausteine können auch in einem Arbeitsgang
gelöscht und neu programmiert werden:
| hedchip /ga89c5x /p /v /e
myapp.hex |
; für AT89C51/2, LV51/2 |
| hedchip /ga89cx051 /p /v /e
myapp.hex |
; für AT89C1051/2051 |
Lediglich wenn ein Baustein mit gesetzten Lockbits
neu programmiert werden soll, muß zuvor ein separater Löschvorgang
durchgeführt werden.
Für die AT89Cxx-Varianten mit 5V
Programmierspannung wird das Mnemonic /ga89c5x-5 verwendet. Die Typen
AT89LV** könnnen mit den gleichen Einstellungen programmiert werden.
AT89C51RC und AT89C55WD
Für diese Bausteine wird das Bausteinmnemonik /ga89c5x2 verwendet.
Lesegeschützte Bau-steine können von leeren Bausteinen nicht
unterschieden werden. Um programmierte und lese-geschützte Bausteine
neu zu programmieren, muß der Baustein vorher in einem separaten
Aufruf des Programmiergerätes gelöscht werden:
| hedchip /ga89c5x2 /e |
; Löschen (für geschützte Bausteine) |
| hedchip /ga89c5x2 /p /v /s7 myapp.hex |
; Programmieren, Verifizieren, Leseschützen. |
können im hed.chip
gelöscht und programmiert werden. hed.chip
kann auch die SPI Security Fuse aktivieren und den
EEPROM-Datenspeicher des AT89S8252 programmieren. Zum Programmieren
des FLASH-Programmspeichers und des EEPROM-Datenspeichers werden zwei
verschiedene Mnemonics benutzt. Die Schutzfunktionen können nur in
Verbindung mit dem Mnemonic a89sxxxx benutzt werden. Der Löschvorgang
wirkt sich immer auf den ganzen Baustein, also FLASH-Programmspeicher,
EEPROM-Datenspeicher und alle Schutz-Funktionen aus.
| hedchip
/ga89sxxxx /p/v/e/s7 myapp.hex |
; AT89S8252 oder
AT89S53 FLASH löschen, pro; grammieren, verifizieren und
schreib-/leseschützen |
| hedchip
/ga89sxxxx /p/v/e/s15 myapp.hex |
; dito, auch SPI
Security Fuse setzen |
| hedchip
/ga89sxxxx /p/v/e/s7/s8 myapp.hex |
; dito, /s7/s8
entspricht /s15 |
| hedchip
/ga89seeprom /p/v myapp.hex |
; AT89S8252
EEPROM programmieren und verifizieren. |
Wenn Programm- und Datenspeicher programmiert und
geschützt werden sollen, muß folgende Reihenfolge eingehalten
werden: Baustein löschen, EEPROM-Datenspeicher programmieren,
FLASH-Programmspeicher programmieren und schützen. Der Datenspeicher
ist dann auch geschützt.
Die Typen AT89LS** können mit den gleichen
Einstellungen programmiert werden.
Für die Philips Controller 87C749 und 87C752 ist
der Adapter DIP752 notwendig. Zu beachten ist, daß die Controller
87C748, ‘749, ‘751 und ‘752 mit dem Mnemonic /gp87c7xx
programmiert werden, der 87C750 jedoch mit dem Mnemonic /gp87c750.
Controller von Signetics werden wie Philips Bausteine behandelt.
Philips P89C5*-Controller
hed.chip unterstützt die Typen
P89C51Uxxx, P89C52Uxxx, P89C54Uxxx, P89C58Uxxx, P89C51RC+, -RD+,
P89C51RB2, -RC2, -RD2. Alle diese Typen haben die üblichen 3 Lockbits
wie andere MCS51 Microcontroller auch.
P89C51RC+ und –RD+ verfügt zusätzlich über ein Status-Byte.
Dieses kann programmiert wer-den, wenn bei der Programmierung /S8
zusätzlich angegeben wird.
P89C51RB2, -RC2, -RD2 arbeiten per Voreinstellung im 6x clock mode.
In diesem Mode wird ein Maschinenzyklus in 6 Taktzyklen ausgeführt.
Der Baustein arbeitet also mit doppelter Geschwin-digkeit im Vergleich
zu anderen, normalen MCS51 Microcontrollern. Wenn die Option /s16 (=
12x clock mode) programmiert wird, arbeitet der Microcontroller mit
der normalen Geschwindig-keit. Wenn diese Option einmal programmiert
ist, dann ist es nicht möglich, den Microcontroller wieder in den 6x
clock mode zu versetzen. Der 12x clock mode sollte programmiert
werden, wenn man diese Controller als Ersatz für andere MCS51
Microcontroller einsetzen will und der Control-ler das gleiche
Zeitverhalten wie der ursprünglich Controller haben soll.
Die Bausteine DS87C520 und ‘530 haben einen
Watchdog Timer. Dieser kann im Falle eines Programmabsturzes ein RESET
des Controllers auslösen. Der Watchdog Timer läuft immer, löst aber
nur dann ein RESET aus, wenn die entsprechende Funktion aktiviert
wurde. Damit der Watchdog von Anfang an im Falle eines
Programmabsturzes ein RESET auslösen kann, müssen die Bausteine mit
dem Mnemonic d87c5x0-w programmiert werden.
hed.chip
unterstützt auch den Baustein Siemens SAB-C513A-H. Dieser Baustein
ist von Siemens nur zum Zwecke der Entwicklung gedacht. Er verfügt
über keine Lockbits und beim Einsatz sollte das Siemens Errata Sheet,
Release 1.2 vom 20.09.1995 für Bausteine mit der Markierung „ES-BA",
beachtet werden.
Siemens C505A-4E, C505CA-4E
Diese Microcontroller von Siemens verfügen über 32kByte OTP EPROM
Speicher. (OTP = One Time Programmable = einmalig programmierbar). Der
Controller steht nur in der Bauform PQFP44 zur Verfügung.
Das Pinout unterscheidet sich etwas von anderen MCS51
Microcontrollern in dieser Bauform. An Pins 38/39 liegt die Versorgung
für den internen AD-Wandler, an Pin 17 liegt die digitale
Versor-gung. Für die Programmierung wird nur die digitale Versorgung
angeschlossen.
Wegen dieser Besonderheit muss zur Programmierung der Adapter
PQFP44_C505 verwendet wer-den. Dieser Adapter wurde freundlicherweise
von der Firma Kriwan entworfen und hergestellt.
Die MCS51 Micocontroller von SST zeichnen sich durch
eine Besonderheit aus. Sie haben zwei getrennte Blöcke FLASH
Programmspeicher. Block 0 ist der primäre Speicher und hat eine
Größe von 16 bzw. 32 kByte. Block 1 hat eine Größe von 4 kByte und
liegt an Adresse 0xF000. Eine Besonderheit ist, daß diese
Microcontroller den eigenen FLASH Programmspeicher beschreiben
können. Im Datenblatt wird dieses Feature als "In-Application
Programming" beschrieben.
Für die Programmierung des Block 0 wird das
Bausteinmnemonic /gsst89f5x_0 verwendet.
Für die Programmierung des Block 1 wird das
Bausteinmnemonic /gsst89f5x_1 verwendet. Bei Quelldateien im Intel Hex
Format muß darauf geachtet werden, daß die Quelldatei keinen Offset
enthält. Dazu muß im Assembler die Anweisung ".phase
0xf000" statt ".org 0xf000" benutzt werden.
Die Löschfunktion löscht immer beide
Speicherblöcke.
Diese Microcontroller haben keine Lockbits. Statt
dessen wird der Lese- und Schreibschutz des internen Speichers durch
den Inhalt der letzten Speicherzelle im Block 1 bestimmt. Dieses Byte
wird Security Byte genannt. Der Schreibschutz ist sinnvoll, damit der
Programmspeicher nicht unbeabsichtigt verändert werden kann.
| Parameter |
Sec.
Byte |
Funktion |
| /S0 |
0xFF |
Kein Schutz. |
| /S85 |
0x55 |
Beide FLASH
Speicherblöcke sind geschützt (hard lock) |
| /S245 |
0xF5 |
Nur der obere 4 kByte
Block ist geschützt (hard lock) |
| /S5 |
0x05 |
Beide Speicherblöcke
sind geschützt, können aber durch In-Application Programming
programmiert werden. (soft lock). |
Der Schutz kann entweder durch den Inhalt der
Quelldatei für Block 1 oder durch Parameter in der Kommadozeile
aktiviert werden. Parameter in der Kommandozeile haben Vorrang vor
einen Wert für das Security Byte in der Quelldatei. Wenn beide
Speicherblöcke programmiert werden sollen, darf der Schutz erst bei
der Programmierung des zweiten Speicherblocks aktiviert werden.
Dieser Microcontroller hat keine Lockbits. Da hed.chip
das Encryption-Array nicht programmieren kann, gibt es keinen Schutz
gegen Auslesen. Das Encryption-Array ist als Schutz gegen Auslesen
ohnehin fast wirkungslos.
|