Gast
#891732
Hi.Mal eine kurze Frage Ich habe ein Programm geschrieben das ich in einem Flash Memory(AM29F010 ) laden will? wie soll ich vorgehen? NB:Mein Flash Memory ist an einem MCU (HC11)angeschlossen
|
Anzeige
|
Flash programmierung + HC11
Gast
#891732
Hi.Mal eine kurze Frage Ich habe ein Programm geschrieben das ich in einem Flash Memory(AM29F010 ) laden will? wie soll ich vorgehen? NB:Mein Flash Memory ist an einem MCU (HC11)angeschlossen
Gast
#891748
Endlich mal wieder eine präzise Frage und schön kurz auch noch.
Gast
#891751
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
#891761
Du kannst mit einem Bootloader der Flash Speicher programmieren, aber du brauchst ein EPROM oder ROM mit Bootloader.
Gast
#891764
Hi Sebastian der Talker und der Preloader sind schon im RAM. mein Programm steht im EEPROM.dieses ist auch "voll" jetzt will ich die Hauptlast vom EEPROM im Flash Memory verlagern.
Gast
#891774
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
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
#891793
Ja der Hc11 hat einen 512 Bytes internen EEPROM
Gast
#891804
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
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
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
#891852
Hi Sebastian soll ich einfach den Flussdiagramm auf dem Dattenblatt herausprogrammieren?
Gast
#891853
Zu viele Fragen aber ich bin am lernen leute
Gast
#891889
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
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
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
#891928
Hi ich versuche das Programm zu fertigen dann schick ich dir Okay, danke... (jetzt angemeldet, damit die Nachricht auch ankommt). Bin allerdings kein Profi, kann nur mal nach der Devise "Vier Augen sehen mehr als zwei" drüberschauen.
Gast
#891971
Hi Sebastian nicht dass du lange wartest.ich meld mich später bitte danke für die Geduld
Gast
#892556
Hi Sebastian ,ich bin nicht vorangekommen.bin immer noch am ueberlegen Kein Problem. Ich bin auch per e-mail zu erreichen, SEckert01 (at) netscape.net
Gast
#892699
Hi Sebastian ich habe was.ich es dir per email. bis spaeter
Gast
#897353
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 schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|