Forum: Compiler & IDEs IAR Setup für STM32F108C8 und ST-Link V2


von Max M. (maxmicr)


Lesenswert?

Hallo,

ich komme mit der Einrichtung der IAR-IDE für den STM32 (in meinem Fall 
der STM32F108C8) nicht weiter. Ich versuche zu Beginn einfach einen GPIO 
an zu schalten. Leider mag dieser Code nicht kompilieren:
1
#include "stm32f10x.h"
2
int main()
3
{
4
  GPIOB->ODR |= (1<<3);
5
  GPIOB->CRH |= (1<<3);
6
  return 0;
7
}

Allerdings findet der Compiler (oder Linker) die Header-Datei nicht.

Könnte jemand bei der Einrichtung von IAR helfen? Ich möchte die 
Standard-Peripheral-Library nicht benutzen!

von ./. (Gast)


Lesenswert?

Lies erstmal zum Gebrauch von:

#include "bla.h"
und
#include <bla.h>

Die *stm32f10x.h* gehoert zum CMSIS-Zweig der Stdlib.

Also tu die Stdlib zu Deinem Projekt dazu und
setze entsprechende Include-Suchverzeichnisse.

Vielleicht auch einmal die ST-Beispiele installieren.
Das tut IAR nicht mehr automatisch fuer alle CPU-Typen.

von Max M. (maxmicr)


Lesenswert?

./. schrieb:
> Also tu die Stdlib zu Deinem Projekt dazu und
> setze entsprechende Include-Suchverzeichnisse.

Das hier hab ich unter 'Preprocessor' hinzugefügt:

$PROJ_DIR$\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries

allerdings wird die Datei nun immer noch nicht gefunden. Vielleicht wird 
nur der angegebene Ordner und nicht rekursiv durchsucht?

von ./. (Gast)


Lesenswert?

> nicht rekursiv durchsucht

Brilliant beobachtet.

Daher auch der Plural:
> Include-Suchverzeichnisse

von Max M. (maxmicr)


Lesenswert?

Jetzt bekomme ich ganz komische Fehler:
1
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __get_PSP(void)" (declared at line 58 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\intrinsics.h") D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1084 
2
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp void __set_PSP(unsigned long)" (declared at line 59 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\intrinsics.h") D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1094 
3
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __get_MSP(void)" (declared at line 56 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\intrinsics.h") D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1104 
4
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp void __set_MSP(unsigned long)" (declared at line 57 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\intrinsics.h") D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1114 
5
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __REV16(unsigned long)" (declared at line 183 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\intrinsics.h") D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1124 
6
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __RBIT(unsigned long)" (declared at line 184 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\intrinsics.h") D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1134 
7
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned char __LDREXB(unsigned char const volatile *)" (declared at line 186 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\intrinsics.h") D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1144 
8
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned short __LDREXH(unsigned short const volatile *)" (declared at line 187 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\intrinsics.h") D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1154 
9
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __STREXB(unsigned char, unsigned char volatile *)" (declared at line 191 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\ D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1175 
10
intrinsics.h") 
11
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __STREXH(unsigned short, unsigned short volatile *)" (declared at line 192 of "D:\Programme\IARWorkbench_STM32\arm\inc\c\ D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1186 
12
intrinsics.h") 
13
Error while running C/C++ Compiler

Ich bin mir auch nicht ganz sicher, welche Zeile man in der stm32f10x.h 
auskommentieren muss. Laut Homepage gehört der STM32F103C8 zur 
'medium-density performance line family', also habe ich diese Zeile 
auskommentiert:
1
#define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */

: Bearbeitet durch User
von Guest (Gast)


Lesenswert?

Was für ein Aufwand um letztlich einen Wert an eine Stelle in den 
Speicher zu schreiben... ;-)

Wie wäre es denn einfach mit:

(*(volatile unsigned int*)(0x123)) |= (1<<3);

0x123 ist dann die Addresse deines SFRs.

