Ich habe mir neulich ein PIC-Entwicklungsboard zusammengefummelt mit einem PIC18F458, RS232, CAN und nem T6963 Grafikdisplay. Ich möchte mich jetzt ganz gerne an die Thematik RTOS rantasten. Wer hat schon erfahrungen damit und kann mir was empfehlen? Gruß Stephan
hallo Stephan wozu brauchst Du denn ein RTOS ? Schreib Deine zeitkritischen Aufgaben mit Interrupt, dann hast Dein Realtime-System. Oder beschreib etwas näher, was der klein Müppe alles tun soll. Gerhard
Hallo Gerhard, mir geht es in erster Linie nicht um Zeitkritische Aufgaben, sondern ich möchte mich nur in die Thematik Betriebssysteme einarbeiten. Für ein späteres Projekt (Auto-Bordcomputer) möchte ich in diesem Bereich fit sein, da das RTOS ja auch erlaubt, sein Programm in mehrere separate Tasks zu zerlegen. Mfg Stephan
"RS232, CAN und nem T6963 Grafikdisplay" Hast Du denn das alles schon richtig zum Laufen gebracht. Vorher würde ich nicht mit RTOS anfangen, d.h. dazu sollte man schon einige Programmiererfahrungen gemacht haben. Allerdings ist der PIC für ein RTOS äüßerst ungünstig (segmentierter RAM, Hardwarestack), würde daher bezweifeln, daß es überhaupt eins gibt. RTOS habe ich bisher nur für den 8015 oder AVR gesehen, da diese die nötigen Stackmanipulationen und eine lineare Speicheradressierung (bis 64kB) erlauben. Größere Programme zerlegt man immer in mehrere Tasks, dazu brauchts aber doch noch lange kein RTOS. Peter
http://www.freertos.org/ da steht auch was von nem PIC18 Port... habe ich nicht getestet aber vielleicht hilfts dir ja ;) MfG, Dominik S. Herwald http://www.dsh-elektronik.de/
Hallo bei den kleinen uC muß man unterscheiden in die "PIC"-ähnlichen und in die Prozessor-ähnlichen. Ich stimme mit Peter überein, daß es fraglich ist, ob man mit PIC-ähnlichen uC ein RTOS erarbeiten kann. Wenn, dann sind wohl die neueren PIC-Generation PIC18 ( die sind nämlich NICHT segmentiert !!!!) oder gleich ein PIC30 empfehlenswert, da diese nicht nur mehr Befehle sondern auch mehr RAM haben. Aber für so alte Haudegen-uC wie 8051er u.ä. gibts sowas wahrscheinlich schon. Ansonsten, wenn denn ein PIC sein soll, ist dies sicher machbar - wie gesagt eben mit typen, die mehr Speicher haben. Interrsant ist das Thema allmal - zumindest zu Lehrzwecken/Verständnis-Zwecken. Gerhard
"RS232, CAN und nem T6963 Grafikdisplay" Hast Du denn das alles schon richtig zum Laufen gebracht. ->Mit CAN habe ich mich noch nicht beschäftigt; der Rest läuft einwandfrei. Ich habe auch noch ein I2C-Interface vergessen (z.B. für LM75-Temperatursensor). Programmiererfahrung mit diesen Dingen habe ich. (CCS-C Compiler) RTOSe gibt es schon mehrere für die PIC18-Serie (Salvo, MicroC/OS-II,...,), aber die sind (größtenteils) leider nicht frei verfügbar. Wie ich schon geschrieben habe möchte ich später mit embedded Linux arbeiten, aber dafür habe ich noch nicht die passende Hardware (zu erträglichen Preisen) gefunden. Gruß Stephan
Hallo nochmal! Ich habe eben mein MPLAB und den C18-Compiler so eingerichtet, das ich mit dem freeRTOS arbeiten kann :) Die Demoapplikationen für den 18F452 lassen sich erfolgreich kompilieren. Leider habe ich aber einen 18F458 und benötige ein anderes Linker-Script. Das Demo-Script sieht wie folgt aus: ------------------------------------------------------- // $Id: 18f452.lkr,v 1.4 2003/03/13 05:02:23 sealep Exp $ // File: 18f452.lkr // Sample linker script for the PIC18F452 processor LIBPATH . FILES c018i.o FILES clib.lib FILES p18f452.lib CODEPAGE NAME=vectors START=0x0 END=0x39 PROTECTED CODEPAGE NAME=page START=0x3A END=0x7FFF CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED ACCESSBANK NAME=accessram START=0x0 END=0x7F DATABANK NAME=BIG_BLOCK START=0x80 END=0x5FF ACCESSBANK NAME=accesssfr START=0xF80 END=0xFFF PROTECTED SECTION NAME=CONFIG ROM=config STACK SIZE=0x60 RAM=BIG_BLOCK -------------------------------------------------------------- Ich muss jetzt das Script so umändern, das es für meinen 458er geht. Nur leider habe ich von den meisten Sachen, angefangen bei den "vectors" (fast) keine Ahnung. Auch das Datenblatt brachte mich nicht weiter. Ich wäre also für jeden Tip sehr dankbar! Mfg Stephan
Hallo Stephanw, auf den ersten Blick sieht das Linkerskript wie ein normales Linkerskript aus, das mit dem C18-Compiler mitgeliefert wird. Ich nehme an das Dein Linkerskript aber vom freeRTOS stammt oder!? An Deiner Stelle würde ich die C18-Compiler Linkerskripte für den PIC18F452 und für den PIC18F458 in Dein Arbeitsverzeichnis kopieren. Analysiere dann die Unterschiede zwischen den beiden 18F452-Skripten und versuche die Unterschiede korrekt in das 18F458 Skript einzuarbeiten! vectors: steht für den Speicherbereich in den die Goto-Befehle stehen, mit deren Hilfe die Interruptserviceroutinen angesprungen werden. page: sollte der durch die Application nutzbare Flash sein. idlocs: steht für einen Speicherbereich in dem man Anwendungsspezifische Daten hinterlegen kann (z.B. Seriennummer). devid: enthält eine Kennung über die festgestellt werden kann, um welchen Mikrocontroller es sich handelt. Wichtig z.B. bei der Programmierung über die ICD2 Schnittstelle. eedata: steht für den internen nichtflüchtigen EEPROM. (siehe Datenblatt) Diese Speicherbereich sind äußerst hardwarenah, und deshalb kaum zu verändern(außer Grenze zwischen vectors und page; wenn kein oder nur eine Interruptquelle benutzt wird). Die folgenden Abschnitte definieren die Verwendung des RAM's. DATABANK steht dabei für Speicherbereiche die über ein RAM-Switching angesprochen werden müssen. Dieses Switching ist bei Variablen in einer ACCESSBANK nicht notwendig. Allerdings ist die Größe der ACCESSBANK stark eingeschränkt. In einem C-Linkerscript ist weiterhin die Definition eines Softwarestacks notwendig. Die Parameterübergabe bei Funktionsaufrufen erfolgt über diesen Stack. In den Hardwarestack werden alle notwendigen Register gesichert, wenn ein Interrupt aufgerufen wird. Weitere Informationen findest Du im "MPASM User's Guide" von Microchip, das kann man von der Microchip Homepage herunterladen. Suche in diesem PDF-File den Abschnitt "MPLINK Linker Scripts". Eine Seitezahl nenne ich lieber nicht, da mein "MPASM User's Guide" nicht das aktuellste ist. Tschau Sven!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.