Forum: Mikrocontroller und Digitale Elektronik RTOS "ecos" auf Cortex-M3 portieren


von Lukas R. (mikrobroesl)


Lesenswert?

Hallo liebe Mikrocontroller-Community!

Ich bin Informatik-Student und habe für meine Bachelor-Arbeit u.a. die 
Aufgabe, das freie RTOS "ecos" auf einen ARM-Cortex-M3 zu portieren.
Mikrocontroller sind mir zwar nicht ganz fremd, aber ich bin noch nicht 
sehr bewandert in diesem Gebiet, es interessiert mich jedoch sehr, 
weshalb ich mich für meine BA und meinen weiteren Werdegang in diese 
Sache "hineinknieen" will ;-)

Bisherige Erfahrungen in diesem Bereich:
- 5 Monate hardwarenahe SW in C für einen Cortex-M3 
programmieren/optimieren (Pflicht-Praktikum)
- 1 Semester Vorlesung inkl. kleinen Praktika zur 
Architektur/Funktionsweise von Mikrocontrollern (anhand des Beispiels 
MPC555 von Freescale)

So weit, so gut...ich habe mich die letzten Tage etwas in das Thema 
eingelesen und habe nun ein paar Fragen, um zu checken, ob ich bisher 
alles richtig verstanden habe:

- es gibt drei verschiedene Port-Varianten: Plattform-Port, 
Varianten-Port, Architektur-Port; Der Plattform-Port bedeutet am 
"wenigsten" Aufwand und für ihn gilt die Voraussetzung, dass die Familie 
der Ziel-CPU von ecos bereits unterstützt wird. Wenn ich unter 
http://ecos.sourceware.org/hardware.html nachschlage, ist dort unter 
unterstützter Hardware die Cortex-M-Familie bereits gelistet. Ich kann 
also davon ausgehen, dass für meine Absichten dieser sogenannte 
Plattform-Port ausreichend ist, richtig? Wie groß schätzt ihr den 
Aufwand dafür ein?

- ich bekomme für meine Arbeit u.a. ein Eval-Board von IAR zur Verfügung 
gestellt. Spielt der Hersteller des Eval-Boards ein Rolle für mein 
Vorhaben? Die Architektur des Cortex-M3 ist doch überall identisch - 
unabhängig vom Eval-Board?

von Ralf (Gast)


Lesenswert?

> Die Architektur des Cortex-M3 ist doch überall identisch - unabhängig vom
> Eval-Board?
Kommt drauf an, wie man's sieht. Dass sich die Evalboards unterscheiden 
dürfte klar sein.
Die Controller selbst unterscheiden sich natürlich auch von Hersteller 
zu Hersteller, was on-chip-Peripherie angeht.
Am wichtigsten ist denke ich, dass M3 nicht unbedingt gleich M3 ist. So 
ist z.B. die BitBanding-Area keine Pflicht, und auch der SysTick-Timer 
etc. muss nicht unbedingt vorhanden sein - gerade der ist aber für 
RTOS-Implementierungen gedacht.
Daher würde ich schauen, ob's eine Liste der verwendeten Core-Peripherie 
gibt und das dann mit deinem Derivat vergleichen.

Ralf

von W.S. (Gast)


Lesenswert?

Ich hab da so leise Zweifel am Sinn des Ganzen. Ecos gibt es schon lange 
und jedes Jahr sehe ich auf der Embedded einen Stand von "Ecos-centric" 
oder so ähnlich, die das Stück Programm wie sauer Bier anbieten. 
Angeblich soll es ja ganz leicht auf alle möglichen Architekturen 
portierbar sein. Aber die Realität sieht ganz anders aus. Guck dir mal 
die Quellen an und du wirst das Grausen kriegen.

Eigentlich würde ich von einem portierbaren OS erwarten, daß es strikt 
in hardwareabhängige Teile und hardwareunabhängige Teile getrennt ist, 
so daß man für letzteres bloß noch den Compiler zu wechseln braucht und 
sich nur um die Anpassung der untersten hardwareabhängigen Teile kümmern 
muß oder selbige sogar innerhalb einer Prozessorfamilie 
selbstkonfigurierend sind. Doch weit gefehlt bei Ecos.

