STM32 und Atollic macht mich Wahnsinnig(gelöst)

Der chaotische Hauptfaden

Moderatoren: Sven, Heaterman, TDI, Finger

STM32 und Atollic macht mich Wahnsinnig(gelöst)

Beitragvon Chefbastler » Fr 2. Feb 2018, 19:29

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
Chefbastler
 
Beiträge: 1437
Registriert: Mo 12. Aug 2013, 20:21
Wohnort: Südbayern

Re: STM32 und Atollic macht mich Wahnsinnig

Beitragvon Fritzler » Fr 2. Feb 2018, 20:28

"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?
Benutzeravatar
Fritzler
 
Beiträge: 5103
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Friedrichshagen/Am Wasserwerk

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

Beitragvon manuel » Sa 3. Feb 2018, 09:32

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.
manuel
 
Beiträge: 291
Registriert: Fr 7. Feb 2014, 00:14


Zurück zu Allgemeine Diskussion

Wer ist online?

Mitglieder in diesem Forum: bastelheini, duese, GregorB, Hausmeister, m3rt0n, reutron und 19 Gäste

span