Forum: Compiler & IDEs sfr error in IAR Embedded Workbench


von Philipp S. (phischl)


Lesenswert?

Hallo zusammen!

Ich arbeite erst seit kurzem mit IAR Embedded Workbench (8.20.1) und 
programmiere damit einen Arm Cortex-M4 Mikrocontroller.

Ich möchte das Bluetooth Modul nRF2740 von Nordic (nRF8001 BLE Chip) mit 
dem µC ansteuern. Für das Bluetooth Modul gibt es Beispielprojekte und 
Source Code. Die Beispielprojekte konnte ich in µVision 5 ohne Fehler 
compilieren.

Jetzt zu meinem Problem: Wenn ich nun zu meinem Programm für den 
Mikrocontroller in IAR die Files für das Bluetooth Modul hinzufüge 
bekomme ich folgende Fehlermeldung:
identifier "sfr" is undefined

Hier einige Zeilen wo der Fehler auftritt (insgesamt mehr als 115 mal):
sfr   P0           = 0x80;
sfr   SP           = 0x81;
sfr   DPL          = 0x82;
sfr   DPH          = 0x83;
sfr   DPL1         = 0x84;
sfr   DPH1         = 0x85;
sfr   PCON         = 0x87;

Wie der Fehler schon sagt muss sfr definiert werden, leider habe im www 
nichts dazu gefunden.

Kann mir dabei vielleicht jemand helfen? Vielen Dank!

von Hans (Gast)


Lesenswert?

Hallo,

die von Dir aufgelisteten "sfr" sind für den 8051.

Das gibt es glaube ich nicht für die ARM CPUs

von m.n. (Gast)


Lesenswert?

Hans schrieb:
> die von Dir aufgelisteten "sfr" sind für den 8051.

Da ist man schon ein wenig sprachlos ;-)

von Jim M. (turboj)


Lesenswert?

Philipp S. schrieb:
> Kann mir dabei vielleicht jemand helfen? Vielen Dank!

Ich habe schon mal ein nicht-triviales Projekt von 8051 auf Cortex-M3 
portiert, da fässt man gefühlt jede 2. Zeile an.

Natürlich müsste man den 8051 Code dazu überhaupt lesen können, was bei 
Dir offensichtlich nicht der Fall ist (ansonsten wäre Dir bekannt was 
ein SFR ist).

Schmeiss das olle nRF8001 Modul weg und nimm eins mit den Nachfolgern 
NRF51 oder NRF52. Dort sind Cortex-M0 oder Cortex-M4 Core drin, die 
kannste mit IAR direkt programmieren.

von Cool Drinks (Gast)


Lesenswert?

Keine Ahnung und dann nen M4?
Cool ...

von Michael F. (Gast)


Lesenswert?

Nabend,

das BLE Modul hängt per SPI oder I2C oder UART oder ... am CM4 und Du 
versuchst über diese Schnittstelle das Ganze ans rennen zu bekommen?

Wenn Du den CM4 programmieren möchtest, dann interessieren Dich die 
internen SFR im BLE Modul nicht sonderlich, da Du ja indirekt über das 
serielle Interface auf das BLE Modul zugreifst und hier würde ich die 
Zuordnung von Label und Adresse in ein #define packen.

Oder möchtest Du direkt den 8051 im BLE Modul programmieren? Dann bist 
Du bei der EWARM falsch und bräuchtest die EW8051, die mit den SFRs 
besser umgehen kann...

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.