Forum: Mikrocontroller und Digitale Elektronik Keil µVision Assembler sehr streng?


von Controllertyp (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem mit Keil µVision bei einem Example Projekt.
(Das Example habe ich heruntergeladen).
Das Problem ist, dass der Assembler viel zu streng ist und dadurch 
massenhaft Errors ausgibt.
Ich kann mir das nicht erklären und habe das Prjekt mal hier als Anhang 
hochgeladen. Die Datei "Startup.s" beinhaltet diese angeblichen Fehler.
Einen Fehler habe ich schon gefunden: nämlich, dass die Kommentare nicht 
mit ";", sondern mit "//" und "/*" eingeleitet wurden. Aber selbst, wenn 
man das ändert, kommen noch Fehler!
Kann man da vielleicht irgendwas einstellen?

von W.S. (Gast)


Lesenswert?

Dein Demo-Projekt ist falsch. Das Zeugs stammt aus der Zeit, wo bei Keil 
noch ein GCC verwendet wurde, also bevor Keil von Arm gekauft wurde. 
Jetzt ist beim Keil eine originale Toolchain von Arm dabei und dort 
funktioniert der Assembler etwa so, wie man das schon seit langem von 
allen anderen Assemblern gewohnt ist. Naja, bis auf die fehlenden 
Doppelpunkte bei Bezeichnern.

Mein Rat: lade dir mal die Lernbetty aus dem Codesammlungs-Bereich 
herunter. Die Betty hat nen passenden uC aus der LPC2000er Reihe, 
weswegen der dortige Startupcode auch auf dein Projekt paßt. Du kannst 
ja die Teile, die du nicht brauchst, einfach rausschmeißen - 
insbesondere den SWI-Interrupt. Die übrigen speziellen Interrupts 
(undef, prefetch usw) laß mal lieber drin und verwende sie so wie in der 
Lernbetty. Da kriegt man nämlich gut mit, wenn man beim Experimetieren 
Bockmist gebaut hat.

Ach ja, den dortigen Startupcode gibt es in 2 Geschmacksrichtungen: für 
den ARM-Assembler und für den Gnu-Assembler.

W.S.

von 34fgqa4v (Gast)


Lesenswert?

Bei eBay gibts viele schöne C-Einsteigerbücher.

von Controllertyp (Gast)


Lesenswert?

Danke dir, W.S.
hat mir wirklich sehr geholfen!
Ich habe jetzt beschlossen, selber einen StartupCode zu schreiben. Doch 
leider komme ich nicht mit AREA und DS klar. DS scheint er irgendwie 
nicht zu kennen:
1
UND_Stack_Size  EQU     0x00000004
2
SVC_Stack_Size  EQU     0x00000004
3
ABT_Stack_Size  EQU     0x00000004
4
FIQ_Stack_Size  EQU     0x00000004
5
IRQ_Stack_Size  EQU     0x00000080
6
USR_Stack_Size  EQU     0x00000400
7
8
         AREA    STACK, DATA, READWRITE, ALIGN=2
9
    DS (USR_Stack_Size+3)&~3  ; Stack for User/System Mode 
10
        DS   (IRQ_Stack_Size+3)&~3  ; Stack for Interrupt Mode
11
        DS   (FIQ_Stack_Size+3)&~3  ; Stack for Fast Interrupt Mode 
12
        DS   (ABT_Stack_Size+3)&~3  ; Stack for Abort Mode
13
        DS   (SVC_Stack_Size+3)&~3  ; Stack for Supervisor Mode
14
        DS   (UND_Stack_Size+3)&~3  ; Stack for Undefined Mode
15
Top_Stack:


=>
assembling Startup.s...
Startup.s(51): error: A1163E: Unknown opcode DS , expecting opcode or 
Macro
Startup.s(52): error: A1163E: Unknown opcode DS , expecting opcode or 
Macro
Startup.s(53): error: A1163E: Unknown opcode DS , expecting opcode or 
Macro
Startup.s(54): error: A1163E: Unknown opcode DS , expecting opcode or 
Macro
Startup.s(55): error: A1163E: Unknown opcode DS , expecting opcode or 
Macro
Startup.s(56): error: A1163E: Unknown opcode DS , expecting opcode or 
Macro
Startup.s(57): error: A1167E: Invalid line start


Kannst du damit etwas anfangen?


@34fgqa4v:
Deinen unnützen Beitrag könntest du dort glatt versteigern.

von 34fgqa4v (Gast)


Lesenswert?

War nur mein erster Gedanke. Wer sich noch mit Assembler bezüglich
µCs herumquält...

Bei zeitkritischen Anwendungen, wie DSPs o.ä. hätte ich Verständnis.

Wieso nutzt Du Assembler?

von asm (Gast)


Lesenswert?

Controllertyp schrieb:
> Kannst du damit etwas anfangen?

Der Übersetzer kennt das Schlüsselwort DS = Datensegment nicht.

Nimm ein Beispiel, das zur Compilerversion paßt. Du findest die auch im 
Installationsverzeichnis von Keil.



W.S. schrieb:
> Das Zeugs stammt aus der Zeit, wo bei Keil
> noch ein GCC verwendet wurde, also bevor Keil von Arm gekauft wurde.
> Jetzt ist beim Keil eine originale Toolchain von Arm dabei und dort
> funktioniert der Assembler etwa so, wie man das schon seit langem von
> allen anderen Assemblern gewohnt ist.

Wo hast du das denn her?

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.