HI, der Titel sagt schon vieles. Wann soll ein Cortex und wann ein Cortex M genommen werden? Grüße Rene
>der Titel sagt schon vieles. Der sagt gar nichts. >Wann soll ein Cortex und wann ein Cortex M genommen werden? Sag was du machen willst. Dann kann man dir vieleicht einen Tip geben. Aber das ganze hört sich so schon nach Troll an.
Markus Müller schrieb: > Ein "Cortex" ohne zusätzlichen Buchstabe gibt es nicht. Oh doch, den gibts. Und jeder hat einen, wenngleich von sehr unterschiedlicher Qualität. Und der ist für den Einsatz eines Cortex M sogar unabdingbar erforderlich.
Regera schrieb: > cortex a7 Ist ungefähr so, wie wenn du einen PC mit einem 8-bit-Mikrorechner vergleichen würdest. Der 8-Bitter kann nicht allzu viel, ist aber einfach zu beherrschen. Der PC kann viel mehr, aber man programmiert ihn nicht mehr komplett „zu Fuß“, sondern beschafft sich ein Betriebssystem und programmiert eine Anwendung, die dann in diesem Betriebssystem läuft.
Danke bisher. Bisher habe ich verstanden, dass ich für einen Cortex M vielleicht ein RTOS einsetze und für ein Cortex (A7) z.B. ein Linux. Aber wann entscheide ich mich für was. was sind typische Kriterien? Beispiel: Eine Anlage mit 10 verteilten Steuerungen. Kommunikation untereinander soll über z.b. TCP/IP erfolgen. Es werden einige IO genutzt. was bringt mir die eine oder andere Variante für Vor- und Nachteile? danke RENE
Die Frage ist, ob du einen „großen“ Computer oder eher einen Controller brauchst (single-chip computer). Cortex-A ist ersteres, Raspberry Pi, Mobiltelefon, Tablet computer. Cortex-M (mit verschiedenen Nummern dahinter, die die Ausbaustufe bezeichnen und damit auch die Komplexität) sind Controller, bei denen man alle wesentlichen Dinge auf einem Chip an Bord hat.
Um die Frage auch zu beantworten statt in das Rumgebashe einzustimmen: Es gibt Cortex als '-A', '-R' und eben der '-M' Variante. http://www.arm.com/products/processors/index.php Das was die meisten benutzten ist der M-Typ, der als einsatz in einem Controller ausgelegt ist. Ich "vermute" du interessierst dich eher für die Frage ob du M0(+), M2, M3, M4 nehmen solltest. DAS hängt komplett von deinem Projekt ab. >Man unterscheidet zwischen Prozessor und Controller. Das Cortex Design >beschreibt einen Prozessor, der dann von Lizennehmern erst zum Controller >gemacht wird
Cortex-M: Microcontroller, alle mit internem Flash, Nummer repräsentiert die Leistungsfähigkeit (einzige Ausnahme: M1, Softcore für FPGA) Cortex-A: Application Processor, alle ohne Flash, macht bei Taktfrequenzen jenseits der 400MHz nicht mehr wirklich Sinn, alle mit SDRAM-Controller Cortex-R: Real-Time Microcotroller, für harte Echtzeit, bisher nur von TI für sicherheitskritische Anwendungen, alle mit Flash.
Neu wird es den M7 auch geben, der wird in einem halben Jahr im STM32F7xx verbaut sein. Beitrag "Ankündigung: STM32F7xx mit Cortex-M7"
Maude schrieb: > Es gibt Cortex als '-A', '-R' und eben der '-M' Variante. > http://www.arm.com/products/processors/index.php > Das was die meisten benutzten ist der M-Typ, der als einsatz in einem > Controller ausgelegt ist. Erster Teil stimmt, zweiter wohl eher nicht. Es sei denn du beschränkst dich auf Hobby und selber bauen. Aber gerade durch die Vielzahl an single board computer, sind Cortex A auch im Hobby bereich anzutreffen und in der Industrie sowieso. Auf jeden Fall wäre es auch für mich interessant zu wissen wo die Grenze zwischen den beiden liegt, was den Einsatz des M oder A bevorzugen würde. USB Anbindung? Ethernet? Irgendwo müsste eine Schwelle erreicht sein, wo es sich lohnt auf den Cortex A zu setzen, nur wo?
operator schrieb: > wo die Grenze zwischen den beiden liegt, was den Einsatz des M oder A > bevorzugen würde. Ab da, wo du wirklich mehrere 100 MHz Takt und viele Megabyte RAM brauchst, sodass sich der Aufwand lohnt, den ganzen Krempel da dran zu fummeln und ein Betriebssystem zu portieren. Von der Peripherie (USB und so) hängt das weniger ab, sondern mehr von den Applikationen, die drauf laufen sollen.
operator schrieb: > Irgendwo müsste eine Schwelle erreicht sein, wo > es sich lohnt auf den Cortex A zu setzen, nur wo? Von der Leistung her keineswegs, sondern von der Anwendung. Beispiel Maschinensteuerung, erste Wahl wäre Cortex M0 oder M3 ohne Betriebssystem, mit vielen Interrupts und Echtzeit. Kommt für Kommunikation USB oder Ethernet dazu, dann M3 mit diesen Schnittstellen. Wird mehr Leistung benötigt z.B. digitale Regelung und Filter M4 mit FPU. Ist es sicherheitskritisch dann M7 mit Lockstep. Soll nun eine GUI dazu kommen, ist die Schwelle erreicht. Es kann sinnvoll sein, einen M4 mit LCD/Touch-Controller zu verwenden. Meist ist es jetzt aber sinnvoll, ein Betriebssystem zu nehmen, und dafür ist A5 mit MMU der Einstieg. Oder umgekehrt: die GUI kommt zuerst und man hat Cortex A genommen. Dann versucht man von dessen GPIO die Steuerung zu machen. Das funktioniert aber nur begrenzt, wegen Multitasking ist I/O nicht schnell genug oder nicht echtzeitfähig. Dann ist die Lösung meist ein Touchscreen mit Cortex A und ein Cortex M für die Steuerung, verbunden über USB. Das hat noch den Vorteil, dass es nicht so teuer wird, wenn hier nur der Cortex M abraucht. Übrigens haben A5, R4, M4 bzw. A7, R5, M7 annähernd die gleiche Leistung.
Ein Cortex A ist nicht als Upgrade eines Cortex M zu verstehen. Das sind verschiedene Anwendungsgebiete. Wenn man sich in Regionen bewegt, in denen man zwar die lowlevel I/O eines Cortex M3 braucht, aber beispielsweise die Rechenleistung eines Cortex A15, dann nimmt man schlicht beide. Der A15 mit Betriebssystem rechnet und der M3 mit RTOS oder ganz ohne steuert. So findet man in SoCs für Smartphones und Tablets neben den Qualcomm Krait oder Cortex A Cores fürs eigentliche System üblicherweise noch mindestens einen zusätzlichen Core aus dem Controller-Segment, mit Mobilfunk deren zwei. In den NVidia Tegras ist das beispielsweise ein ARM7.
:
Bearbeitet durch User
Wie ist denn die Inbetriebnahme von komplexeren Peripherieschnittstellen bei einem Cortex M gelöst? Gibt es da fertige libraries? Und wenn ja, wie gut sind diese kompatibel mit einem RTOS? Ich habe bisher nur erfahrungen mit einem Cortex-A. Da ist zwar die Hardwarebeschaltung aufwendiger, da Speicher extern hinzu kommt, man wird aber dadurch belohnt, dass dieser in ausreichender Fülle vorhanden ist. Hinzu kommt eine MMU (welche bei Cortex M meines wissens fehlt). Wenn man danach noch z.B. ein Linux portiert hat, ist der rest praktisch erledigt. Ethernet PHYs werden vom Kernel erkannt, USB ist plug and play, in der Entwicklung sind sachen wie tftpboot und nfs möglich, und so weiter. Wenn ich dann den Speicherplatz von Cortex-M Controller anschaue, kann ich mir nicht vorstellen, wie die ganzen Treiber/Stack + RTOS + eigenes Programm darauf passen sollen. Wie sieht es hier mit der integration aus? Wieviel muss man noch zu Fuss machen?
operator schrieb: > Wenn ich dann den Speicherplatz von Cortex-M Controller anschaue, kann > ich mir nicht vorstellen, wie die ganzen Treiber/Stack + RTOS + eigenes > Programm darauf passen sollen. TCP/IP passt locker in die 32KB eines 8-Bit Mega32, wenn auch mit sehr einfachem Stack. Bei den Cortex M sind Typen mit 256KB Flash Mainstream, aber es gibt auch weit mehr. Damit geht das locker. Da packt man aber auch kein Echtzeit-Linux rein, sondern eine kleineres sparsameres RTOS - wenn überhaupt.
:
Bearbeitet durch User
operator schrieb: > Hinzu kommt eine MMU (welche bei Cortex M meines wissens fehlt). Die Cortex M0/3/4 werden meist entweder ohne Betriebssystem betrieben, oder mit einem einfachen RTOS. Mehr als ein relativ einfacher Speicherschutz ist da nicht erforderlich. Und den gibts, je nachdem was der Integrator eingebaut hat. > Wenn man danach noch z.B. ein Linux portiert hat, ist der rest praktisch > erledigt. Ethernet PHYs werden vom Kernel erkannt, USB ist plug and > play, in der Entwicklung sind sachen wie tftpboot und nfs möglich, und > so weiter. Wenn du in diese Richtung denkst, dann bleib bei einem Cortex A und flansch dem ggf. für Steuerungszwecke einen Cortex M0 an. Der A macht Betriebsystem, Netzwerk, Display, ... und der M0 geht an die untere Ebene. Das kann dann u.U. auch sicherheitstechnisch wichtig werden, weil Linuxe mit ihrem Netzzugang und dem Sammelsurium an laufenden Daemons immer wieder Angriffspunkte darstellen. Und da wärs dann doch besser, wenn dir nicht die Heizung abbrennt, bloss weil ein Witzbold ausprobiert hat, was man mit den Shellshocker alles anrichten kann.
:
Bearbeitet durch User
operator schrieb: > Wie ist denn die Inbetriebnahme von komplexeren Peripherieschnittstellen > bei einem Cortex M gelöst? Gibt es da fertige libraries? Es gibt Cortex M mit besagten Libraries in einem ROM, die Funktionen muss man also nur noch aufrufen, z.B. USB mass storage class oder HID z.B. http://www.nxp.com/products/microcontrollers/cortex_m0_m0/lpc1100/series/LPC11U00.html Dann gibt es noch kleine Betriebssysteme für spezielle Anwendungen z.B. Webserver, Wireless etc. z.B. http://www.contiki-os.org/
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.