Oder auch
#define SFR (*(volatile unsigned int*)(0x123))

SFR |= (1<<3);

von ./. (Gast)


Lesenswert?

> Wie wäre es denn einfach mit:

Ja schon.
Wenn er es schafft vorher noch Core und Peripherie mit
ein wenig Takt zu versorgen.

von Max M. (maxmicr)


Lesenswert?

Guest schrieb:
> Was für ein Aufwand um letztlich einen Wert an eine Stelle in den
> Speicher zu schreiben... ;-)

Ja, finde ich auch. Vor allem das einrichten der IDE scheint sehr 
aufwändig.

Guest schrieb:
> 0x123 ist dann die Addresse deines SFRs.

Danke für den Tipp, ich mag aber nicht für jedes Register die Adresse 
raussuchen, insbesondere wenn ich mich (in ferner Zukunft) mal an I2C, 
UART oder ähnliches wage. Der Code wird dadurch nur noch unleserlicher.

Im Internet finde ich nur Tutorials zu den Discovery-Boards die 
anscheinend schon extra Libraries mitliefern.

: Bearbeitet durch User
von ./. (Gast)


Lesenswert?

> Jetzt bekomme ich ganz komische Fehler:

Vermutlich musst Du noch das bordeigene CMSIS von IAR ausschalten.
Das inkludierst Du ja jetzt selbst.

Ein wenig Mitdenken wuerde nicht schaden...

von Max M. (maxmicr)


Lesenswert?

./. schrieb:
> Vermutlich musst Du noch das bordeigene CMSIS von IAR ausschalten.

Okay, hab ich gemacht. Da nun wiederum einige Dateien gefehlt haben, hab 
ich diesen Ordnung noch hinzugefügt:

\IARWorkbench_STM32\arm\inc\c

Nun kommt wieder die Meldung "declaration is incompatible with 
core_cm3.h..." für die Datei 'intrinsics.h'.

Sobald ich sie aber aus dem c-Ordner lösche, kommt das:
1
Fatal Error[Pe1696]: cannot open source file "intrinsics.h" D:\Dokumente\IARSTM32\IncludeFiles\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 93

Also einerseits gibt es einen Konflikt zwischen 2 Dateien mit ähnlichen 
Deklarationen, andererseits braucht der Compiler die Datei aber 
anscheinend (wahrscheinlich weil sie durch eine andere Header-Datei 
hinzugefügt wird)?

: Bearbeitet durch User
von Guest (Gast)


Lesenswert?

Max M. schrieb:
> Danke für den Tipp, ich mag aber nicht für jedes Register die Adresse
> raussuchen, insbesondere wenn ich mich (in ferner Zukunft) mal an I2C,
> UART oder ähnliches wage. Der Code wird dadurch nur noch unleserlicher.

Wieso nicht? Du brauchst ja nicht tausend SFRs.
Sagen wir mal du musst 20 SFR Adressen raussuchen und die SFRs in deinem 
Code definieren. Das sollten genug SFRs für Uart und I2C sein.
Damit bist du schneller fertig als dein jetztiges Gebastel und hast 
verstanden, was du da eigentlich machst. Ich wüsste auch nicht wieso 
dadurch der Code unleserlicher werden sollte. Ich mache das immer so und 
ich verdiene meine Geld damit ;-).

von Max M. (maxmicr)


Lesenswert?

Es kann doch nicht sein, dass man IAR nicht so einrichten kann, dass man 
die Register nicht selber definieren muss :(

./. schrieb:
> Ein wenig Mitdenken wuerde nicht schaden...

Ich hab noch nie mit IAR gearbeitet, sorry das ich etwas langsam bin.

von Guest (Gast)


Lesenswert?

Max M. schrieb:
> Es kann doch nicht sein, dass man IAR nicht so einrichten kann, dass man
> die Register nicht selber definieren muss :(

Was IAR bzw. der Compiler mit deinen SFRs zu tun? Der weiß nichts von 
SFRs ;-).

von Max M. (maxmicr)


Lesenswert?

Guest schrieb:
> Was IAR bzw. der Compiler mit deinen SFRs zu tun? Der weiß nichts von
> SFRs ;-).

