at91sam7s and freertos 5.x

Gast
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"
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.