Forum: Projekte & Code STM32F4Discovery mit CooCox :: GPIO,SDIO,Timer,SoftTimer,USART,printf


von Thomas W. (diddl)


Angehängte Dateien:

Lesenswert?

Im Zuge eines Projekts ist ein Testcode abgefallen, der möglicherweise 
hilfreich für Neueinsteiger sein kann. Das Ganze ist kompilierbar unter 
CooCox v1.5 und läuft auf einem F4 Discovery.



GPIO: Beispielcode wie man GPIO als Input und Output definiert. Die 
eingebauten LED blinken in verschiedenen Rythmus.



SDIO: Die SDIO Pheripherie, initialisierung, DMA Mode, 1 Bit und 4 Bit 
Mode. Im Samplecode wird eine Textdatei im Root einer SD Karte 
(FAT/FAT32) erzeugt und wieder gelesen.

Es ist ein Wrapper implementiert, damit Standardbefehle wie fopen(), 
fread(), fwrite() usw. funktionieren. Man muss den Wrapper nicht 
verwenden, ist aber praktisch wenn man bestehenden Code portieren will.

Es ist ein mini fprintf() implementiert.

Es ist ein 2 x 512 KB Buffer implementiert. Der Buffer wird nur 
verwendet wenn DMA aktiv ist UND wenn Speicherblöcke adressiert werden, 
die vom DMA unerreichbar sind. Es werden abwechselnd 512 Byte per DMA 
transportiert und inzwischen der andere Buffer beschrieben/gelesen.



Timer,SoftTimer: Timer 4 wird verwendet in µs Auflösung. Dazu gibt es 
eine Miniimplementierung von Software Timer. Man kann eine unbegrenzte 
Anzahl von Softwaretimer (einer für ms und einer für µs) setzen. Die 
Softwaretimer kann man per Funktion prüfen ob sie abgelaufen sind. Der 
Betrieb der Softwaretimer braucht keine Systemzeit (nur die Abfrage und 
Setzfunktion).

Das LED blink Demo ist mit Softwaretimer realisiert.



USART: Usart 2 wird initialisiert auf 115200,8N1. Es sind zwei kleine 
Ringbuffer installiert. Ein und Ausgabe erfolgt im USART Interrupt, 
deshalb verzögert printf() nur sehr kurze Zeit.

Ein angeschlossenes Terminal zeigt Startmeldung, PLL config, SDIO 
ausgaben.



printf: es ist eine Miniimplementierung von printf(), sprintf(), 
snprintf() und fprintf() vorhanden. Kein float, etwas eingeschränkte 
Funktionalität. Braucht aber fast keinen Platz im Flash. putc() ist auf 
den USART2 eingestellt.

von bösewicht (Gast)


Lesenswert?

ähm, -geh doch mal so vor:
ladt es runter, speicher es ab und öffne CoIDE.
wenn rebuild klappt, stell es ein --
ps.:
gute Codesammlung!

von Thomas W. (diddl)


Lesenswert?

Habe eben alles runter geladen, Projekt geöffnet, rebuild all, - 
tadellos. Wo ist das Problem?