Direkt hat IAR damit nichts zu tun. Aber indirekt schon, da ich keine 
Lust habe, Registernamen selber zu definieren. Daher muss ich IAR bzw. 
dem Compiler die Registernamen bzw. Adressen irgendwie mitteilen. Das 
klappt bisher bei mir allerdings nicht so wirklich.

von AntiHeiner (Gast)


Lesenswert?

Max M. schrieb:

> Ja, finde ich auch. Vor allem das einrichten der IDE scheint sehr
> aufwändig.
Nur wenn man zu blöd dazu ist.

von AntiHeiner (Gast)


Lesenswert?

Und einen STM32F108 gibts auch nicht.
Also auch noch zu blöd zum Lesen.
Such dir ein anderes Hobby - Origami oder so.

von Guest (Gast)


Lesenswert?

Max M. schrieb:
> Direkt hat IAR damit nichts zu tun. Aber indirekt schon, da ich keine
> Lust habe, Registernamen selber zu definieren. Daher muss ich IAR bzw.
> dem Compiler die Registernamen bzw. Adressen irgendwie mitteilen. Das
> klappt bisher bei mir allerdings nicht so wirklich.

Nö, auch indirekt nicht.
Die Include Dateien aus der ST Standard Peripheral Library machen auch 
nichts anderes als das was ich dir vorgeschlagen habe. Und das wäre noch 
der gute Fall. Es kann auch passieren das für ein simples Port Pin 
setzen tausend Unterfunktionen aufgerufen mit 2000 undurchsichtigen 
Makros.

Wenn du keine Lust hast die Registernamen selber zu definieren kann ich 
dir leider auch nicht helfen.

AntiHeiner schrieb:
>> Ja, finde ich auch. Vor allem das einrichten der IDE scheint sehr
>> aufwändig.
> Nur wenn man zu blöd dazu ist.

Nana, lasst uns nett bleiben. Max ist nicht blöd sondern einfach nur 
unwissend.

von grundschüler (Gast)


Lesenswert?

Guest schrieb:
> Wenn du keine Lust hast die Registernamen selber zu definieren kann ich
> dir leider auch nicht helfen.

die Registernamen sind doch von STM definiert.z. B. in stm32f10x.h:

#define PERIPH_BASE           ((uint32_t)0x40000000) /*!< Peripheral 
base */
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
#define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)

Du musst die Datei nur einbinden, dann ist der Zugriff auf Register kein 
Problem mehr.

von ./. (Gast)


Lesenswert?

IAR bekommt die Includes im uebrigen von ST zugeliefert.
Die aendern daran exakt gar nichts.
Bugreports bzgl. der Header landen demzufolge auch bei ST.

Der Umgang mit IAR ist suppenkasperleicht.

Meine Stdlib inkludiert keine intrinsics.

von chris (Gast)


Lesenswert?

Max M. schrieb:
> #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density
> Value Line devices */

Zumindest in der hier geposteten Zeile hast du das zweite 
Kommentarzeichen nicht entfernt.
Gibt auch lustige Fehler sowas.

von Max M. (maxmicr)


Lesenswert?

grundschüler schrieb:
> Du musst die Datei nur einbinden, dann ist der Zugriff auf Register kein
> Problem mehr.

Hab ich gemacht, jetzt findet er eine "core_cm3.h" nicht, wenn ich die 
hinzufüge findet er die nächste Headerdatei nicht usw...

./. schrieb:
> Der Umgang mit IAR ist suppenkasperleicht.

Danke

chris schrieb:
> Gibt auch lustige Fehler sowas.

Danke für den Hinweis, ändert aber leider nichts an der Fehlermeldung.

von grundschüler (Gast)


Lesenswert?

