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


von Daniel M. (mulder)


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

von Marc Prager (Gast)


Lesenswert?

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

Marc

von Daniel M. (mulder)


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

von Daniel W. (wolfhunters)


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.

von Daniel M. (mulder)


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 :)

von Daniel W. (wolfhunters)


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.

von Daniel M. (mulder)


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?

von Daniel W. (wolfhunters)


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.

von Daniel M. (mulder)


Lesenswert?

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

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.