==============
GCC HOME: C:\Program Files (x86)\arm-none-eabi-gcc-4_6\bin
compile:
    [mkdir] Created dir: 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Debug\bin
    [mkdir] Created dir: 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Debug\obj
       [cc] 27 total files to be compiled.
       [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 
-mfloat-abi=softfp -mthumb -Wall -ffunction-sections -O0 -g -c 
-D__FPU_USED -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 -DSTM32F407VG 
-IC:\Users\tw\Documents\CooCox\Stm32F407_blink 
-IC:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\include 
-IC:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_boot 
-IC:\Users\tw\Documents\CooCox\Stm32F407_blink\src 
-IC:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis 
-IC:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\include 
-IC:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\fatfs\src 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
syscfg.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
sdio.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\fatfs\src\fswrapper. 
c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
usart.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\source\Discovery.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
pwr.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\source\stm32f4_disco 
very_sdio_sd.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\source\sTimer.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\source\uart.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\fatfs\src\diskio.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_boot\startup\startup_ 
stm32f4xx.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\source\stm32f4_disco 
very.c  C:\Users\tw\Documents\CooCox\Stm32F407_blink\main.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
rcc.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
it.c  C:\Users\tw\Documents\CooCox\Stm32F407_blink\stdio\printf.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
gpio.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_boot\system_stm32f4xx 
.c  C:\Users\tw\Documents\CooCox\Stm32F407_blink\syscalls\syscalls.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
dma.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\Driver\fatfs\src\ff.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\src\Blink.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
exti.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\misc.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\src\SD_Test.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
rtc.c 
C:\Users\tw\Documents\CooCox\Stm32F407_blink\cmsis_lib\source\stm32f4xx_ 
tim.c
       [cc] Starting link
       [cc] arm-none-eabi-gcc -O0 -nostartfiles 
-Wl,-Map=Stm32F407_blink.map -mcpu=cortex-m4 -mthumb 
-LC:\Users\tw\Documents\CooCox\Stm32F407_blink -Wl,--gc-sections 
-Wl,-TC:\Users\tw\Documents\CooCox\Stm32F407_blink\arm-gcc-link.ld -g -o 
Stm32F407_blink.elf ..\obj\stm32f4xx_syscfg.o ..\obj\stm32f4xx_sdio.o 
..\obj\fswrapper.o ..\obj\stm32f4xx_usart.o ..\obj\Discovery.o 
..\obj\stm32f4xx_pwr.o ..\obj\stm32f4_discovery_sdio_sd.o 
..\obj\sTimer.o ..\obj\uart.o ..\obj\diskio.o ..\obj\startup_stm32f4xx.o 
..\obj\stm32f4_discovery.o ..\obj\main.o ..\obj\stm32f4xx_rcc.o 
..\obj\stm32f4xx_it.o ..\obj\printf.o ..\obj\stm32f4xx_gpio.o 
..\obj\system_stm32f4xx.o ..\obj\syscalls.o ..\obj\stm32f4xx_dma.o 
..\obj\ff.o ..\obj\Blink.o ..\obj\stm32f4xx_exti.o ..\obj\misc.o 
..\obj\SD_Test.o ..\obj\stm32f4xx_rtc.o ..\obj\stm32f4xx_tim.o
Program Size:
     34916       32     7752    42700     a6cc  Stm32F407_blink.elf
      text     data      bss      dec      hex  filename

BUILD SUCCESSFUL
Total time: 2 seconds

von bösewicht (Gast)


Lesenswert?

habe Version: 1.5.1
Build id: 20120929-1882-746

mit dem Ergebnis:
 K:\C-winkler\Stm32F407_blink\Driver\source/SDIO.c:88: multiple 
definition of `SD_LowLevel_Init'
       [cc] 
..\obj\stm32f4_discovery.o:K:\C-winkler\Stm32F407_blink\Driver\source/st 
m32f4_discovery.c:86:  first defined here
       [cc] ..\obj\SDIO.o: In function `SD_Init':
       [cc] K:\C-winkler\Stm32F407_blink\Driver\source/SDIO.c:140: 
multiple definition of `SD_Init'
       [cc] 
..\obj\stm32f4_discovery_sdio_sd.o:K:\C-winkler\Stm32F407_blink\Driver\s 
ource/stm32f4_discovery_sdio_sd.c:406:  first defined here
       [cc] ..\obj\Blink.o: In function `BlinkExpIni':
       [cc] 
..\obj\printf.o:K:\C-winkler\Stm32F407_blink\stdio/printf.c:281: first 
defined here
       [cc] K:\C-winkler\Stm32F407_blink\Driver\fatfs\src/f_io.c:72: 
multiple definition of `fprintf'
       [cc] ..\obj\f_io.o: In function `fprintf':
       [cc] K:\C-winkler\Stm32F407_blink\src/Blink.c:21: multiple 
definition of `BlinkExpIni'
       [cc] 
..\obj\gpio.o:K:\C-winkler\Stm32F407_blink\Driver\source/gpio.c:23: 
first defined here
       [cc] ..\obj\Blink.o: In function `BlinkExpLoop1':
       [cc] K:\C-winkler\Stm32F407_blink\src/Blink.c:31: multiple 
definition of `BlinkExpLoop1'
       [cc] 
..\obj\gpio.o:K:\C-winkler\Stm32F407_blink\Driver\source/gpio.c:33: 
first defined here
       [cc] ..\obj\Blink.o: In function `BlinkExpLoop2':
       [cc] K:\C-winkler\Stm32F407_blink\src/Blink.c:47: multiple 
definition of `BlinkExpLoop2'
       [cc] 
..\obj\gpio.o:K:\C-winkler\Stm32F407_blink\Driver\source/gpio.c:71: 
first defined here
       [cc] ..\obj\Blink.o: In function `BlinkExpLoop3':
       [cc] K:\C-winkler\Stm32F407_blink\src/Blink.c:91: multiple 
definition of `BlinkExpLoop3'
       [cc] 
..\obj\gpio.o:K:\C-winkler\Stm32F407_blink\Driver\source/gpio.c:164: 
first defined here
       [cc] ..\obj\SD_Test.o: In function `SearchImageFile':
       [cc] K:\C-winkler\Stm32F407_blink\src/SD_Test.c:39: multiple 
definition of `SearchImageFile'
       [cc] 
..\obj\sdcard.o:K:\C-winkler\Stm32F407_blink\Driver\source/sdcard.c:304: 
first defined here
       [cc] ..\obj\SD_Test.o: In function `SDcardReadFile':
       [cc] K:\C-winkler\Stm32F407_blink\src/SD_Test.c:98: multiple 
definition of `SDcardReadFile'
       [cc] 
..\obj\sdcard.o:K:\C-winkler\Stm32F407_blink\Driver\source/sdcard.c:363: 
first defined here
       [cc] ..\obj\SD_Test.o: In function `PrintDir':
       [cc] K:\C-winkler\Stm32F407_blink\src/SD_Test.c:132: multiple 
definition of `PrintDir'
       [cc] 
..\obj\sdcard.o:K:\C-winkler\Stm32F407_blink\Driver\source/sdcard.c:272: 
first defined here
       [cc] ..\obj\SD_Test.o: In function `SDcardInit':
       [cc] K:\C-winkler\Stm32F407_blink\src/SD_Test.c:245: multiple 
definition of `SDcardInit'
       [cc] 
..\obj\sdcard.o:K:\C-winkler\Stm32F407_blink\Driver\source/sdcard.c:395: 
first defined here
       [cc] ..\obj\gpio.o: In function `EXTI0_IRQHandler':
       [cc] gpio.c:(.text.EXTI0_IRQHandler+0x26): undefined reference to 
`IecPinChangeAtn'
       [cc] gpio.c:(.text.EXTI1_IRQHandler+0x24): undefined reference to 
`IecPinChange'
       [cc] ..\obj\gpio.o: In function `EXTI1_IRQHandler':
       [cc] ..\obj\gpio.o: In function `EXTI2_IRQHandler':
       [cc] gpio.c:(.text.EXTI2_IRQHandler+0x24): undefined reference to 
`IecPinChange'
       [cc] collect2: ld returned 1 exit status

BUILD FAILED
Total time: 54 seconds
vom Linker;

Jetzt suche ich erstmal bei mir ...

von Thomas R. (Gast)


Lesenswert?

Bei mir fehlt
evalboard.h

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Da fehlt wohl noch mehr.
1
 [cc] F:\ARM_Projekte\Stm32F407_blink_06\Stm32F407_blink\Driver\source\sdcard.c:34:18: fatal error: 1541.h: No such file or directory

von Thomas W. (diddl)


Angehängte Dateien:

Lesenswert?

Das Projekt verwendet die Datei gar nicht?

Ich habe jetzt mal alle Dateien gelöscht, die ich vom Build ausgenommen 
habe. Und dann das Projekt neu gezippt.

Hoffentlich funktioniert es nun.

von bösewicht (Gast)


Lesenswert?

die beiden
evalboard.h und 1541.h kannste weglassen. Sind wohl noch von seinem 
Proj. übrig;
Aber, mein gcc scheint nichtmehr zu stimmen!Habe ich wohl selbst 
verbockt (wie weiß ich nicht);
Welchen nimmst Du, Thomas Winkler ?

von bösewicht (Gast)


Lesenswert?

- er war schneller!

von Thomas R. (Gast)


Angehängte Dateien:

Lesenswert?

Das sieht nun besser aus - es rumpeln Compiler und Linker fehlerfrei 
drüber ;-)
Nun spiele ich mal damit.
Merci!

von bösewicht (Gast)


Lesenswert?

--ausgezeichnet:
läuft wunderbar durch!!!

von Thomas W. (diddl)


Lesenswert?

bösewicht schrieb:
> Aber, mein gcc scheint nichtmehr zu stimmen!Habe ich wohl selbst
> verbockt (wie weiß ich nicht);
> Welchen nimmst Du, Thomas Winkler ?

\arm-none-eabi-gcc-4_6

von Thomas R. (Gast)


Lesenswert?

bösewicht schrieb:
> --ausgezeichnet:
> läuft wunderbar durch!!!
Das kann ich nur bestätigen:
PCLK2:   84000000

SYSCLK:  168000000

-----------------

initialize SDIO system ...

drive 0 ok

2741536 KB total drive space.

3922432 KB available.

SDIO system ok, free clusters: 85673

--- read/write test

Zeile 1

Zeile 2

Zeile le test ok.

--- reading directory

<LOG>

TEST.TXT
----------------------------------------
abermals: Merci!!!

von bösewicht (Gast)


Lesenswert?

-danke, ich hatte meinen "Toolchain-Path" offenbar überschrieben, als 
ich in einem anderen Projekt *.lib linken wollte;
(demobuilder aus Open407I-C_demobuilder) --

von bösewicht (Gast)


Lesenswert?

@Thomas Winkler (Firma: privat) (diddl)
Jetzt, da alles geht, könntest Du doch dem CooCox-Forum einen Link auf 
diese Seite spendieren( die freuen sich immer, wenn mal was funktioniert 
--);

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

1
Program Size:
2
      text     data      bss      dec      hex  filename
3
     34888       32     7752    42672     a6b0  Stm32F407_blink_Target_Flash.elf
4
5
BUILD SUCCESSFUL
6
Total time: 10 seconds
Sieht gut aus. Auch von mir Danke!

von Peter S. (psavr)


Lesenswert?

Compilieren geht, aber mit dem UART gibt es noch ein Problem mit dem 
Buffer

Auf dem Terminal kommt nach dem Reset bloss "### Ã" raus, dann ist 
Schluss. Wenn ich #define F_DIAG  0 setze, dann kommt immerhin "### 
Discovery 32F4 Demo ###" raus.

von Peter S. (psavr)


Lesenswert?

Das Terminal-Problem offenbar liegt nicht am UART-Teil selber, irgendwo 
bleibt die SW hängen. Habe eine 2GByte FAT16 uSD-Card, sollte doch 
gehen, oder müsste ich was anpassen?

von Peter S. (psavr)


Lesenswert?

Beim Aufruf von "f_getfree("0:", &clusters, &fso)" im SDcardInit() 
scheint es zu knallen! Irgend eine Idee?

von Peter S. (psavr)


Angehängte Dateien:

Lesenswert?

@Thomas Winkler
Dein Code geht definitiv nicht! Die Datei TEST.TXT wird zwar erstellt 
(mit Inhalt) die Filesystem Funktionen scheinen sich mit dem printf 
UART-Ausgaben zu beissen.

Ich nutze die USART6 und habe es auch ohne die minimalistische "retarget 
printf" probiert, printf geht nicht! Wenn ich nach jedem printf() einige 
ms Delay einbaue, kriege ich maximal soviel raus:
1
### Discovery 32F4 Demo ###
2
3
PCLK1:   42000000
4
PCLK2:   84000000
5
SYSCLK:  168000000
6
-----------------
7
initialize SDIO system ...
8
execute of f_mount() was succesfull
==> nach dieser Ausgabe ist das printf() tot!

Schade, dass Du hier was halbfertiges postest und offenbar auch nicht 
bereit bist, Hilfe zu leisten! Ist so leider echt nicht zu gebrauchen...

von m.n. (Gast)


Lesenswert?

Peter S. schrieb:
> Schade, dass Du hier was halbfertiges postest und offenbar auch nicht
> bereit bist, Hilfe zu leisten! Ist so leider echt nicht zu gebrauchen...

Schon lustig, da stellst Du selber IIC-Routinen für ein EEPROM 24C32 vor 
und interessierst Dich selber nicht für Fehlermeldungen :-)
Beitrag "Re: STM32F4 Discovery mit I2C-Bus EEPROM"

Die von Dir geänderten Programmteile scheinen ebenfalls nur zufällig zu 
funktionieren. Oder hast Du die vorgeschlagenen Test schon mal 
erfolgreich durchgespielt oder einen String länger als 32Byte 
geschrieben und 'sauber' zurückgelesen? Ich fürchte: nein.

von Peter S. (psavr)


Lesenswert?

@m.n. (Gast)
Ich habe versucht Dir zu erklären, dass es generische I2C-Bus Routinen 
sind und nicht Device-Treiber für irgend ein spezifisches EEPROM! 
Offenbar verstehst Du das nicht! Und das Beispiel, welches Du 
erwähntest, bist Du auch schuldig geblieben. ==> Anyway, all dies gehört 
NICHT in diesen Thread!

von bösewicht (Gast)


Angehängte Dateien:

Lesenswert?

Beitrag "Re: STM32F4Discovery mit CooCox :: GPIO,SDIO,Timer,SoftTimer,USART,printf"

Peter S. schrieb:
> Ich nutze die USART6 und habe es auch ohne die minimalistische "retarget
> printf" probiert, printf geht nicht! Wenn ich nach jedem printf() einige
> ms Delay einbaue, kriege ich maximal soviel raus:
> ### Discovery 32F4 Demo ###
>
> PCLK1:   42000000
> PCLK2:   84000000
> SYSCLK:  168000000
> -----------------
> initialize SDIO system ...
> execute of f_mount() was succesfull
> ==> nach dieser Ausgabe ist das printf() tot!
(Von was sprichst Du, Brüderchen?)

Die Ausgabe von USART2 mit "Retarget printf"

von Thomas W. (diddl)


Lesenswert?

Hi Peter

Habe erst jetzt gesehen, dass du Probleme mit dem Code hast.

Was soll ich sagen, es läuft tadellos bei mir. Auch in viel größerem 
Kontext laufen dieselben Basis Routinen tadellos.

Sowohl USART2 als auch SDIO werden intensiv genutzt in meinem Projekt. 
Ich kann deine Probleme nicht nachvollziehen?

von m.n. (Gast)


Lesenswert?

Peter S. schrieb:
> Und das Beispiel, welches Du
> erwähntest, bist Du auch schuldig geblieben.

Ich schulde Dir garnichts. Wenn Du unter der Überschrift "STM32F4 
Discovery mit I2C-Bus EEPROM" Programme vorstellst, die fürs EEPROM 
offensichtlich garnicht zu gebrauchen sind, ist das schon arg daneben.

> ==> Anyway, all dies gehört
> NICHT in diesen Thread!

Und hier machts Du den Schiedsrichter und stänkerst über die scheinbar 
fehlerhaften Routinen Anderer, ohne einen Beleg dafür zu erbringen.
Das einzige was kommt: es funktioniert nicht. Toll!

von Peter S. (psavr)


Angehängte Dateien:

Lesenswert?

@Thomas Winkler
Erstmal "Sorry" für meinen etwas gehässigen Schlusssatz gestern Nacht! 
Ich war wohl einfach müde und frustriert, dass ich es bei mir nicht zum 
laufen kriege und ausgerechnet die zum debuggen hilfreiche UART nicht 
tut.

Mein Discovery steckt auf einem STF4BB Baseboard:
http://www.embedinfo.com/English/download/DM-STF4BB.pdf
Dort hat's ein uSD-Card Interface und die UART6 ist mit einem 
RS232Treiber versehen. Schema: Siehe Attachment (Problem erkennbar?)

Um die UART6 zu nutzen habe ich folgendes im UART.h beigefügt:
[c]
#if USART == 6
#define USARTx                           USART6
#define USARTx_CLK                       RCC_APB2Periph_USART6
#define USARTx_CLK_INIT                  RCC_APB2PeriphClockCmd
#define USARTx_IRQn                      USART6_IRQn
#define USARTx_IRQHandler                USART6_IRQHandler

#define USARTx_TX_PIN                    GPIO_Pin_6
#define USARTx_TX_GPIO_PORT              GPIOC
#define USARTx_TX_GPIO_CLK               RCC_AHB1Periph_GPIOC
#define USARTx_TX_SOURCE                 GPIO_PinSource6
#define USARTx_TX_AF                     GPIO_AF_USART6

#define USARTx_RX_PIN                    GPIO_Pin_7
#define USARTx_RX_GPIO_PORT              GPIOC
#define USARTx_RX_GPIO_CLK               RCC_AHB1Periph_GPIOC
#define USARTx_RX_SOURCE                 GPIO_PinSource7
#define USARTx_RX_AF                     GPIO_AF_USART6
#endif
[\c]

Für die Fehlersuche habe ich nach einigen printfs() zusätzliche delays 
eingefügt und zum Teil die Funktionsaufrufe aus den if()-Abfragen raus 
genommen. Beim debuggen fand ich jedoch keine Fehler!

Ich habe das ganze Projekt einige Posts weiter oben beigefügt, könntest 
Du bitte mal gucken ob es bei Dir noch tut, bzw. ob Du einen 
entscheidenden Unterschied findest?

p.s. Ich nutze CoIDE 1.5.1 mit gcc-arm-none-eabi-4_6-2012q4-20121016

von Thomas W. (diddl)


Lesenswert?

Hallo Peter

Keine Ursache. Leider habe ich grad kein F4 board zur Hand. Aber ich 
sehe schon, du hast den USART von 2 auf 6 gewechselt, was ja an sich 
keinen Unterschied machen sollte.


Nur eine schnelle Vermutung:

Ich gehe davon aus, dass du die richtigen Pins für USART 6 verwendest 
hast, sonst würde es ja gar nicht gehen. Ich gehe auch davon aus, dass 
die SDIO Pins keine Überschneidung haben, mit den von dir verwendeteten 
USART6 Pins.

Da gibt es aber ein weiteres GPIO pin das für SDIO eine Rolle spielt. Es 
ist als Eingang geschaltet und dient zur SD Kartenerkennung. 
Möglicherweise ist da der hund begraben? Notfalls musst diesen Eingang 
auf einen anderen Pin verlegen, dann sollte es meiner Meinung nach 
funktionieren.


Ich kann mir das am Wochenende gerne mal genauer anschauen.

von Thomas W. (diddl)


Lesenswert?


von Thomas W. (diddl)


Lesenswert?

Könnte natürlich auch ein Grund sein, warum USART6 nicht richtig läuft:
1
  /* enable APB2 peripheral clock for USART1 
2
   * note that only USART1 and USART6 are connected to APB2
3
   * the other USARTs are connected to APB1
4
   */
5
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

von Peter S. (psavr)


Lesenswert?

>note that only USART1 and USART6 are connected to APB2
Danke für den Hinweis, das habe ich übersehen und werde es prüfen!
Ohnehin war ich wohl viel zu sehr auf die SW fixiert und habe die HW zu 
sehr ausser acht gelassen.

>Da gibt es aber ein weiteres GPIO pin das für SDIO eine Rolle spielt.
Welchen GPIO-Pin meinst Du, bzw wie hast Du die uSD-Card angeschlossen?

Bei STF4BB ist:
Pin-1  PC10  D2
Pin-2  PC11  CD/D3
Pin-3  PD2   CMD
Pin-4  VDD   3V
Pin-5  PC12  CLK
Pin-6  VSS   GND
Pin-7  PC8   D0
Pin-8  PC9   D1
Pin-9  PD15  NCD

von Thomas W. (diddl)


Lesenswert?

Da haben wir ja schon das Problem:
1
----- stm32F4_discovery.h -----
2
 /**
3
  * @brief  SD FLASH SDIO Interface
4
  */
5
#define SD_DETECT_PIN                    GPIO_Pin_6            /* PC.6 */
6
#define SD_DETECT_GPIO_PORT              GPIOC
7
#define SD_DETECT_GPIO_CLK               RCC_AHB1Periph_GPIOC


Der SD_DETECT_PIN liegt da wo der TX des USART6 liegt ... ;-)

von Peter S. (psavr)


Lesenswert?

>note that only USART1 and USART6 are connected to APB2
Daran liegt es nicht, in USART_config() steht...
1
/* Enable USART clock */
2
USARTx_CLK_INIT(USARTx_CLK, ENABLE);
und ich definiere...
1
#define USARTx_CLK             RCC_APB2Periph_USART6
2
#define USARTx_CLK_INIT        RCC_APB2PeriphClockCmd

Auch die SDIO Pin Belegung scheint ok zu sein.

Was wird im InitIEC(void) eigentlich alles initialisiert, bzw. was ist 
IEC?

von Peter S. (psavr)


Lesenswert?

>Der SD_DETECT_PIN liegt da wo der TX des USART6 liegt ... ;-)
Das ist offenbar wirklich das Problem! Wie löst man das, braucht es 
dieses SD_DETECT_PIN Signal? (Ist bei meinem Board offenbar nicht 
vorhanden)

von Peter S. (psavr)


Lesenswert?

Alles klar, das muss bei mir natürlich PB15 sein...
1
#define SD_DETECT_PIN          GPIO_Pin_15           /* PB.15 */
2
#define SD_DETECT_GPIO_PORT    GPIOB                 /* GPIOB */
3
#define SD_DETECT_GPIO_CLK     RCC_AHB1Periph_GPIOB

=> Und es tut... => So kann ich heute endlich wieder schlafen ;o)

von Thomas W. (diddl)


Lesenswert?

Board Eigenheiten ... ;-)

von Peter S. (psavr)


Lesenswert?

@Thomas Winkler
>Board Eigenheiten ... ;-)
Kann man auch so betrachten!

Hey, noch vielen Dank, nun kann ich weiter entdecken. Ist nämlich das 
erste mal, dass ich was mit Filesystemen und gar mit SD-Cards mache.

Bleibt aber noch die Frage: Was ist/heisst IEC "InitIEC(void)" und was 
brauche ich davon wirklich?

von Peter S. (psavr)


Lesenswert?

Noch was:
http://www.coocox.org/forum/topic.php?id=2236
Im obigen Thread steht, dass es Probleme mit DMA gibt, wenn was anderes 
als -O0 verwende, sprich - der Code mit Optimierung compiliert wird!
Stimmt das? Das wäre ja eine eine ganz "böse Sache"...

von Thomas W. (diddl)


Lesenswert?

zu 1)

Vergiss das IEC, stammt aus meinem größeren Projektkontext.

IEC ist ein sehr altes Bus Protokoll das der C64 zu seiner Peripherie 
(Floppy, Drucker) gesprochen hat.



zu 2)

Kann so nicht stimmen. Ich benutze -O2 mit SDIO DMA, und es läuft gut.

Zum Einen ist der DMA ist nicht ganz unkritisch. Da hatte ich auch 
ziemlich zu kämpfen. Deshalb auch die Doppelbuffer.

Zum Anderen bringt der DMA nicht die Welt. Wegen der 168 MHz ist der 
Durchsatz beim Polling fast gleich. DMA bringt halt Entlastung der CPU 
wenn es eng wird. Beim F4 wird es aber eher selten eng.

von Peter S. (psavr)


Lesenswert?

>Vergiss das IEC, stammt aus meinem größeren Projektkontext.
Ich hatte das InitIEC(void) auskommentiert, dann ging aber gar nix mehr. 
Wird da sonst noch was initialisiert, dass benötigt wird? Oder was muss 
ich noch "rausputzen" damit das ganze wirklich weg ist?

>Zum Anderen bringt der DMA nicht die Welt
Eine hohe Filesytem-Performance ist bei mir kein Thema, wie/was/wo 
müsste man etwas ändern, dass das ganze ohne DMA läuft?

von Peter (Gast)


Lesenswert?

Alles okey, läuft tatsächlich ohne IEC, ich hatte da noch ein anderes 
Problem. Auch mit Optimierung -OS ist alles bestens! ;o)

von andre (Gast)


Lesenswert?

ich habe alles nach der Anleitung installiert
und wollte das Beispiel  „ GPIO_INPUT_OUTPUT“ Kompilieren leider 
Funktioniert das bei mir nicht .
Vielleicht kann mir einer weiterhelfen


GCC HOME: C:\Program Files\GNU Tools ARM Embedded\4.7 2012q4\bin
compile:
    [mkdir] Created dir: D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\STM32F4_GPIO_INPUT_OUTPUT\Debug\ 
bin
    [mkdir] Created dir: D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\STM32F4_GPIO_INPUT_OUTPUT\Debug\ 
obj
       [cc] 6 total files to be compiled.
       [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -Wall 
-ffunction-sections -g -O3 -c -DSTM32F407VG -DSTM32F4XX 
-DUSE_STDPERIPH_DRIVER -D__FPU_USED "-ID:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot" "-ID:\kay\CoIDE 
Projekte\Neuer Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis" 
"-ID:\kay\CoIDE Projekte\Neuer Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT" 
"-ID:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\include" 
"-ID:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib" "-ID:\kay\CoIDE 
Projekte\Neuer Ordner\coocox" '"D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot\startup\startup_stm32 
f4xx.c"'  '"D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\main.c"' '"D:\kay\CoIDE 
Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\source\stm32f4xx_rcc.c 
"'  '"D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\source\stm32f4xx_gpio. 
c"'  '"D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot\system_stm32f4xx.c"' 
'"D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\source\stm32f4xx_tim.c 
"'
       [cc] In file included from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\main.c:21:
       [cc] D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis/core_cm4.h:135:0: warning: 
"__FPU_USED" redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\include/stm32f4xx_rcc. 
h:31,
       [cc]                  from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\source\stm32f4xx_rcc.c 
:56:
       [cc] D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis/core_cm4.h:135:0: warning: 
"__FPU_USED" redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\include/stm32f4xx_gpio 
.h:32,
       [cc]                  from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\source\stm32f4xx_gpio. 
c:79:
       [cc] D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis/core_cm4.h:135:0: warning: 
"__FPU_USED" redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot\stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot\system_stm32f4xx.c:11 
7:
       [cc] D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis/core_cm4.h:135:0: warning: 
"__FPU_USED" redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_boot/stm32f4xx.h:240:0,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\include/stm32f4xx_tim. 
h:32,
       [cc] D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis/core_cm4.h:135:0: warning: 
"__FPU_USED" redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE Projekte\Neuer 
Ordner\coocox\STM32F4_GPIO_INPUT_OUTPUT\cmsis_lib\source\stm32f4xx_tim.c 
:114:
       [cc] Starting link
       [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -Wl -nostartfiles 
-g -Wl,-Map=STM32F4_GPIO_INPUT_OUTPUT.map -O3 -Wl,--gc-sections 
-LC:\CooCox\CoIDE\configuration\ProgramData\STM32F4_GPIO_INPUT_OUTPUT 
-Wl,-TC:\CooCox\CoIDE\configuration\ProgramData\STM32F4_GPIO_INPUT_OUTPU 
T/arm-gcc-link.ld  -g -o STM32F4_GPIO_INPUT_OUTPUT.elf 
..\obj\startup_stm32f4xx.o ..\obj\main.o ..\obj\stm32f4xx_rcc.o 
..\obj\stm32f4xx_gpio.o ..\obj\system_stm32f4xx.o ..\obj\stm32f4xx_tim.o
       [cc] arm-none-eabi-gcc: error: unrecognized command line option 
'-Wl'

BUILD FAILED

von Peter S. (psavr)


Lesenswert?

Welche Versionen von CoIDE und GCC verwendest Du? Ich empfehle
CoIDE 1.5.2 und die letzte GCC 4.6 Version 
(gcc-arm-none-eabi-4_6-2012q4-20121016)

Vielleicht findest Du hier eine Lösung:
http://www.coocox.org/forum/topic.php?id=2596

Und sobald etwas mit GCC zu tun hat, würde ich niemals Verzeichnisspfade 
mit Spaces verwenden, selbst wenn CooCox diese als Default-Pfade 
vorschlägt.

von andre (Gast)


Lesenswert?

CoIDE 1.6.2
GCC 4.7-2012-q4

Toolchain : C:\Program Files\GNU Tools ARM Embedded\4.7 2012q4\bin

Das geht trotzdem nicht.



GCC HOME: C:\Program Files\GNU Tools ARM Embedded\4.7 2012q4\bin
compile:
    [mkdir] Created dir: D:\kay\CoIDE 
Projekte\Stm32F407_blink\Stm32F407_blink\Debug\bin
    [mkdir] Created dir: D:\kay\CoIDE 
Projekte\Stm32F407_blink\Stm32F407_blink\Debug\obj
       [cc] 27 total files to be compiled.
       [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -Wall 
-ffunction-sections -g -O0 -c -DSTM32F407VG -DSTM32F4XX -D__FPU_USED 
-DUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\fatfs" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\fatfs\src" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\src" "-ID:\kay\CoIDE Projekte" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\include" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink" "-ID:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot" '"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_syscfg.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_sdio.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\Driver\fatfs\src\fswrapper.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_usart.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\Driver\source\Discovery.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_pwr.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\source\stm32f4_discovery_sdio_sd.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\Driver\source\sTimer.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\Driver\source\uart.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\Driver\fatfs\src\diskio.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot\startup\startup_stm32f4xx.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\source\stm32f4_discovery.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\main.c"' '"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_rcc.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_it.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\stdio\printf.c"' '"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_gpio.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\cmsis_boot\system_stm32f4xx.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\syscalls\syscalls.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_dma.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\Driver\fatfs\src\ff.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\src\Blink.c"' '"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_exti.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\cmsis_lib\source\misc.c"' 
'"D:\kay\CoIDE Projekte\Stm32F407_blink\src\SD_Test.c"' '"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_rtc.c"' 
'"D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_tim.c"'
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_syscfg.c:43:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_syscfg.h:32,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_sdio.c:155:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_sdio.h:38,
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\fatfs\src\fswrapper.c:25:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_usart.h:32,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_usart.c:85:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\source\Discovery.c:10:
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\include/Discovery.h:16,
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_pwr.h:32,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_pwr.c:32:
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\include/stm32f4_discovery.h:36,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\source\stm32f4_discovery_sdio_sd.c:230:
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\include/stm32f4_discovery_sdio_sd.h:38,
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx_conf.h:29,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\source\sTimer.c:23:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/misc.h:32,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\source\uart.c:25:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\fatfs\src\diskio.c:7:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\include/stm32f4_discovery.h:36,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\source\stm32f4_discovery.c:28:
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\include/Discovery.h:16,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\main.c:10:
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_rcc.h:31,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_rcc.c:56:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_it.c:14:
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_it.h:22,
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\stdio\printf.c:38:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_gpio.h:32,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_gpio.c:79:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot\stm32f4xx.h:240:0,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot\system_stm32f4xx.c:118:
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_dma.c:116:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_dma.h:32,
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\src\Blink.c:9:
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\Driver\include/discovery.h:16,
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_exti.h:32,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_exti.c:61:
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\misc.c:70:
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/misc.h:32,
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\src\SD_Test.c:10:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_rtc.h:32,
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_rtc.c:277:
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc] In file included from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_boot/stm32f4xx.h:240:0,
       [cc] D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis/core_cm4.h:135:0: warning: "__FPU_USED" 
redefined [enabled by default]
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\include/stm32f4xx_tim.h:32,
       [cc] <command-line>:0:0: note: this is the location of the 
previous definition
       [cc]                  from D:\kay\CoIDE 
Projekte\Stm32F407_blink\cmsis_lib\source\stm32f4xx_tim.c:114:
       [cc] Starting link
       [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -Wl -nostartfiles 
-g -Wl,-Map=Stm32F407_blink.map -O0 -Wl,--gc-sections 
-LC:\CooCox\CoIDE\configuration\ProgramData\Stm32F407_blink 
-Wl,-TC:\CooCox\CoIDE\configuration\ProgramData\Stm32F407_blink/arm-gcc- 
link.ld  -g -o Stm32F407_blink.elf ..\obj\stm32f4xx_syscfg.o 
..\obj\stm32f4xx_sdio.o ..\obj\fswrapper.o ..\obj\stm32f4xx_usart.o 
..\obj\Discovery.o ..\obj\stm32f4xx_pwr.o 
..\obj\stm32f4_discovery_sdio_sd.o ..\obj\sTimer.o ..\obj\uart.o 
..\obj\diskio.o ..\obj\startup_stm32f4xx.o ..\obj\stm32f4_discovery.o 
..\obj\main.o ..\obj\stm32f4xx_rcc.o ..\obj\stm32f4xx_it.o 
..\obj\printf.o ..\obj\stm32f4xx_gpio.o ..\obj\system_stm32f4xx.o 
..\obj\syscalls.o ..\obj\stm32f4xx_dma.o ..\obj\ff.o ..\obj\Blink.o 
..\obj\stm32f4xx_exti.o ..\obj\misc.o ..\obj\SD_Test.o 
..\obj\stm32f4xx_rtc.o ..\obj\stm32f4xx_tim.o
       [cc] arm-none-eabi-gcc: error: unrecognized command line option 
'-Wl'

von Peter S. (psavr)


Lesenswert?

>CoIDE 1.6.2
>GCC 4.7-2012-q4
>Toolchain : C:\Program Files\GNU Tools ARM Embedded\4.7 2012q4\bin
>Das geht trotzdem nicht.

Dann lese doch nochmals mein mein obiges Post durch und gucke Dir auch 
auch den Link an! Du solltest den GCC 4.6 verwenden, CooCox läuft noch 
nicht mit GCC 4.7!!!

Und statt seitenweise Compiler-Outputs per Copy+Paste hier reinzumüllen 
(der letzte Abschnitt hätte übrigens gereicht) bitte ich Dich, sowas 
beim nächsten mal in ein Textfile zu kopieren und dieses als Attachment 
beizufügen.

von Marius S. (lupin) Benutzerseite


Lesenswert?

Thomas, hast du dir die Treiber selbst geschrieben? Hab es mir nicht so 
genau angeschaut, aber ich benutze ChibiOS. Da sind schon alle 
Peripherie-Treiber mit drin (und die funktionieren sogar tadellos :-)).

Der stdio wrapper ist ganz praktisch, werde mir vielleicht ein bischen 
was davon klauen und für ChibiOS anpassen...

EDIT: Habe jetzt erst gemerkt, dass du gar kein CooOS verwendest. Willst 
alles zu Fuß machen?

von betroffener (Gast)


Lesenswert?

> Noch was:
> http://www.coocox.org/forum/topic.php?id=2236
> Im obigen Thread steht, dass es Probleme mit DMA gibt, wenn was anderes
> als -O0 verwende, sprich - der Code mit Optimierung compiliert wird!
> Stimmt das? Das wäre ja eine eine ganz "böse Sache"...

Hallo,

ich hatte dieses Problem. Nachdem ich  "DAC_InitTypeDef 
DAC_InitStructure;" global definiert habe, trat das Problem nicht mehr 
auf. Warum das so ist, weiß ich allerdings nicht.

von betroffener (Gast)


Lesenswert?

Nachtrag: Interessanterweise wird im DAC_SignalsGeneration Example, 
welches bei Cocoox vorgeschlagen wird, diese Variable ebenfalls global 
definiert.

Es muss da also einen Grund geben. Wenn man es nämlich nicht tut, so 
tritt das Problem auf.

von Daniel B. (dbuergin)


Lesenswert?

Hallo Thomas

Erstmal herzlichen Dank für den Code. Vorallem für die FatFS 
Integration. Läuft bei mir auf einem OLIMEX H407 Board.

Im Moment versuche ich das ganze etwas zu begreifen, und bei den IRQ's 
habe ich ein Problem. Braucht es die beiden IRQ's für SD jetzt oder 
nicht ?
1
void SDIO_IRQHandler(void)
2
{
3
  /* Process All SDIO Interrupt Sources */
4
  SD_ProcessIRQSrc();
5
}
6
7
void SD_SDIO_DMA_IRQHANDLER(void)
8
{
9
  /* Process DMA2 Stream3 or DMA2 Stream6 Interrupt Sources */
10
  SD_ProcessDMAIRQ();
11
}

Ich habe sie in "stm32fxx_it.c" drin. Natürlich mit der ganze NVIC 
Intialisierung in "main.c". Du hast die SDIO IRQ's nicht aktiviert, und 
es läuft auch, oder übersehe ich etwas ?

So ganz den Ueberblick habe ich wohl noch nicht ;-)

Danke und Gruss

Daniel

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.