mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CARM gegen RealView


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Wer von euch benutzt den Keil-Compiler für ARM-Prozessoren.
Leider hat dort der RealView-Compiler Einzug gehalten.

Der CARM-Compiler ist jener Compiler, der von Keil entwickelt wurde. An
diesem Compiler sieht man, dass sich die Leute von Keil Mühe gegen
haben, es dem Benutzer einfach zu machen.
Ich möchte nur ein paar Punkte ansprechen, die auf einfachste und
unkomplizierte Weise zu bewerkstelligen sind z.B:
IRQs-Handhabung
SWI-Handhabung
Umschalten zwischen ARM- und Thumb-Mode auch für einzelne Funktionen
und das Beste
Man kann jede Variable händisch in jeden beliebigen Speicherbereich
packen.

Leider wird dieser Compiler laut Keil leider nicht mehr
weiterentwickelt.

Aus diesem Grund wäre es nicht schlecht, die alten Projekte auf den
RealView-Compiler umzustellen. Kann mir jemand einen triftigen Grund
nennen es nicht tun zu müssen? Ganz toll fand ich beim CARM-Compiler,
dass man Variablen oder Felder an ganz bestimmte Speicherpositionen
stellen konnte:
uint8_t f_ramfeld[f_byteanzahl] __at f_adresse;

In diesem Fall kommen die ganzen Vorteile der Neumannarchitektur zum
Vorschein.

So habe ich ein Programm entwickelt, wo z.B. einzelne große Felder auf
verschiedene Speicher verteilt waren.

Ich habe zwar gehört, dass dies beim Realview ansatzweise funktionieren
soll, aber nicht so gut wie beim CARM. Beim Realview kann, was ich so
gehört habe, keine einzelnen Variablen in einen bestimmten
Speicherbereich verschieben, sondern man kann dies nur Modulweise.

Was haltet ihr davon?
Verwendet ihr eher RealView oder CARM?
Was liegt euch mehr?

Lasst uns diskutieren.

Tschüss
Martin

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich habe mir vorgenommen die Projekte auf den RV-Compiler umzustellen.
Leider gibt es da noch eine kleine Schwierigkeit.

Beim LPC2138 hat man die Möglichkeit das Flash vor dem Auslesen zu
schützen. Dies gelingt dadurch, indem man an die Speicherstelle 0x1FC
den Wert 0x87654321 programmiert. Diese Speicherstelle befindet ist im
Flash.

Mit dem CARM funktioniert das folgendermaßen:
extern uint32_t const f_protect __at 0x1FC = 0x87654321;
Nach dem Flashen ist der Prozessor lesegeschützt.

Es gibt leider anscheinend keinen offiziellen Weg diese Speicherstelle
mit dem RV-Compiler beschreiben zu können.
In die Ram-Bänke habe ich folgendes eingetragen:
     Start, Size
IROM1 0x0   0x80000
IROM2 0x1FC 0x4

Folgende Fehlermeldung erscheint:
Range IROM2 overlaps range IROM1.

Hei, wie soll ich mit diesem Kinderspielzeug jemals vernünftig arbeiten
können? Aber schimpfen hilft nichts.
Hat jemand von euch eine Lösung parat? Das wäre echt großartig.

Danke nochmal Leute.

Tschüss
Martin

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Dokumentation schon mal durchgelesen (vor allem die
Linker-Dokumentation z.B. den Abschnitt zu "scatter-loading")?
Prinzip lt. Dokumentation: Konstante in eine Section ablegen und im
scatter-file Addresse der Section angeben. Ich kenne die Realview-Tools
selbst nicht wirklich gut, Vorgehensweise ist aber vergleichbar mit der
bei der GNU-Toolchain. Ansonsten: wenn man eine "Lösung" fuer ein
Problem von jemand erwartet, der sich mit einem bestimmten Produkt gut
auskennt, das Produkt vielleicht nach langer und muehvoller Evaluierung
ausgewaehlt hatund sich in vielen Stunden eingearbeitet hat, ist es
keine wirklich gute Idee das Produkt als "Kinderspielzeug" zu
bezeichnen.

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe RealView nie benutzt, aber wie wär's mit
IROM1 0x0 0x1FC
CRP 0x1FC 4
IROM2 0x200 0x7E000

Die Fehlermeldung scheint doch recht eindeutig zu sein.

Gruss,

Dominic

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.