www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik XC2287: Schreibzugriff auf Flash?


Autor: Jaecko (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin.

Ich versuche gerade für eine Anwendung Codestücke zusammenzustellen, mit 
der man den internen Flash des XC2287 löschen/neu beschreiben kann.

Im Anhang sind die bisherigen Befehle; Die Zugrifssequenzen sind 
(hoffentlich richtig) aus dem Datenblatt übernommen.

Schon mal die erste Frage: Hat eine gelöschte Page überall den Wert 0x00 
oder 0xFF? Bei den Atmels ist der gelöschte Flash ja 0xFF; sag ich hier 
Erase, ist die Page komplett 0x00.

Neue Daten (mit der folgenden Befehlssequenz) kann ich dann nur in Pages 
schreiben, in denen vor dem Erase schon Daten waren.
// Array 0, Sector 0, Page 1
ui32_t pagetestaddr = FLASH_GetPageAddress(0, 0, 1);

FLASH_PageErase(pagetestaddr); 
FLASH_EnterPageMode(pagetestaddr);
for (pagedata = 0 ; pagedata < 64 ; pagedata++)
{
  FLASH_LoadPageWord(pagetestaddr, 0xAA55);
}
FLASH_ProgramPage(pagetestaddr);

Vergleiche ich den "alten" Inhalt mit dem, was eigentlich drinstehen 
sollte (0xAA55), dann sieht das so aus:
(Oben vor dem Erase, unten nach dem neu beschreiben)

4AB5 B5B5 881A 0302 F0E6 8220 881A 0303 F0E6 8240 881A 0300 F0E6 8200 
F9E6 00C1 F8E6 063E 18F0 1970

0A15 A015 8810 0200 A044 8200 8810 0201 A044 8240 8810 0200 A044 8200 
A844 0041 A844 0214 0850 0850

Kennt jemand dieses Problem bzw. weiss, was ich da übersehen hab?

mfG

Autor: Ronny S. (ronnyschulze) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

zur ersten Frage: Infineons interne Flash sind alle 0x00 nach dem 
löschen im Gegensatz zu externen Flashes.

Hast du Dir mal angesehen ob der Flash 0x00 nach dem löschen ist?

Autor: Jaecko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja mittlerweile hat sich das Problem soweit eh schon erledigt.
Also der Flash ist korrekterweise 0x00.
Ich hab komplett neue Routinen, Löschen, Schreiben, Lesen läuft damit 
perfekt und es steht auch genau das drin, was rein soll.

Autor: Rothaus Bier (tannenzaepfle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jaecko,

bin auch gerade dabei paar Lösch- und Schreibroutinen zu bauen.
Stellst Du Dein Code der Allgemeinheit zur Verfügung?
Würde die Arbeit sehr beschleunigen.
Besten Dank schon mal.

Autor: Marco G. (stan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hätte auch Interesse an den Routinen.
Gibt es dazu eine AppNote oder nur die normalen Datenblätter? Die sind 
etwas dürftig bzgl. der Vorgehensweise beim Flashen.

Autor: Ronny S. (ronnyschulze) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey,

falls Ihr Keil benutzt schaut mal unter dem Verzeichnis: 
..\Keil\C166\Flash\XE16x nach. Dort befinden sich die Flash Treiber 
Sourcen für den XE166 in C... (FlashDev.c)

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.