Frag dich mal, was die Welt oder du in späteren Jahren davon hast, wenn 
du es schaffst, diesen Spaghetticode auf einen bestimmten Prozessor auf 
einem bestimmten Evalboard zum Laufen zu kriegen. OK, deine 
Bachelor-Arbeit ist damit gemeistert und das ist ja wichtig für dich. 
Aber ansonsten ist das Ganze vergebliche Mühe bei Ecos. Das Einzige, was 
wirklich helfen würde, wäre Aufräumen und Ecos ganz gründlich ausmisten, 
umstrukturieren, modularisieren und so gestalten, daß man wirklich nur 
noch mit nem Compiler für ne neue Hardware daherkommen müßte und binnen 
10 Minuten 99% des BS übersetzt und lauffähig hätte. Aber das ist 
entweder eine Sysiphosarbeit oder Illusion.


W.S.

von holger (Gast)


Lesenswert?

>Ich bin Informatik-Student und habe für meine Bachelor-Arbeit u.a. die
>Aufgabe, das freie RTOS "ecos" auf einen ARM-Cortex-M3 zu portieren.

>wenn du es schaffst, diesen Spaghetticode auf einen
> bestimmten Prozessor auf
>einem bestimmten Evalboard zum Laufen zu kriegen.

Da kann ich dir nur zustimmen.

Ich würd mal über FreeRtos nachdenken.
Das ist wesentlich übersichtlicher.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ohne es bewerten zu wollen, eCOS ist nicht wirklich mit FreeRTOS 
vergleichbar. eCOS hat eine sehr umfangreiche und teilweise POSIX 
(Unix)-kompatible API für u.a. Dateisystem und TCP/IP, während FreeRTOS 
wirklich nur ein Scheduler mit elementaren Funktionen zur Kommunikation 
zwischen Tasks ist.

von MCUA (Gast)


Lesenswert?

> eCOS hat eine sehr umfangreiche und teilweise POSIX
>(Unix)-kompatible API für u.a. Dateisystem und TCP/IP,
aber das müsste alles mit C(oder Hochsprachen)-Ebene gehen.
Normal (man nicht das letzte aus dem Chip heraus will) sollte nur der 
Scheduler u. HAL (bsp Hardw.Treiber) hardw-abhängig sein.

von Wissender (Gast)


Lesenswert?

Andreas Schwarz schrieb:
> eCOS hat eine sehr umfangreiche und teilweise POSIX
> (Unix)-kompatible API für u.a. Dateisystem und TCP/IP, während FreeRTOS
> wirklich nur ein Scheduler mit elementaren Funktionen zur Kommunikation
> zwischen Tasks ist.

Das bieten NuttX und ChibiOS auch.

von ./. (Gast)


Lesenswert?

Da hast du was falsch verstanden. Es gibt keine "Ports", das sind HALs. 
Die Trennung ist da, um Code wieder verwenden zu können (z.B. Code für 
alle ARMs, Code für bestimmte Familien von ARM, etc). Du kannst dir also 
die HALs, die du Portieren bzw. Anpassen muss nicht aussuchen, sondern 
das hängt davon ab, was es schon gibt.
Die Architecture HAL wäre wahrscheinlich ARM, Variant HAL M3 und 
Platform HAL ein bestimmtes Board.
Was Hersteller gern verschieden machen ist die ganze Peripherie um den 
Core ringsherum, aber gerade die will man ja benutzen. Selbst wenn so 
etwas bei deiner Arbeit ausgeschlossen werden würde, kommt ja noch ggf. 
MMU, DMA, etc dazu.
Bei ARM gibt es auch gern einige Sachen die optional oder 
"Implementation specific" deklariert sind, da kann dann jeder Hersteller 
wie er möchte.

Ich habe schon mal eCos (mit) portiert und Spass macht das nicht 
(interessant war es schon). Ich muss meinen Vorrednern Recht geben, der 
Code ist nicht schön. Ebenfalls sehe ich die Sinnhaftigkeit des 
Unterfangens nicht. Wenn das Ganze nicht total für die Ablage P werden 
soll, würde ich dir Raten dich frühzeitig auf der eCos-Developer-Liste 
zu melden, damit deine Arbeit auch im Repository landet.

Deine Vorkenntnisse klingen zwar ordentlich, aber ein Bild kann man sich 
davon nicht machen. Es ist ja ein Unterschied ob man 5 Montage lang je 
Woche 1h Praktikum hat oder 8h. Bei letzterem würden die Zeichen sogar 
auf Erfolg stehen.
Ich sehe jedoch ein Zeitproblem, ich würde daher mal abklären, wie es 
sich verhält, wenn deine Zeit nicht reicht. Manchmal kann man auch schon 
ein wenig entwickeln und später erst die Arbeit anmelden; somit muss man 
nicht in die Verlängerung weil die Aufgabe (vom Umfang) explodiert.
Hast du denn einen Betreuer bzw. Experten in der Nähe, den du Fragen 
kannst, falls du Probleme hast?

