Forum: Compiler & IDEs at91sam7s and freertos 5.x


von alexander (Gast)


Lesenswert?

hi.

i tried

http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index_at91.html#at91_FreeRTOS1

works fine, but is a bit outdated.

is there a newer version based on FreeRTOS 5.x somewhere?

any ideas, how to 'upgrade'?

cheers,

alexander

von Tobi (Gast)


Lesenswert?

FreeRTOS Installation

1.) Alle Dateien dem Projekt hinzufügen. Dabei eine Datei aus MemMang 
auswählen und aus einem DemoProjekt eine FreeRTOSConfig.h auswählen.

2.) in portable.h eine portmacro datei auswählen, am einfachsten durch 
hinzufügen von "#define SAM7_GCC"

3.) In port.c ist in der fkt prvSetupTimerInterrupt ein Fehler (im 
Auslieferungszustand), es fehlt beim Aufruf von AT91F_AIC_ConfigureIt 
das erste Pointer Argument "AT91C_BASE_AIC,...."
-> hinzufügen

3.) im startup assembler code den SWI Vektor auf "vPortYieldProcessor" 
setzen

4.) prvCheckTasksWaitingTermination public machen indem das static 
entfertnt wird und der Prototyp in die task.h Datei integriert wird. 
Dies erlaubt es Tasks zu löschen, ohne auf den "Idle Task" angewiesen zu 
sein"

von Alexander K. (alexander9999)


Lesenswert?

hallo.

danke für die antwort.

Tobi wrote:
> FreeRTOS Installation
>
> 1.) Alle Dateien dem Projekt hinzufügen. Dabei eine Datei aus MemMang
> auswählen und aus einem DemoProjekt eine FreeRTOSConfig.h auswählen.
alle dateien von FreeRTOS selbst? die portierung von dem link aus dem 
ersten post ignorieren?

>
> 2.) in portable.h eine portmacro datei auswählen, am einfachsten durch
> hinzufügen von "#define SAM7_GCC"
unter
1
Source/portable/GCC/ARM7_AT91SAM7S
 finden sich nur sachen für die SAM7X-variante der cpu, die nicht 
pinkompatibel ist mit der SAM7S-variante.

die portierung vom link aus dem ersten post hat dafür scheinbar das 
verzeichnis
1
hardware/
 dort liegen die header-files für die cpu und zb auch eine
1
lib_AT91SAM7X256.c

wenn ich diese sachen anfange zu vermischen bekomme ich tonnenweise 
kompiler-warnings und fehler wie zb
1
warning: nested extern declaration of ‘vPreemptiveTick’
1
warning: nested extern declaration of ‘vApplicationTickHook’
usw.

>
> 3.) In port.c ist in der fkt prvSetupTimerInterrupt ein Fehler (im
> Auslieferungszustand), es fehlt beim Aufruf von AT91F_AIC_ConfigureIt
> das erste Pointer Argument "AT91C_BASE_AIC,...."
> -> hinzufügen
ok.

>
> 3.) im startup assembler code den SWI Vektor auf "vPortYieldProcessor"
> setzen
hierzu habe ich ein
1
#define vPortYieldProcessor SWI_Handler
gesehen. im startup ist dieses symbol 'weak' deklariert. reicht das 
define?

>
> 4.) prvCheckTasksWaitingTermination public machen indem das static
> entfertnt wird und der Prototyp in die task.h Datei integriert wird.
> Dies erlaubt es Tasks zu löschen, ohne auf den "Idle Task" angewiesen zu
> sein"
ok.

die portierung aus dem ersten post hat noch spezielle makros für isr's
1
define portENTER_SWITCHING_ISR()
in welchen das handling für context-switches in/aus isr's behandelt 
wird:
1
portSAVE_CONTEXT();

wie gehe ich damit um?

danke im voraus.

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.