Forum: Mikrocontroller und Digitale Elektronik RA2E2 Options Function Select Register in Assembler setzen


von Sascha T. (ernie1973)


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

von Thomas Z. (usbman)


Lesenswert?

Diese beiden Register werden doch vom Flasher gesetzt. Die sind für das 
Programm readonly.

von Sascha T. (ernie1973)


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

: Bearbeitet durch User
von Thomas Z. (usbman)


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.

von Sascha T. (ernie1973)


Lesenswert?

Vielen Dank, leider bekomme ich es nicht hin, da ich nicht weiß wo und 
wie ich diese Bereich im Linkerskript definiere.

Ist das Linkerskript bei Keil µVision das "Scatter File" oder kann man 
es irgendwie über den "Linker Control String" definieren?

von Thomas Z. (usbman)


Lesenswert?

Schau mal in die Hilfe Files.

Arm Compiler User Guide ->
  Linker User Guide ->
    Methods of specifying an image memory map with the linker

Da must du dich halt mal durchwurschteln. Speziell gibt es da noch einen 
Abschnitt Section Placement. Mir ist klar dass das alles andere als 
übersichtlich ist. Und immer schön in die Map Files schauen

von Sascha T. (ernie1973)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.