STM32 und Atollic macht mich Wahnsinnig(gelöst)

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Benutzeravatar
Chefbastler
Beiträge: 2690
Registriert: Mo 12. Aug 2013, 20:21
Wohnort: Südbayern

STM32 und Atollic macht mich Wahnsinnig(gelöst)

Beitrag von Chefbastler »

Edit: habs gelöst :D

Code: Alles auswählen

File: cmsis/core_cm3.c

(line 736) __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" 
(addr), "r" (value) );

(line 753) __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" 
(addr), "r" (value) );
https://www.mikrocontroller.net/topic/322030



Hab mir ein paar STM32 Discovery Boards zum Spielen besorgt.
http://www.st.com/en/evaluation-tools/s ... overy.html

Programmiern will ich die Dinger in C und hab mir dazu die aktuelle TrueStudio for ST32 Version 9.0.0 von Atollic installiert.

Wollte mal das Demoprogramm(oben im Link) zu dem Board in Truestudio zum laufen bringen.
Bin dann nach der Anleitung gegangen und schön langsam am verzweifeln.

http://www.st.com/content/ccc/resource/ ... 283787.pdf

Bekomme beim Übersetzten Fehler. Hab schon einiges probiert was dann in zum Teil auf hunderte Fehlermeldungen ausartet.
Derzeit Sowas z.B.:


Code: Alles auswählen

Info: Internal Builder is used for build
arm-atollic-eabi-gcc -c -mthumb -mcpu=cortex-m3 -std=gnu11 -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD_VL -DUSE_STM32100B_EVAL -I../..\..\..\..\Libraries\CMSIS\CM3\CoreSupport -I../..\..\..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I../..\..\..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I../../../inc -I../../../../../Utilities -O0 -ffunction-sections -fdata-sections -g -fstack-usage -Wall -o CMSIS\core_cm3.o -Os ..\..\..\..\..\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c 

C:\Users\X201\AppData\Local\Temp\ccWuigi8.s:584: Error: registers may not be the same -- `strexb r0,r0,[r1]'
C:\Users\X201\AppData\Local\Temp\ccWuigi8.s:613: Error: registers may not be the same -- `strexh r0,r0,[r1]'
Was will mir das sagen?

Hatt wer von euch Atollic installiert und hatt lust mal zu veruschen das Deomprojekt durch den Compiler zu bekommen?

Glaube dass das hier irgendwo an den Build Properties liegt.
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 und Atollic macht mich Wahnsinnig

Beitrag von Fritzler »

"strex" = store exclusive, h für halfword und b für byte.
Also er möchte atomisch in den Speicher schreiben ohne gestört zu werden.
Er meckert rum, dass da 2 mal r0 steht was die ARM ABI explizit verbietet.
In das linke r0 kommt ein Wert rein ala (Fall1) "ich hab geschrieben" oder (Fall2) "jemand hat vor dir den Wert im Speicher geändert da kannste jetzt nicht mehr schreiben"
Das rechte r0 ist die Zahl, welche in den Speicher geschrieben werden soll (die Speicheradresse steht in r1).
Da er sich also im Fall 2 den Wert von r0 überschreiben würde ist dieser Befehl verboten.
Ich weis allerdings nicht wieso dein "arm-atollic-eabi-gcc" eine illegale Instruction erzeugt, die dir dann um die Ohren saust.

Was explodiert denn sonst noch so?
manuel
Beiträge: 768
Registriert: Fr 7. Feb 2014, 00:14

Re: STM32 und Atollic macht mich Wahnsinnig(gelöst)

Beitrag von manuel »

Der gcc inline assembler ist sehr geizig wenns darum geht register zu vergeben. Es gibt einen modifier "&" der dann bestimmt das ein register exklusiv benutzt wird und mit keinem anderen überlagert sein darf. Ab jedem inline assembler mit mehr als einer zeile eigentlich pflicht weil sonst der erste Befehl meistens die inputs vom zweiten befehl überschreibt.
Antworten