Liebe Community, ich arbeite mit einem Cortex M1. (Eval Board "Actel M1A3PL") Und habe jetzt vor ein RTOS auf diesen Controller zu bringen. Hat jemand erfahrungen? Ich werde uC/OS austesten (Port für den M1 verfügbar). Würde aber auch gerne noch andere RTOS ausprobieren. Meine Recherchen im Internet sind fast ergebnislos verlaufen. Es gibt praktisch von keinem bekannten RTOS ports für den M1. Vielleicht kennt ja einer doch noch was. Oder hat mal selber ein RTOS auf diesen Controller portiert. Alle anregungen sind willkommen! :)
Hallo, schau mal dort: http://forums.arm.com/index.php?showtopic=6402 Der M1 ist wohl kaum als MCU verbreitet. Grüße.
Hast du eine konkrete Anwendung ? Der M1 ist wohl mehr oder weniger zum M1 kompatibel.
RT-Fan schrieb:
> Der M1 ist wohl mehr oder weniger zum M1 kompatibel.
Hoffentlich. ;-)
Nee, es geht mir auch nur darum Betriebssysteme auf dem Mikrocontroller zu testen und zu bewerten. Daraus resultiert dann die Feststellung für was für Andwendungen dieser geeignet ist.
> > Der M1 ist wohl mehr oder weniger zum M1 kompatibel. > Hoffentlich. ;-) M3 g
Auf dem M3 läuft auf jeden Fal FreeRTOS und OpenRTOS. Vltl klappts beim M1 trotzdem, weil es ja theoretisch "kompatibel" sein sollte. MfG
Jupp das es Theoretisch gehen sollte lese ich öfter. Mhh schonmal einer was mit uCLinux gemacht? Das soll angeblich support für den M1 haben.
blup schrieb: > Vltl klappts beim M1 trotzdem, weil es ja theoretisch "kompatibel" sein > sollte. Da der M1 nicht alle Befehle des M3 kennt, beispielsweise keine Division, wird es schon erforderlich sein, dass der Compiler den M1 kennt. Auf M3 stellen und hoffen wird nicht funktionieren. Das Maschinenmodell, also hauptsächlich SysTick und NVIC, wird man konkret vergleichen müssen, aber wahrscheinlich hat ARM hier das Rad nicht neu erfunden.
Kann ich denn Code der für den Arm7-m geschrieben wurde auf dem M1, ohne einschränkungen, ausführen? Der M1/3 ist ja eine Weiterentwicklung des Arm7, so wie ich das verstehe.
ARM-Code = der klassische in 32bit codierte ARM Befehlssatz. Thumb/Thumb2-Code = der modernere in 16bit codierte Befehlessatz. ARM7TDMI kennt sowohl ARM-Code als auch Thumb-Code, aber nur mit dem "T" in ARM7TDMI, ohne T gibt's nur ARM-Code. Thumb-Code von ARM7 wird auf den Cortex Cores teilweise laufen, ARM-Code überhaupt nicht. Teilweise deshalb, weil Thumb-Code nicht ganz selbständig ist, ganz ohne etwas ARM-Code geht es da nicht. Erst die Cortex Cores kommen ganz ohne ARM-Code aus. Kurz: nein.
Bunix schrieb: > Kann ich denn Code der für den Arm7-m geschrieben wurde auf dem M1, ohne > einschränkungen, ausführen? Was meinst Du mit "für den Arm7-m"? Einen ARM7 Prozessor (Architektur v4T) oder einen Cortex-M3 (Architektur v7-M)? Cortex-M1 und -M0 implementieren die Architektur v6-M, bei der es sich um eine Untermenge der Architektur des Cortex-M3 handelt. Damit fallen auch einige Instruktionen weg. Die meisten davon sind 32bit Thumb-2 Befehle. Das sollte allerdings nicht das größte Problem sein, da das in den meisten Fällen vom Compiler gerichtet wird. Anders sieht es mit dem Programmiermodell aus. Ich weiß leider nicht, welche speziellen Eigenschaften des Cortex-M3 in allen möglichen RTOS verwendet werden. Die Liste der Unterschiede zwischen v6-M und v7-M ist im Architecture Reference Manual zu finden (Appendix D), das allerdings zur Zeit leider nicht öffentlich verfügbar ist. > Der M1/3 ist ja eine Weiterentwicklung des Arm7, so wie ich das > verstehe. Was das Marketing angeht schon. Technisch eher nicht. Gruß Marcus http://www.doulos.com/arm/
Wenn du schon ucOS-II testen willst, dann nimm doch gleich embOS von Segger. Das ist technisch besser (oder wieso glaubst du verkauft Micrium Produkte von Segger unter ihrem Label ;-) ), schneller und du hast deutschen Support. Ich finde zwar auf die Schnelle auf deren Webseite kein Port dafür, aber ruf bei den Jungs einfach mal an oder mail denen. Mit denen kann man gut reden und falls es noch keine Portierung gibt, machen sie es vielleicht eben.
Die Vectoren sind identisch und der context-switch sollte auf dem M1 sowie auf dem M3 identisch sein. Stell deinen Kompiler auf M1 und leier es mal durch.
Der Context Switch ist aber in Assembler geschrieben, je nachdem welche Befehle dort benutzt werden, die es auf dem CortexM1 nicht gibt, müsste man dort noch was anpassen.
Also, ich versuche jetzt aktuell µC/OS-II auf dem M1 zum laufen zu bringen. Es gibt einen Port dafür. Leider provided micrium keinerlei Tutorials. Und einfach kompilieren lässt sich dieser Port leider nicht. Da scheint noch einiges zu fehlen. Ich habe das MicroC/OS Buch, von dem alle so schwärmen. Kann das aber nicht nachvollziehen. Es geht darin um die Programmierung für µC/OS, nicht aber wie man eine Version davon auf einem Controller zum laufen bringt. (Das Kapitel über Portierung von dem OS ist nicht wirklich ausführlich.) Angeblich "Compilieren", "Flashen", "Fertig". Nicht wirklich. embOS hatte ich mir auch mal (oberflächlich) angeschaut. Sieht vielversprechend aus, es gibt allerdings noch keinen M1 Port. Und der M3 funktioniert nicht, da Befehle vom Thumb2 Instruction Set verwendet werden, die der M1 nicht kann. (Der hat ja praktisch nur Thumb2-Light implementiert) Die Version für den ARM7 ist von der Architektur wohl zuweit weg. (Der M1 basiert auf dem ARM6-M) Ich fände es schön wenn ich µC/OS zum laufen bekomme, da es dafür aber keine Community zu geben scheint, und Micrium nicht mal ein Support Forum hat (LOL) wird das etwas arbeit werden. Ich bin für jeden Hinweis (Tutorials o.ä.) dankbar! Google gibt leider nicht viel her. :(
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.