Max M. schrieb:
> Hab ich gemacht, jetzt findet er eine "core_cm3.h" nicht, wenn ich die
> hinzufüge findet er die nächste Headerdatei nicht usw...


Ich habe gerade die Tage CooCox Coide V1.7.8 installiert. Da finden sich 
alle von dir gesuchten Dateien durch einfaches Anklicken auf Anhieb. Ist 
wirklich einfach und anfängergeeignet.

Ansonsten benutz mal Ctrl-F/Suchfunktion um den Ordner zu finden, in dem 
die fehlenden Dateien stehen. Dann den Ordner einbinden.

von Guest (Gast)


Lesenswert?

Wenn du die IDE wechseln möchtest, dann nimm direkt SEGGER Embedded 
Studio, https://www.segger.com/embedded-studio.html.

Da bekommt du Packages für viele Device, das ist dann noch einfacher.

CMSIS besteht aus Core- und Devicespezifichen Dateien. Zu den 
Corespezifischen Dateien gehört z.B. die core_cm3.h. Diese werden aber 
auch vom IAR ausgeliefert und werden automatisch benutzt wenn die CMSIS 
Checkbox in den Projektoptionen aktiviert ist.
Ansonsten kannst du auch also Vorlage einfach ein embOS Startprojekt 
nehmen:
https://www.segger.com/embos-cortexm-iar.html

Das embOS kannst du ja dann aus dem Projekt raus schmeißen, wenn du kein 
RTOS verwenden möchtest.

von Max M. (maxmicr)


Lesenswert?

Guest schrieb:
> Diese werden aber
> auch vom IAR ausgeliefert und werden automatisch benutzt wenn die CMSIS
> Checkbox in den Projektoptionen aktiviert ist.

Danke! Das war der entscheidende Hinweis. Hab das aktiviert, dann wurde 
nur noch die "system_stm32f10x.h" nicht gefunden -> Ordner eingebunden 
-> kompiliert.

Jetzt bekomme ich allerdings eine Fehlermeldung beim Downloaden:
1
Fatal Error[Li004]: file "D:\Programme\IARWorkbench_STM32\arm\src\flashloader\ST\FlashSTM32F10x\inc\stm32f10x.h" is not an object or archive file 
2
Error while running Linker

von Guest (Gast)


Lesenswert?

Max M. schrieb:
> Error while running Linker

Max M. schrieb:
> Jetzt bekomme ich allerdings eine Fehlermeldung beim Downloaden:

Sicher? Klingt eher danach als ob du nicht linken könntest.
Hast du die IAR Flashloader Sourcen in deinem Projekt? Würde keinen Sinn 
machen.

Was benutzt du denn als Debug Probe? Einen J-Link? Dann brauchst du 
keinen IAR Flashloader und musst diesen in den Debug Settings 
deaktivieren, "use flashloader" oder so ähnlich.

von Max M. (maxmicr)


Lesenswert?

Guest schrieb:
> Sicher? Klingt eher danach als ob du nicht linken könntest.

Anscheinend ist das Teil des Ablaufs wenn ich auf "Project -> Download 
and Debug" gehe.

Guest schrieb:
> Was benutzt du denn als Debug Probe? Einen J-Link?

Einen China ST-Link V2.

Guest schrieb:
> Hast du die IAR Flashloader Sourcen in deinem Projekt?

Nope, in meinem Project ist nur die main.c - Datei, eine 
"stm32f103x8.icf" und eine "stm3210x.h".

von Max M. (maxmicr)


Lesenswert?

Okay, der Fehler war, dass die stm32f10x.h in den Linker-Optionen als 
Library eingetragen war (was sie natürlich nicht ist). Hab sie entfernt, 
jetzt klappt der "Make"-Prozess auch.

