RA2E2 Options Function Select Register in Assembler setzen

#7070519
Lesenswert?

Hallo Zusammen,

wir programmieren aus diversen Gründen noch ziemlich "Old School" in 
Assembler und mussten jetzt von AVR und PIC auf ARM (Renesas RA2E2) 
umsteigen.

Als Entwicklungsumgebenung verwenden wir dafür Keil µVison.

Leider haben wir ein Problem und wissen nicht wie die Option Function 
Select Register gesetzt werden können (OFS0 und) OFS1). Diese können 
scheinbar nicht im Hauptprogramm nach dem Reset beschrieben werden, 
sondern müssen vorher gesetzt werden.

Weiß vielleicht jemand, ob und wie ich diese vorher definieren in 
Assembler definieren kann oder geht es vielleicht über das J-Link 
Programmiergerät, dass dieses die beiden Register direkt beim Flashen 
setzt.

Vielen Dank im Voraus.

Beste Grüße,

Ernie
#7070709
Lesenswert?

Hallo,

vielen Dank für die Rückmeldung. Dies habe ich auch schon gedacht, aber 
leider finde ich da keine Einstellung oder Beschreibung.

Wir verwenden das erste Mal ARM und Keil und kennen uns da noch nicht so 
gut aus. Auf dem Evaluation Board ist ein Segger J-Link onboard.

Die RA2E2 Dokumentation gibt da auch wenig her und die meisten werden 
das wohl mit dem Smart Configurator für C einstellen.

Gruß,

Ernie
#7071676
Lesenswert?

ich denke dass du sowas mit AREA machen kannst. Dann im Linkerskript den 
beiden AREA Sections die passenden Adressen zuordnen

Beispiel (ungetestet weil ich kein ARM Asm kann):
1
AREA config0 READONLY
2
     DCD   0x<your OFS0 value>
3
END
4

5
AREA config1 READONLY
6
     DCD   0x<your OFS1 value> 
7
END

Die Idee dahinter ist dass deinem Flash executable eben die bei beiden 
Config Words vom Linker beigefügt werden.
#7090713
Lesenswert?

Hallo,

ich habe eine Lösung für das IAR Embedded Workbench gefunden. In der 
Linker Datei *.icf muss die Region definiert werden:
1
define region OSF1_REGION = mem:[from 0x00000404 to 0x00000407];
2
place in OSF1_REGION { section OSF1_SECTION };

Dann muss im Code noch eine C-Datei mit der Definition des Wertes 
erfolgen:
1
#include <stdint.h>
2

3
#pragma location="OSF1_SECTION"
4

5
__root const uint32_t OFS1_VALUE = 0xFFFFAFFF;

Vielen Dank nochmal für die Unterstützung!

Gruß,

Ernie

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