Hallo,
ich habe bisher den STM32F103ZE immer mit IAR EW 6.1 programmiert. Dort
habe freeRTOS verwendet. Jetzt bin ich auf dem coIDE von coocox
umgestiegen. Die Portierung meines Projektes ging super schnell und
einfach, nur bekomme ich freeRTOS nicht zum laufen. Ich lande immer
wieder im Default_Handler.
Der Weg dorthin ist folgender:
main() -> vTaskStartScheduler() -> xPortStartScheduler() ->
vPortStartFirstTask()
Als portable habe ich GCC/ARM_CM3 gewählt (mit IAR hatte ich
IAR/ARM_CM3), ist das so ok, oder müssen vielleicht noch irgendwelche
Einstellungen angepasst werden?
Wäre SUPER wenn ihr mir weiter helfen könnt!
Danke für den Tipp, nur weis ich nicht genau wie ich das anstelle. Ich
hab auf der Page von freeRTOS nichts gefunden. Wie würde der Code
aussehen und wo müsste ich ihn einfügen?
Sorry für die blöde Frage, aber ich hab noch nicht so die Erfahrung.
es entstehen folgende Fehlermeldungen:
error: 'SVC_Handler' aliased to undefined symbol 'vPortSVCHandler'
error: 'PendSV_Handler' aliased to undefined symbol 'xPortPendSVHandler'
error: 'SysTick_Handler' aliased to undefined symbol
'xPortSysTickHandler'
obwohl ich die Funktionsprototpyen mit extern eingebunden habe.
2.
In das Startupfile habe ich folgendes eingefügt:
es entstehen folgende Fehlermeldungen:
error: 'SVC_Handler' aliased to undefined symbol 'vPortSVCHandler'
error: 'PendSV_Handler' aliased to undefined symbol 'xPortPendSVHandler'
error: 'SysTick_Handler' aliased to undefined symbol
'xPortSysTickHandler'
obwohl ich die Funktionsprototpyen mit extern eingebunden habe.
3.
Ich habe die Funktionen im freeRTOS port.c einfach in umbenannt:
vPortSVCHandler -> SVC_Handler
xPortPendSVHandler -> PendSV_Handler
xPortSysTickHandler -> SysTick_Handler
Laut Kommentar im startupfile müsste das auch passen:
Danke für den Hinweis! Werd es am Montag gleich versuchen die Namen der
rtos ISRs direkt in die Vektortabelle einzutragen. Hoffentlich klappts.
Schönes Wochenende noch!
Es geht!!!
Nach dem ich heute Nachmittag einige Zeit am startupfile herumgedoktort
habe, leider ohne Erfolg, habe ich nochmal unter freeRTOS.org gelesen.
Dort habe ich dann folgendes entdeckt:
Note that the following lines are included in FreeRTOSConfig.h:
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
These definitions map the FreeRTOS kernel interrupt handler function
names onto the CMSIS interrupt handler functions names - and in so
doing, allow the Atollic provided linker script and start up files to be
used without modification.<
Ich hab zwar nicht das Atollic Studio, aber der CoIDE verwendet den
geleichen Compiler. Ich habs dann mal probiert und es ging auf anhieb.
Warum das mit dem startupfile nicht geklappt hat ist mir nicht klar,
aber egal es geht!
Danke für eure Hilfe!!!
Hallo obamoa,
ich 'doktore' ebenso schon geraume Zeit an der Integration eines bisher
unter Eclipse verwalteten FreeRTOS-Projektes für einen TI LM3S6965
herum.
Die CoIDE scheint mir schlanker als Eclipse-Native.
Kannst du mir dein Projekt-File zukommen lassen damit ich die
FreeRTOS-Ordnerstruktur, speziell die Includes, nachvollziehen kann?
Es wäre schön, wenn du mir helfen könntest.
Hallo Jürgen Richards,
haben Sie FreeRTOS in der CoIDE zum laufen bekommen?
Ich kann mein Projekt fehlerfrei "Bulid"-en aber es blinkt keine LED.
Beim Versuch zu Debugen "hängt" der STM32F100RB vom VL-Discovery-Board.
Gruß Daniel
Hi Daniel,
Es ist zwar schon eine Weile her, aber dennoch:
Ja, CoIDE und FreeRTOS laufen.
Zwei Varianten sind bei uns im Einsatz:
1: STM32F103 (ET-STM32) hängt zum Debuggen an einem ST-link (SWD) des
STM32F4DISCOVERY-Board,
2: TI LM3S6965 (LM3S6965 Evaluation Kits) mit OpenJTAG zum Debuggen.
Falls Sie diese Varianten interessieren, melden Sie sich einfach.
Gruß Jürgen
Guten Morgen,
mein Problem ist gelöst. FreeRTOS wolle nicht laufen weil, ich Tasks
hatte, dessen Priorität höher als die maximal zulässige Priorität war.
Die maximal zulässige Prorität kann in der FreeRTOSconfig.h ->
configMAX_PRIORITIES angepasst werden. Des weiteren muss
configTOTAL_HEAP_SIZE auch immer "nach gepflegt" werden.
@ Jürgen trozdem Danke
@ Peter Coocox hat genug Bsp. anboard.