Viel Erfolg beim Abschluss

von Lukas R. (mikrobroesl)


Lesenswert?

Vielen Dank für die zahlreichen Antworten!
Daran, dass ecos portiert werden soll, gibt es wohl nicht mehr viel zu 
rütteln – denn das ist die Kernaufgabe der Bachelorthesis.

Mal sehen, ob ich das nun richtig interpretiere:
Ich nutze ein Derivat eines FM3-Mikrocontroller von Fujitsu auf einem 
IAR-Evalboard. Dann würde sich die Situation folgendermaßen darstellen:

ARM-Architektur --> nämlich Cortex-M3 --> auf einem IAR-Evalboard

…da laut der ecos-Website Cortex-M3 von ecos unterstützt wird, würde ich 
ein „Platform-HAL“ entwickeln müssen, richtig?

Wegen dem angesprochenen Praktikum: es waren 5 „volle“ Monate, mit 40 
Std. pro Woche :-)
Und ja, ich werde bei der Bachelorarbeit seitens einer Firma betreut, 
falls ich Probleme haben sollte.

von holger (Gast)


Lesenswert?

>Und ja, ich werde bei der Bachelorarbeit seitens einer Firma betreut,
>falls ich Probleme haben sollte.

Darauf würde ich nichts geben. Überleg dir das besser noch mal.

Aber ist ja dein Leben das du dir versaust wenn du es nicht packst.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

holger schrieb:
> Aber ist ja dein Leben das du dir versaust wenn du es nicht packst.

Blödsinn.

von Lukas R. (mikrobroesl)


Lesenswert?

Mhh, langsam bekomme ich ein unwohles Gefühl bei der Sache?
Ist diese Aufgabe wirklich so schlimm/anspruchsvoll? Wieso würdest du 
darauf nix geben, Holger? :/

von holger (Gast)


Lesenswert?

>Ist diese Aufgabe wirklich so schlimm/anspruchsvoll?

Hast du überhaupt schon mal einen ARM programmiert?

> Wieso würdest du darauf nix geben, Holger? :/

Dir werden dir wohl kaum einen Personal Trainer zur Seite
stellen. Im Endeffekt hörst du nur "keine Zeit", "weiss ich auch nicht",
"komm Morgen noch mal wieder". Das ist die Realität.

von Lukas R. (mikrobroesl)


Lesenswert?

Wie gesagt, ich hab im Pflichtpraktikum die meiste Zeit hardwarenahe 
Software für einen Cortex-M3 mitentwickelt.
Mit OS für Mikrocontroller habe ich bisher keine Erfahrung, geschweige 
denn mit deren Portierung.
Aber es ist ja nicht so, dass mir alles fremd ist, als 
Informatik-Student sind mir die Grundkenntnisse natürlich geläufig.

Ich meine, Professor & Firma machen sich doch auch ihre Gedanken, was 
man als Bachelorarbeit "anbieten" kann, oder sehe ich das falsch? :/

von Hans (Gast)


Lesenswert?

eCos habe ich bisher nur kurz angeschaut und für den Zweck den ich 
damals verfolgte als nicht passend empfunden...

naja wenn du schon so was machen willst, warum nicht gleich den Job 
übernehmen?

http://wiki.netbsd.org/projects/project/mmu-less/

Wobei das zugegebenermaßen vom Ausmaß her eher in Richtung Diplomarbeit 
geht...

73

von Lukas R. (mikrobroesl)


Lesenswert?

Mich würde grade primär interessieren, wo ihr speziell die Schwierigkeit 
in dieser Aufgabe seht?
Okay, ich hab nun mehrmals gelesen, dass der ecos-Code wohl nicht sehr 
leserlich zu sein scheint, aber wenn ich nun richtig in der Annahme 
liege, dass die ARM-Cortex-M3-Architektur von ecos unterstützt wird, 
dann dürfte ja ein sogenannter Platform-Port/Platform-HAL reichen? 
...was ja bekanntermaßen um einges weniger Aufwand ist, als ein 
Varianten-Port oder Architektur-Port.
Oder übersehe ich hier irgendwelche grundlegenden Sachen, die das alles 
so schwer machen?
Bitte klärt mich auf :-)

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.