fujitsufan
Erfahrenes Mitglied
Hallo,
wer kann mir einen Tipp geben, wie man beim Fujitsu MB90F347 nichtflüchtige Daten ins Flash schreibt?
Die Grundvoraussetzung mit den von Fujitsu vorgefertigten Funktionen
habe ich schon erfüllt: d.h.
1. Flash-Routinen erstellen und im RAM Speicherbereich definieren.
2. Im Start-up File den Kopiervorgang der Flasch-Routinen vom ROM ins RAM freigeben.
2. System stack ist im Start-up File auch auf 1k erweitert.
Ich kann in einer Anwendung mit kleinem Umfang die Flash Speicherfunktionen ausführen.
z.B.: Sektoren löschen, Sektoren beschreiben, Sektoren lesen.
In einer Anwendung mit größerem Umfang, (ROM 87kB; RAM 3,5kB) funktioniert der Zugriff auf das Flash nicht mehr.
Beim Aufruf einer der Flash-Routinen z.B.
geht der Programmcounter zwar noch auf eine Adresse die im RAM-Bereich liegt und an der die Funktion auch liegt,
der Controller führt aber die gewünschten Funktionen nicht aus.
Der Monitor Debugger von Accemic verliert hier ebenfalls die Fährte.
Ab diesem Zeitpunkt sind auch über den Monitor Debugger von Accemic keine lokalen Variablen mehr erkennbar.
Also kein Debuggen mehr möglich.
Wie geht´s weiter?![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)
wer kann mir einen Tipp geben, wie man beim Fujitsu MB90F347 nichtflüchtige Daten ins Flash schreibt?
Die Grundvoraussetzung mit den von Fujitsu vorgefertigten Funktionen
Code:
__far UINT8 Flash_sector_erase(volatile __far UINT16 *sector_adr)
__far UINT8 Flash_write(volatile __far UINT16 *w_write_adr, volatile UINT16 w_data)
__far UINT16 Flash_read(volatile __far UINT16 *start_flash_adr)
1. Flash-Routinen erstellen und im RAM Speicherbereich definieren.
Code:
#pragma section FAR_CODE=RAMCODE /* located the program into RAM */
#pragma section CODE=RAMCODE
Code:
#set COPY_RAMCODE ON ; <<< enable RAMCODE section to
; be copied from ROM to RAM
Code:
#set STACK_SYS_SIZE 1024 ; <<< byte size of System stack
Ich kann in einer Anwendung mit kleinem Umfang die Flash Speicherfunktionen ausführen.
z.B.: Sektoren löschen, Sektoren beschreiben, Sektoren lesen.
In einer Anwendung mit größerem Umfang, (ROM 87kB; RAM 3,5kB) funktioniert der Zugriff auf das Flash nicht mehr.
Beim Aufruf einer der Flash-Routinen z.B.
Code:
__far UINT16 Flash_read(volatile __far UINT16 *start_flash_adr)
der Controller führt aber die gewünschten Funktionen nicht aus.
Der Monitor Debugger von Accemic verliert hier ebenfalls die Fährte.
Ab diesem Zeitpunkt sind auch über den Monitor Debugger von Accemic keine lokalen Variablen mehr erkennbar.
Also kein Debuggen mehr möglich.
Wie geht´s weiter?
![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)