www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Flash programmierung + HC11


Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Endlich mal wieder eine präzise Frage und schön kurz auch noch.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ale (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst mit einem Bootloader der Flash Speicher programmieren, aber du 
brauchst ein EPROM oder ROM mit Bootloader.

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
*

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja der Hc11 hat einen 512 Bytes internen EEPROM

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Sebastian soll ich einfach den Flussdiagramm auf dem Dattenblatt 
herausprogrammieren?

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu viele Fragen aber ich bin am lernen leute

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ich versuche das Programm zu fertigen dann schick ich dir

Autor: Sebastian E. (der_andere_sebastian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Sebastian nicht dass du lange wartest.ich meld mich später bitte
danke für die Geduld

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Sebastian ,ich bin nicht vorangekommen.bin immer noch am ueberlegen

Autor: Sebastian E. (der_andere_sebastian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem. Ich bin auch per e-mail zu erreichen, SEckert01 (at) 
netscape.net

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Sebastian ich habe was.ich es dir per email.
bis spaeter

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.