mikrocontroller.net

Forum: PC-Programmierung Hilfe zu freeRTOS


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

ich bin gerade dabei das freeRTOS unter Windows zum laufen zu bringen.
Dazu habe ich unter Microsoft Visual Studio C++ 2008 ein win32 
(Konsolenanwendung) Projekt angelegt. Leider funktioniert das ganze 
überhaupt nicht. Es fehlen da einige Headerdateien, wie zum Beispiel die 
i86.h usw. Wer von euch hat schonmal das freeRTOS unter Windows zum 
laufen gebracht? Für jede Hilfe bin ich dankbar.

Autor: Hans (Gast)
Datum:
Angehängte Dateien:
  • PC.rar (34,5 KB, 69 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Dieses Projekt kann man nicht mit Microsoft Visual Studio 6.0 C++ 
öffnen.
Kann mir dazu jemand helfen?

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner hier der sich mit dem freeRTOS auskennt?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Dieses Projekt kann man nicht mit Microsoft Visual Studio 6.0 C++
> öffnen.
> Kann mir dazu jemand helfen?



Helfen direkt nicht.
Aber das Projekt besteht aus gerade mal 4 *.c Dateien.
Was hindert dich daran ein neues Projekt anzulegen, die 4 Dateien ins 
Projekt einzufügen und loszulegen.
Irgendwann musst du sowieso lernen, wie man mit FreeRTOS ein neues 
Projekt von 0 auf anfängt, welche Libraries wo eingetragen werden müssen 
etc.


Ich muss jetzt allerdings gestehen, dass ich ein wenig verwirrt bin. Ich 
dachte immer freeRTOS sei ein Betriebssystem für Embedded Devices. Das 
das auch unter Windows läuft wusste ich gar nicht.

Autor: Thomas K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

das wird so nicht gehen. freeRTOS ist ein Betriebssystem. Wie willst du 
es unter Windows laufen lassen? Auf freeRTOS-Webseite sind Hinweise zur 
Inbetriebnahme auf einem x86. Die verfügbaren Ports laufen nur im Real 
Mode.

Gruss
th.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

In der main.c Datei gibt es zahlreiche Aufrufe von include Files.
Was ist da mit /* Demo file headers. */ genau gemeint.
Brauche ich diese eigentlich?

Wird für das freeRTOS nur diese Headerdateien verwendet?

/* Scheduler include files. */
#include "FreeRTOS.h"
#include "task.h"

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Danke für die Antwort.
>
> In der main.c Datei gibt es zahlreiche Aufrufe von include Files.
> Was ist da mit /* Demo file headers. */ genau gemeint.
> Brauche ich diese eigentlich?

Wenn du sie nicht brauchen würdest, würden sie wohl nicht includiert 
werden :-)

> Wird für das freeRTOS nur diese Headerdateien verwendet?

Wie wäre es, wenn du erst mal jeden verfügbaren Text-Fetzen, den du im 
Web finden kannst, lesen würdest.

Ich weiß nicht, welche Header Files vom freeRTOS wofür gebraucht werden. 
Aber ich bin mir ziemlich sicher, dass das alles irgendwo dokumentiert 
ist. Und wenn nicht, dann kann man immer noch hergehen und die 
entsprechenden Header Files bei sich auf dem Rechner suchen (die müssen 
ja irgendwo in der Distribution sein), in einem Text-Editor aufmachen 
und reinschauen was da so alles drinnen ist.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es eventuell im Internet eine deutsche Dokumentation dazu?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Gibt es eventuell im Internet eine deutsche Dokumentation dazu?

Ich bin raus.

Ein Software Entwickler der Angst vor englischer Doku hat, hat in meinen 
Augen von vorneherein verloren.
Lies die englische Doku. Wörter die du nicht verstehst kannst du in 
einem Wörterbuch nachschlagen oder zur Not auch hier erfragen wenn der 
Sinn nicht aus dem Zusammenhang klar wird.
Und komm mir nicht mit: Ich kann kein Englisch. Technische Dokus sind 
nicht auf dem Niveau eines Shakespeare geschrieben.
Wenn Japaner, die des Englischen kaum mächtig sind (und eine völlig 
andere Denkweise in Bezug auf Sprache haben), es schaffen mit engl. 
Dokus klar zu kommen, dann wirst du das auch schaffen. Man muss nur 
anfangen.

Die Sprache der Informatik ist nun mal Englisch.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mal nun den C-Code von freeRTOS auf meine Applikation portiert.
Ich verstehe nicht, warum in der Task die LED nun nicht angeht.
Muss ich mein Initialisieren in der main noch was beachten?

[c]

void vApplicationStackOverflowHook( void )
{
/* This will be called if a task overflows its stack.  pxCurrentTCB
can be inspected to see which is the offending task. */
  for( ;; );
}


void vPrintTask( void* pvParameters );

void main(void)
{
 ...

         xTaskCreate( vPrintTask , "print " , 128 , NULL, 2 , NULL );

  vTaskStartScheduler();

  while (1)
  {
    /*msleep(10);*/
    /*seven_seg_ctrl( read_port("P98"));*/
  }
}

void vPrintTask( void* pvParameters )
{
  while ( 1 )
  {
    led_on();
  }

}

[c]

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas K schrieb:

> das wird so nicht gehen. freeRTOS ist ein Betriebssystem. Wie willst du
> es unter Windows laufen lassen?

