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?
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.