Beim Downloaden bekomme ich jetzt die Fehler:
1
Thu Jul 14, 2016 15:19:46: Warning: Write failed (CPU data abort) at Memory address 0x1FFFF800 
2
Thu Jul 14, 2016 15:19:46: D:\Programme\IARWorkbench_STM32\arm\config\flashloader\ST\FlashSTM32F10xxx.mac(72,31): Error: Operation error.  
3
Thu Jul 14, 2016 15:19:46: Error while calling macro execUserFlashInit 
4
Thu Jul 14, 2016 15:19:46: Unloaded macro file: D:\Programme\IARWorkbench_STM32\arm\config\flashloader\ST\FlashSTM32F10xxx.mac 
5
Thu Jul 14, 2016 15:19:46: Failed to load flash loader: D:\Programme\IARWorkbench_STM32\arm\config\flashloader\ST\FlashSTM32F10xx8.flash 
6
Thu Jul 14, 2016 15:21:11: IAR Embedded Workbench 7.70.1 (armproc.dll)


Die LED auf dem China-Board hört auch auf zu blinken, irgendwas passiert 
ist also scheinbar.

Wenn ich das Board wieder neu anstöpsel läuft wieder das Blink-Programm.

Ich hab diesen ST-Link:

https://www.squirrel-labs.net/media/catalog/product/cache/1/image/650x/040ec09b1e35df139433887a97daa66f/s/t/st-linkv2_pinout.jpg

Pin2 ist verbunden mit 3.3V
Pin4 ist verbunden mit SCK
Pin6 ist verbunden mit DIO
Pin7 ist verbunden mit GND

Verbunden hab ichs doch richtig oder?

: Bearbeitet durch User
von Max M. (maxmicr)


Lesenswert?

Ich bin leider immer noch nicht weiter. Da in den Fehlermeldungen von 
IAR auch stand, dass die Firmware des ST-Link veraltet ist, hab ich sie 
geupdated (hat mich gewundert, dass das mit dem China-Teil funktioniert 
hat). Trotzdem kommt immer noch der gleiche Fehler der veralteten 
Firmware und Upload klappt immer noch nicht:
1
Mon Jul 18, 2016 13:40:13: ST-Link firmware too old 
2
Mon Jul 18, 2016 13:40:15: Connected to ST-Link/V2 [SWD mode 1800 kHz] Firmware V2.J24.S4 (Probe no: 28611187) 
3
Mon Jul 18, 2016 13:40:15: Software reset was performed 
4
Mon Jul 18, 2016 13:40:15: Initial reset was performed 
5
Mon Jul 18, 2016 13:40:18: Warning: Write failed (CPU data abort) at Memory address 0x1FFFF800 
6
Mon Jul 18, 2016 13:40:18: Reset FLASH readout protection 
7
Mon Jul 18, 2016 13:40:18: Hardware reset with strategy 2 was performed 
8
Mon Jul 18, 2016 13:40:18: 736 bytes downloaded (11.59 Kbytes/sec) 
9
Mon Jul 18, 2016 13:40:18: Loaded debugee: D:\Programme\IARWorkbench_STM32\arm\config\flashloader\ST\FlashSTM32F10xxxRAM10K.out 
10
Mon Jul 18, 2016 13:40:18: Target reset 
11
Mon Jul 18, 2016 13:40:18: Unloaded macro file: D:\Programme\IARWorkbench_STM32\arm\config\flashloader\ST\FlashSTM32F10xxx.mac 
12
Mon Jul 18, 2016 13:40:18: The flash loader program reported an error.

von grundschüler (Gast)


Lesenswert?

mit 
STSW-LINK009/http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link009.html 
hat die Installation eines st-link/v2  problemlos funktioniert.

von ./. (Gast)


Lesenswert?

> Mon Jul 18, 2016 13:40:13: ST-Link firmware too old

Das sagt das Teil bestuemmpt nicht zum Spass.

von Max M. (maxmicr)


Lesenswert?

grundschüler schrieb:
> mit
> 
STSW-LINK009/http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link009.html
> hat die Installation eines st-link/v2  problemlos funktioniert.