Weshalb sollte das nicht möglich sein? Unter "Contributed Ports /
Simulators" finden sich Versionen für Win32 und Posix/Linux, wohl um mit
der Nebenläufigkeit von freeRTOS-Programmierung üben zu können ohne den
PC verlassen zu müssen.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mal nun den C-Code von freeRTOS auf meine Applikation portiert.
Ich verstehe nicht, warum in der Task die LED nun nicht angeht.
Muss ich mein Initialisieren in der main noch was beachten?

void vApplicationStackOverflowHook( void )
{
/* This will be called if a task overflows its stack.  pxCurrentTCB
can be inspected to see which is the offending task. */
  for( ;; );
}


void vPrintTask( void* pvParameters );

void main(void)
{
 ...

  xTaskCreate( vPrintTask , "print " , 128 , NULL, 2 , NULL );

  vTaskStartScheduler();

  while (1)
  {
    /*msleep(10);*/
    /*seven_seg_ctrl( read_port("P98"));*/
  }
}

void vPrintTask( void* pvParameters )
{
  while ( 1 )
  {
    led_on();
  }

}


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe nicht, warum der Task nicht ausgeführt wird. Er müsste doch 
eigentlich laufen. Wie könnte man nach prüfen ob der Task läuft?

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Compiler zeigt eine Warnung:
warning W2291: argument type mismatch const signed char *const (char *)

Verwendung der Funktion:
xTaskCreate( vTask ,"task" , 128 , NULL, 2 , NULL )

Funktionsdeklaration:
xTaskCreate( vBlockingQueueConsumer, ( signed char * ) "QConsB1", blckqSTACK_SIZE, ( void * ) pxQueueParameters1, uxPriority, NULL );

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreib deine Task Funktion mal mit den Makros
portTASK_FUNCTION( vPrintTask, pvParameters );


....


portTASK_FUNCTION( vPrintTask, pvParameters )
{
   for ...
}

Sieht so aus, als ob da jemand die ursprüngliche Funktionssignatur der 
Taskfunktion geändert hat.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Karl für deine Unterstützung. Die Task Funktion mit den Makros 
habe ich bereits umgesetzt. Tut immer noch nicht.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Recht es prinzipiell wenn ich in der main nur diese beiden Funktionen 
ausführe?

Funktion 1: xTaskCreate( vPrintTask , "print " , 128 , NULL, 2 , NULL );

Funktion 2: vTaskStartScheduler();

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Recht es prinzipiell wenn ich in der main nur diese beiden Funktionen
> ausführe?
>
> Funktion 1: xTaskCreate( vPrintTask , "print " , 128 , NULL, 2 , NULL );
>
> Funktion 2: vTaskStartScheduler();

Keine Ahnung, ich kenne freeRTOS nicht. Da wirst du die Doku lesen 
müssen.

Zur Not kannst du ja auch mal die FreeRTOS Library in einer 
Debug-Version erstellen und mit dem Debugger mal nachsehen was 
vTaskStartScheduler so alles treibt :-)

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das ist ein echter Krampf. Ich möchte eigentlich nur freeRTOS auf 
meinem PC (Mikrosoft Visual Studio C++) zum laufen bringen. Entweder der 
Compiler meckert, weil die C-Dateien nicht compiliert werden können und 
zum anderen fehlt hier und da eine Datei. Das nervt echt. Hat von euch 
jemand schonmal das freeRTOS aus einem PC zum laufen gebracht?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Entweder der Compiler meckert, weil die C-Dateien nicht
> compiliert werden können

Wie denn genau?

> und zum anderen fehlt hier und da eine Datei.

Und das hat nichts mit dem ersten Problem zu tun?!

Autor: Hans (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Im Anhang befinden sich die Fehlermeldungen vom Compiler.

Autor: User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorn beginnend..

> fatal error C1083: Datei (Include) kann nicht geöffnet werden:
> "partest.h": No such file or directory list

..beheben, dann make clean, dann weitersehen :-)

HTH

Autor: Moin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haben Sie möglicherweise vergessen, im Quellcode "#include "stdafx.h"" 
einzufügen?

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich gebs nun auf. Schade, dass das Projekt von freeRTOS mit Visual 
Studio 6.0 C++ nicht öffnen lässt.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das weiter oben anghängte "Projekt" ist mit irgendeiner Borland-C++-IDE 
erstellt worden, daher ist es nicht weiter verwunderlich, daß sich das 
"Projekt" nicht mit MSVC verarbeiten lässt.

Obendrein scheint das "Projekt" unvollständig zu sein.

Frage an den Threadersteller: Wo kommt das Zeug her?

Autor: gascht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
er hats doch aufgegeben ^^
also will er auch nix programmieren

zumal es kurios ist das er LED() aufrufen will
und das auf einem PC  unter visual studio

Autor: Karlo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe error die ich nicht verstanden habe...ich bitte um eure hilfe
./src/main.c:98: warning: implicit declaration of function 'xQueueSend'
wie geht diese delaration!!!!!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karlo schrieb:
> ich habe error die ich nicht verstanden habe...ich bitte um eure hilfe
> ./src/main.c:98: warning: implicit declaration of function 'xQueueSend'
> wie geht diese delaration!!!!!

So wie es in der API-Referenz von FreeRTOS dokumentiert ist.

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karlo schrieb:
> ./src/main.c:98: warning: implicit declaration of function 'xQueueSend'
>
> wie geht diese delaration

dann fehlt einfach
#include <queue.h>

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.