Flash programmierung + HC11

Gast #891751
Lesenswert?

Für den HC11 einen 256 Byte großen "Preloader" schreiben, eine Art 
Monitorprogramm, das in einem bestimmten Modus (Special Bootstrap Mode, 
wenn ich mich richtig erinnere) über die serielle Schnittstelle in den 
internen RAM des HC11 geladen und von dort ausgeführt wird. Dieses 
Programm startet direkt nach der Übertragung des letzten Bytes. Es muß 
nun mit einer passend dazu geschriebenen PC-Applikation kommunizieren, 
und im einfachsten Fall den Flash löschen, dann die Daten byteweise 
entgegennehmen und schreiben. Ggf. ist vorher eine Baudratenumschaltung 
nötig, da die Datenrate hoch sein muß, um das Timing für das Schreiben 
eines Blockes im Flash einzuhalten.
Gast #891774
Lesenswert?

Hier leute hier ist ein Preloader
also jetzt will ich mein Programm im Flash speichern

pddr    equ     $08
baud    equ     $2B
sccr2   equ     $2D
scsr    equ     $2E
scdr    equ     $2F
*
        org     $BF40
*
main    ldx     #$1000             init  x  for indexed access to 
hardware
        ldaa    #$A2
        staa    baud,x             restart timer , set baudrate to 7812 
Bd
        ldaa    #$0C
        staa    sccr2,x            enable receiver and transmitter
        bset    sccr2,x $01        send break to signal start of 
download to master
wait    brset   pddr,x $01 wait    wait for startbit from master
        bclr    sccr2,x $01        clear break
char    brclr   scsr,x $20 char    wait for first character from master 
(RDRF)
        ldaa    scdr,x             read character
        bne     goon
        jmp     $B600              start program in internal EEPROM
goon    cmpa    #$55               test mode ?
        beq     strt               yes, skip download
        cmpa    #$FF               baud rate ok ?
        beq     bdok               yes, goon
        bset    baud,x $33         change to 1200 Bd
bdok    ldy     #$000              init pointer
loop    brclr  scsr,x $20 loop     wait for RDRF
        ldaa    scdr,x             get character
        staa    0,y                store character to RAM
        staa    scdr,x             echo character to master
        iny                        adjust pointer
        cpy     #$0000             end of area ?
        bne     loop               no, next character
*
Gast #891777
Lesenswert?

Ist das ein echter, klassischer HC11 oder ein HCS11? Der HC11 hat doch 
recht wenig internen EEPROM, oder?

Wenn der Flash nicht extern (Programmiergerät) beschrieben werden soll, 
geht es nicht ohne im HC11 ablaufende Flash-Schreibroutine. Das 
Datenblatt des Flashes sagt, wie. Vereinfacht gesagt, Adresse und Daten 
anlegen, Programmierimpuls (WE/PROG o.ä.) geben, Adresse hochzuählen, 
nächstes Datenbyte anlegen, Programmierimpuls geben... Wiederholen, bis 
Blockgröße erreicht, ggf. kurz warten, bis Schreibvorgang intern 
abgeschlossen, dann weiter mit dem nächsten Block.

Wenn das programm dann aus dem Flash läuft, muß der HC11 das natürlich 
über die Beschaltung der MODE-Pins mitbekommen.
Gast #891804
Lesenswert?

Im Prinzip müßte anstelle dieser Zeile:

staa    0,y                store character to RAM

eine Reihe von Anweisungen stehen, etwa (nur als Pseudocode, 
vereinfacht):

Lege Adresse Y an den Port, an dem die Adreßleitungen des Flash liegen
(ggf, separat für High- und Low-Byte)
Lege eben empfangene Daten aus den Akkumulator an den Port, an dem D7-D0 
liegen
Setze Schreibsignal (WE=L) (Tip: CE=L, OE=H während des 
Schreibvorganges)
Setze Schreibsignal zurück (WE=H)

Aber: Vor Beginn des Schreibvorganges muß, siehe DATENBLATT, 2x ein 
"Unlock" und 1x ein "Write Set-Up" Befehl geschrieben werden.

Dies setzt voraus, daß der Flash schon leer ist, sonst ist Löschen 
nötig.
Gast #891847
Lesenswert?

Hi Sebastian viel Danke für die Bemühungen.mein MCU ist an einem CPLD 
über den PORTC angeschlossen Das Flash Memory ist ihrer seite an dem 
CPLD angeschlossen.die CE(chip enable ), WE(Write enable) und OE (Output 
enable) sind an dem CPLD angeschlossen.soll der Flash über das CPLD 
programmiert werden?
ich habe echt keine Ahnung.
Gast #891850
Lesenswert?

Oh, vielleicht ein PSD von Waferscale (heute ST)? Solche Sachen habe ich 
in der Firma schon gesehen.
Aber, um zurück zur Sache zu kommen: Das hängt ganz davon ab. Nämlich 
davon, was denn im dem CPLD an Logik realisiert ist. Möglicherweise ein 
Adreßdekoder, vielleicht auch mit Latch, um Portleitungen zu sparen?

Ohne zu wissen, was der CPLD mit den Datenleitungen macht, wird das 
Programmieren leider ziemlich schwierig. Gibt es denn keine Beschreibung 
oder Quellcode dazu?
Gast #891889
Lesenswert?

eigentlich brauche ich nicht der CPLD. im prinzip das war eine 
vorgefertige platine.meine aufgabe liegt darin das Steuerprogramm zu 
laden.
der CPLD wie ich sagte brauche ich nicht.
Also
A0-A7 sind an dem CPLD angeschlossen
A8-A14 sind an dem CPLD Microcontroller angeschlossen
A15-A16 sind an dem CPLD angeschlossen
CE,WE und OE sind an dem CPLD angeschlossen
und die Microcontroller Pins E , ES, RS sind am dem CPLD angeschlossen
also ich denke ich brauche eigentlich nicht der CPLD
Gast #891907
Lesenswert?

Hi Sebastian auf dem Oben genannten Programm können wir nicht anstatt Im 
EEPROM zu verzweigen im Flash Momerory verzweigen?

Ich meine  mit dem Befehl

FlahStart EQU $8000                ; Flash anfang
.
.
.

char    brclr   scsr,x $20 char    ; wait for first character from 
master
        ldaa    scdr,x             ; read character
        bne     goon
        jmp     FlahStart          ; start program in Flash ()entspricht 
sector SA2

aber hier denke ich müssen wir den Port definieren da wo der Flash 
anegschlossen ist
Gast #891918
Lesenswert?

Prinzipiell richtig. Um ein Programm aus dem Flash ausführen zu können, 
muß dieser in einer bestimmten Art und Weise angeschlossen sein. 
Schaltplan wäre toll. Im Prinzip ist es gar kein Problem, in den Flash 
memory zu verzweigen - vorausgesetzt der Flash ist an den HC11 wirklich 
so angeschlossen, wie das Datenblatt des HC11 es fordert, also für 
Daten- und Adreßbus die richtigen, dafür vorgesehenen Ports.

Vielleicht setzt der CPLD ja nur die Signale E und R/W des HC11 in /OE 
und /WE für den Flash um (und dient vielleicht als Adreßlatch).
Gast #897353
Lesenswert?

Noch eine Ergänzung: Vielleicht hilft es, den Flash nicht kontiniuerlich 
zu beschreiben, sondern im Assembler mit ORG-Direktive den Code nur an 
Stellen zu legen, die sich nicht mit internem Speicher des HC11 
überlappen. Also im externen Flash Lücken lassen, wo er nicht benutzbar 
ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren