mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 FWLib cortexm3_macro.s copmpiler problem


Autor: Daniel Müller (mulder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich experimentiere seit kurzer zeit mit einem STM32 aka. Cortex-M3. Habe 
auch schon erfolgreich code compiliert und geflasht...

Seit zwei tagen versuche ich allerdings das TIM/PWM input beispiel zu 
compilieren, das will aber nicht funktionieren... ich kann die assembler 
datei cortexm3_macro.s nicht compilieren.

erstmal musste ich alle ';' durch '@' ersetzen, da meine compiler 
(arm-elf-as und arm-none-eabi-as) das ; nicht als kommentar zeichen 
ansehen. das hat schonmal die haelfte der errors behoben, kann aber 
immer noch nicht compilieren :(

hier ist die ausgabe wenn ich nur diese datei compiliere:

C:\embedded\test>make cortex_macro
.assembling_cortex_macro
arm-elf-as -ahls -mapcs-32 -o cortex_macro.o cortexm3_macro.s > 
cortexm3_macro.l
st
cortexm3_macro.s: Assembler messages:
cortexm3_macro.s:38: Error: bad instruction `__wfi'
cortexm3_macro.s:49: Error: bad instruction `__wfe'
cortexm3_macro.s:60: Error: bad instruction `__sev'
cortexm3_macro.s:71: Error: bad instruction `__isb'
cortexm3_macro.s:82: Error: bad instruction `__dsb'
cortexm3_macro.s:93: Error: bad instruction `__dmb'
cortexm3_macro.s:104: Error: bad instruction `__svc'
cortexm3_macro.s:115: Error: bad instruction `__mrs_control'
cortexm3_macro.s:117: Error: syntax error -- `mrs r0,CONTROL'
cortexm3_macro.s:126: Error: bad instruction `__msr_control'
cortexm3_macro.s:128: Error: syntax error -- `msr CONTROL,r0'
cortexm3_macro.s:138: Error: bad instruction `__mrs_psp'
cortexm3_macro.s:140: Error: syntax error -- `mrs r0,PSP'
cortexm3_macro.s:149: Error: bad instruction `__msr_psp '
cortexm3_macro.s:151: Error: syntax error -- `msr PSP,r0'
cortexm3_macro.s:160: Error: bad instruction `__mrs_msp'
cortexm3_macro.s:162: Error: syntax error -- `mrs r0,MSP'
cortexm3_macro.s:171: Error: bad instruction `__msr_msp '
cortexm3_macro.s:173: Error: syntax error -- `msr MSP,r0'
cortexm3_macro.s:182: Error: bad instruction `__resetprimask'
cortexm3_macro.s:193: Error: bad instruction `__setprimask'
cortexm3_macro.s:204: Error: bad instruction `__read_primask '
cortexm3_macro.s:206: Error: syntax error -- `mrs r0,PRIMASK'
cortexm3_macro.s:215: Error: bad instruction `__resetfaultmask'
cortexm3_macro.s:226: Error: bad instruction `__setfaultmask'
cortexm3_macro.s:237: Error: bad instruction `__read_faultmask '
cortexm3_macro.s:239: Error: syntax error -- `mrs r0,FAULTMASK'
cortexm3_macro.s:248: Error: bad instruction `__basepriconfig'
cortexm3_macro.s:250: Error: syntax error -- `msr BASEPRI,r0'
cortexm3_macro.s:259: Error: bad instruction `__getbasepri'
cortexm3_macro.s:261: Error: syntax error -- `mrs r0,BASEPRI_MAX'
cortexm3_macro.s:270: Error: bad instruction `__rev_halfword '
cortexm3_macro.s:281: Error: bad instruction `__rev_word '
cortexm3_macro.s:286: Error: bad instruction `end'
make: *** [cortex_macro] Error 1


was mache ich falsch?

muss ich evtl einen anderen compiler verwenden?


gruesse, Daniel

Autor: Marc Prager (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht denn dein Assemblerfile aus.
Da geht massiv was daneben, da stimmt die Syntax gar nicht.

Marc

Autor: Daniel Müller (mulder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

Ja, das denke ich auch, das assembler file sollte eigentlich syntaktisch 
korrekt sein, kann man ja erwarten wenn es vom hersteller bereit 
gestellt wird und teil der firmware lib ist. leider (oder wohl besser 
zum glueck ;) ) habe ich vorher noch nie mit assembler zu tun gehabt.

packe es mal in den anhang, vielleicht findet ja jemand was... mir 
wurede es auch schon genuegen wenn es jemand compilieren kann, besser 
waer aber wenn ich verstehen wuerde woran es scheitert.

bin zwar software entwickler, aber nur java, php und co, auf dieser 
ebene bin ich noch blutiger anfaenger.

gibt es vielleicht unterschiedliche compiler die verschiedene syntax 
erwarten, da ja in der original datei ; fuer single line kommentare 
verwendet werden, ich aber schon herausgefunden habe, dass 'mein' 
compiler @ zeichen fuer single line kommentare erwartet...


so, hatte gerade nochmal einen blick in die firmware lib als ich die 
datei anhaengen wollte, da ist mir aufgefallen das es da verschiedene 
versionen von gibt, jetzt weiss ich noch weniger als vorher grml

ich verwende das CodeSorcery Lite ++ "zeug".

wenn man fuer sein project die stm32f10x_nvic.c benoetigt (PWM beispiel 
aus der firmware zum beispiel), dann muss man auch die cortexm3_macro 
haben.

vielleicht kann mal jemand der schon damit zu tun hatte nen tipp geben.

wenn ihr noch infos braucht bitte einfach schreien :)

thx,
Dan

Autor: Daniel Wolf (wolfhunters)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich brauche die Macro gar nicht zum kompilieren. Wenn du einen gute 
Toolchain inkl. Linkerscript und Vectortable suchst, dann schau mal bei 
Anglia auf die Seite (Link unten). Spencer Oliver hat da ein paar 
Beispielprojekte zusammengepackt. Das hat mir auch sehr geholfen. In der 
Sarm Toolchain ist auch ein Complier (ich meine auch einer von 
Codesourcery) dabei. Da findest du alles was du für einen Start 
brauchst. Ich habe auch Monate gesucht und probiert, bis ich endlich 
fehlerfrei compilieren uns ausführen konnte.

http://www.st-angliamicro.com/software.asp

du mußt dir folgendes laden:

Anglia IDEaliST IDE  Version: v1.61
Anglia STRx Toolchain  Version: v1.62

Die IDE mußt du nur installieren, brauchst sie ja nicht benutzen. Da 
drin sind die Beispiele (Unterordner). probier das mal aus.

Autor: Daniel Müller (mulder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke! wird grad mal runtergeldane und getestet. Ich meine mich zu 
erinnern das ich die IDE schonmal getestet habe. Da ich aber beruflich 
Java in Eclipse entwickel wuerde ich gerne eine Eclipse basierte IDE 
verwenden.... hat bei mir aber auch nicht geklappt. im moment arbeite 
ich mit texteditor und scripten...

ich schau mal rein.

in der zwischenzeit habe ich eine cortexm3_macro.h datei von jemandem im 
st.com forum bekommen, die verwendet inline assembler, und ich brauche 
die cortexm3_macro.s datei nicht mehr ;) so hat es schonmal gefunzt... 
allerdings wuerde ich ja schon gerne wissen was ich da falsch mache, 
sonst lernt man ja nix :)

Autor: Daniel Wolf (wolfhunters)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich programmiere auch in Eclipse mit dem besagten gcc-compiler, 
makefile und Linkerscript. Wie programmierst du deinen Controller? 
Seriell, jtag oder..?
Die IDE finde ich auch nicht so toll, deshalb bin ich auch bei Eclipse 
geblieben. Aber die Bsp. sind ganz gut für den Einstieg.

Autor: Daniel Müller (mulder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich programmiere mit dem jtag-tiny (glaub von olimex) und verwende 
dafuer den Open OnChip Debugger aka. openOCD, das klappt ganz gut. das 
ganze soll zwar auch per eclipse debugbar sein, aber ich bekomme da 
immer ne fehlermeldung wenn ich den debugger via eclipse starten will, 
also mach ich im prinzip alles von DOS aus... naja, ist vielleicht 
garnicht so schlecht wenn man erstmal alles selber machen muss, dann 
lernt man das alles von grund auf mal kennen...

welche vorteile bietet denn eclipse gegenueber nem texteditor mit syntax 
highlighting? ich habe keine code vervollstaendigung und keinen 
on-the-fly code validator?

Autor: Daniel Wolf (wolfhunters)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du auch in Eclipse debuggen willst, dann geht das mit dem Zylin 
Plugin für Eclipse. Das findest du bei 
http://www.zylin.com/embeddedcdt.html
Ich nutze auch ein JTag-Adapter von olimex, den ARM-USB-OCD mit OpenOCD, 
funzt super.

Autor: Daniel Müller (mulder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke fuer die infos. wenn ich mich nochmal dran setze werde ich mir die 
komplette toolchain neu einrichten :)

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.