Die Softwareinstallation hat bei mir auch funktioniert, der Error in IAR 
tritt leider trotzdem noch auf :(

./. schrieb:
> Das sagt das Teil bestuemmpt nicht zum Spass.

Wie ich in meinem Beitrag schrieb, hab ich die Firmware bereits 
geupdated. Die Versionsnummer, die gerade auf dem ST-Link drauf ist, 
lautet:

V2.J24.S4 STM32+STM8 Debugger

: Bearbeitet durch User
von ./. (Gast)


Lesenswert?

> Wie ich in meinem Beitrag schrieb, hab ich die Firmware bereits
> geupdated.

Warum dann nicht mit einer aktuelleren Version?

Z.B. die mit beim IAR dabei ist wuerde wohl schon reichen.

Zu alt bleibt zu alt.

von Max M. (maxmicr)


Lesenswert?

Ah, gut ich hab nun die IAR-Treiber für den ST-Link installiert, jetzt 
kommen immerhin andere Fehler:
1
Mon Jul 18, 2016 23:52:49: IAR Embedded Workbench 7.70.1 (armproc.dll) 
2
Mon Jul 18, 2016 23:52:49: Loaded macro file: D:\Programme\IARWorkbench_STM32\arm\config\debugger\ST\STM32F1xx_XL.dmac 
3
Mon Jul 18, 2016 23:52:49: Loaded macro file: D:\Programme\IARWorkbench_STM32\arm\config\flashloader\ST\FlashSTM32F10xxx.mac 
4
Mon Jul 18, 2016 23:52:52: Connected to ST-Link/V2 [SWD mode 1800 kHz] Firmware V2.J27.S6 (Probe no: 28611187) 
5
Mon Jul 18, 2016 23:52:52: Software reset was performed 
6
Mon Jul 18, 2016 23:52:52: Initial reset was performed 
7
Mon Jul 18, 2016 23:52:54: Warning: Write failed (CPU data abort) at Memory address 0x1FFFF800 
8
Mon Jul 18, 2016 23:52:54: Reset FLASH readout protection 
9
Mon Jul 18, 2016 23:52:54: Hardware reset with strategy 2 was performed 
10
Mon Jul 18, 2016 23:52:54: 736 bytes downloaded (15.63 Kbytes/sec) 
11
Mon Jul 18, 2016 23:52:54: Loaded debugee: D:\Programme\IARWorkbench_STM32\arm\config\flashloader\ST\FlashSTM32F10xxxRAM10K.out 
12
Mon Jul 18, 2016 23:52:54: Target reset 
13
Mon Jul 18, 2016 23:52:54: Unloaded macro file: D:\Programme\IARWorkbench_STM32\arm\config\flashloader\ST\FlashSTM32F10xxx.mac 
14
Mon Jul 18, 2016 23:52:54: The flash loader program reported an error.

von Max M. (maxmicr)


Lesenswert?

Auf dem Board befinden sich 2 Jumper (wie hier zu sehen:
http://artofcircuits.com/wp-content/uploads/2015/07/STM32F103C8T6-Development-Board-1.jpg), 
muss man damit irgendwas machen?

von ./. (Gast)


Lesenswert?

> Mon Jul 18, 2016 23:52:54: Warning: Write failed (CPU data abort) at Memory 
address 0x1FFFF800

Hausaufgabe bis morgen: Memory Map auswendig lernen

von Max M. (maxmicr)


Angehängte Dateien:

Lesenswert?

./. schrieb:
> Hausaufgabe bis morgen: Memory Map auswendig lernen

hm, das sind die Option Bytes, was genau sagt mir das?

: Bearbeitet durch User
von Max M. (maxmicr)


Lesenswert?

Keiner eine Idee? Ich verzweifle hier langsam :(

von Max M. (maxmicr)


Lesenswert?

Ich bin mittlerweile auf CooCox umgestiegen, mein Code kompiliert so 
weit, beim Downloaden bekomme ich aber wiederum eine Fehlermeldung:
1
D:\Programme\CoIDE_V2Beta>"D:/Programme/CoIDE_V2Beta/bin\coflash.exe" program STM32F103C8T6 "D:/Programme/CoIDE_V2Beta/ProjectFolder/STM32F103C8T6TestProject/STM32F103C8T6TestProject/Debug/bin/STM32F103C8T6TestProject.elf" --adapter-name=ST-Link --port=SWD --adapter-clk=1000000 --erase=affected --reset=SYSRESETREQ --driver="C:\Users\Standardbenutzer\AppData\Roaming\CooCox\CoIDE\config\flash\CooCox-Flash\CoIDE_STM32F1xx_MD_64K\STM32F10x_MD_64.elf"  
2
Erase:   Done
3
Program:   Failed
4
Error: Flash driver function execute error

Wieder das gleiche wie bei IAR: Der Controller stoppt sein Default-Blink 
Programm, erst nach Strom ab / an blinkts wieder. Muss man vllt. die 2 
Jumper, die auf dem Board drauf sind, irgendwie platzieren so dass er 
sich programmieren lässt?

von Bernd K. (prof7bit)


Lesenswert?

Guest schrieb:
> Sagen wir mal du musst 20 SFR Adressen raussuchen und die SFRs in deinem
> Code definieren. Das sollten genug SFRs für Uart und I2C sein.

Er muss gar nix raussuchen wenn er einfach den mitgelieferten Header von 
STM verwendet.

von Max M. (maxmicr)


Lesenswert?

Den benutz ich inzwischen auch!

von Max M. (maxmicr)


Lesenswert?

Kann es sein, dass entweder das STM32-Board oder der ST-Link V2 (obwohl 
sich der noch mit neuer Firmware flashen lässt) defekt ist? Hat jemand 
Informationen dazu, was ich mit den beiden Jumpern machen muss? Im 
Internet finde ich nichts diesbezüglich.

Oder liegts vllt. an einer falschen Auskommentierung in der 
'stm32f10x.h'?
Die sieht so aus:
1
  /* #define STM32F10X_LD */     /*!< STM32F10X_LD: STM32 Low density devices */
2
  /* #define STM32F10X_LD_VL */  /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */  
3
  #define STM32F10X_MD     /*!< STM32F10X_MD: STM32 Medium density devices */
4
  /* #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
5
  /* #define STM32F10X_HD */     /*!< STM32F10X_HD: STM32 High density devices */
6
  /* #define STM32F10X_HD_VL */  /*!< STM32F10X_HD_VL: STM32 High density value line devices */  
7
  /* #define STM32F10X_XL */     /*!< STM32F10X_XL: STM32 XL-density devices */
8
  /* #define STM32F10X_CL */     /*!< STM32F10X_CL: STM32 Connectivity line devices */

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Max M. schrieb:
> Hat jemand
> Informationen dazu, was ich mit den beiden Jumpern machen muss?

In dem Zustand in dem die Jumper waren als Du es ausgepackt hast 
funktioniert es. So kenn ich es zumindest von diesen Boards.

: Bearbeitet durch User
von Max M. (maxmicr)


Lesenswert?

Wenn ich mit der ST-Link Utility auf das Device connecten will, kommt 
die Meldung "Can not read memory! Disable Read Out Protection and 
retry.". Die Device ID sowie die Device family wird allerdings 
ausgelesen. Wie schalte ich die Read Out Protection aus, geht das 
überhaupt?

Edit: Es geht über "Target" -> "Option Bytes" -> ganz oben "Read Out 
Protection". Hab dann noch ein "Target" -> "Erase Chip" gemacht.

Und...Programmieren geht! 2 Monate später und es klappt...Wahnsinn...

: Bearbeitet durch User
von ./. (Gast)


Lesenswert?

> 2 Monate später

Das wurd ja auch mal Zeit.


Weiter gutes Gelingen

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.