Forum: Mikrocontroller und Digitale Elektronik Softwareebene ARM-basierendes yC-System


von Tovaritsch (Gast)


Lesenswert?

Moin!

Bisher habe ich AVRs mit dem STK500 per C-Compiler programmiert.
Ich möchte mich breiter aufstellen und mir ein ARM basierendes 
Starter-Kit zulegen.
Welches, weiß ich noch nicht. Programmieren werde ich wohl C, C++.
Ich erhoffe mir dadurch, bessere Chancen bei der Jobsuche zu haben. Nur 
ATMEL ist vielleicht bissl wenig auf die Dauer. Die Anforderungen sind 
ja oft hoch gesteckt...

Wie kann ich mir die Übungen und Projekte am Anfang vorstellen, bei 
denen ich auf die Pereferie des Controllers, des Boards zugreife?

Beispiel TCP-IP-Schnittstelle>
Kann ich da schon Klassen, Methoden finden, die ich nur noch nutzen 
brauch, um eine Verbindung zu einem z.B. Server zu programmieren und um 
Daten zu transferieren oder muss ich alles von Gund auf neu und "zu Fuß" 
programmieren? Muss ich mir das Vorstellen wie die Programmierung eines 
UARTs beim ATMEL-AVR? Evtl hängt das von Starter-Kit zu Starter-Kit ab?!
Ich hab da noch keine Erfahrungen und Vorstellungen, auf welcher Ebene 
ich aufsetze und wie weit die Software-Schnittstellen schon vorhanden 
sind. Vielleicht kann  man das garnicht pauschalisieren...
Ich habe nur oft gelesen, dass schon bei einigen Boards sogar ein 
kleines Betriebsystem läuft.

(Zusatz: VHDL-> FPGA-> wie ist das da? Hat man da bereits eine 
Bibliothek von funktionalen Einheiten?)
Danke für die Antworten!

von Sebastian (Gast)


Lesenswert?

Generell kann man schon Vergleiche zwischen AVR und ARM ziehen, wobei 
der ARM oft mehr Peripherie an Bord hat und demzufolge auch viel mehr 
Konfigurationsregister dafür. Das Prinzip bleibt, aber es wird 
komplexer.

Ich habe gehört, daß unter den ARM7-basierten Chips die LPC2000-Reihe 
von NXP etwas einfacher für den Einstieg ist als die AT91SAM von Atmel. 
Fans mögen mir widersprechen.
Dann gibt es noch die ARM9 mit externem Speicher, auf denen Linux läuft. 
Mit einem Betriebssystem programmiert es sich natürlich ganz anders als 
auf nackter Hardware.

Nicht jeder ARM hat Ethernet, nur die großen, z.B. LPC2378. Dazu ist 
i.A. ein zusätzlicher Physical Layer Chip ("PHY") und ein 
Ethernetübetrager (jedoch in sog. MagJack-Buchsen schon integriert) 
nötig. Der Mikrocontroller beherrscht jedoch das TCP/IP Protokoll nicht 
nativ. Vielmehr muß ein TCP/IP-Stack als Softwarebobliothek benutzt 
werden (siehe uIP / lwIP), wenn man nicht alles selbst programmieren 
will.

Oder man benutzt einen Wiznet-Chip, der beherrscht das Protokoll von 
sich aus.

FPGA ist ein ganz anderes Thema. Fertigen Code zum Einfügen gibt es 
auch, aber man muß schon verstehen, was man tut. Die programmierbare 
Logik ist nicht sequentiell wie ein uC, sondern arbeitet meist parallel, 
und erfordert ein recht tiefes Verständnis von dem, was da wirklich im 
Chip passiert.

von Sebastian (Gast)


Lesenswert?

Ergänzung: Für kleinere ARM7 gibt es die Möglichkeit, ein sogenanntes 
RTOS zu verwenden, ein Betriebssystem, das zusammen mit der Anwendung 
kompiliert wird. Die Möglichkeiten sind natürlich eingeschränkter als 
bei echtem embedded Linux oder ähnlichem, aber man hat z.B. die 
Möglichkeit, Threads parallel laufen zu lassen; oftmals werden auch 
solche Dinge wie die Ethernetkommunikation unterstützt. Allerdings kann 
die Einarbeitung in ein RTOS auch viel Zeit kosten, es empfiehlt sich, 
die Dokumentation sorgfältig zu lesen, bevor man sich für eines 
entscheidet. Auswahl gibt es da viel, von kostenlos bis ganz teuer, von 
eher primitiv bis ziemlich anspruchsvoll.

von Arne (Gast)


Lesenswert?

@Tovaritsch:
Habe momentan mit LPC2148 und in der Firma mit Cortex-M3 (STM32F10x) zu 
tun. Prinzipiell halte ich den Cortex für die Zukunft. Schau doch mal 
hier (http://www.tnkernel.com). Da gibt es ein RTOS mit TCP/IP Stack für 
verschiedene Cortex-M3/ARM7. Versuche das auf einem Board Deiner Wahl 
zum Laufen zu bringen.
Ein professionelles JTAG Interface für ARM7/Cortex-M3 gibt es bei Segger 
für ~62,-€ für Privatanwender.

von Robert T. (robertteufel)


Lesenswert?

Tovaritsch schrieb:
> Wie kann ich mir die Übungen und Projekte am Anfang vorstellen, bei
> denen ich auf die Pereferie des Controllers, des Boards zugreife?
>
> Beispiel TCP-IP-Schnittstelle>
> Kann ich da schon Klassen, Methoden finden, die ich nur noch nutzen
> brauch, um eine Verbindung zu einem z.B. Server zu programmieren und um
> Daten zu transferieren oder muss ich alles von Gund auf neu und "zu Fuß"
> programmieren? Muss ich mir das Vorstellen wie die Programmierung eines
> UARTs beim ATMEL-AVR?
Na ja, Ethernet MAC und UART haben zwar gemeinsam, dass beides serielle 
Schnittstellen sind, doch TCP/IP Protokoll, also die Software, die aus 
einer Schnittstelle einen Teilnehmer am Internet macht ist doch schon 
etwas komplexer als ein UART Treiber.
D.h. es geht grundsaetzlich was auch auf dem AVR geht, also UART = UART 
doch es geht noch einiges mehr.

> Evtl hängt das von Starter-Kit zu Starter-Kit ab?!
Stimmt! Es haengt allerdings mehr von der mitgelieferten Software ab.

> Ich hab da noch keine Erfahrungen und Vorstellungen, auf welcher Ebene
> ich aufsetze und wie weit die Software-Schnittstellen schon vorhanden
> sind. Vielleicht kann  man das garnicht pauschalisieren...
> Ich habe nur oft gelesen, dass schon bei einigen Boards sogar ein
> kleines Betriebsystem läuft.
Beim groessten Luminary ist sogar schon ein Betriebssystem im Chip bei 
Auslieferung integriert.
Siehe: 
http://mcu-related.com/architectures/35-cortex-m3/63-luminary-stellaris-lm3s9b96-rtos

Fuer einen professionellen TCP/IP stack muss man immer noch eine Stange 
hinlegen.
Ausser man geht in die Ueberwelt (aus MCU-Sicht) von Linux. Dann ist's 
aber nix mehr mit single-chip und alles aus dem integrierten Flash 
laufen lassen und die Performance von einem 50 MHz Cortex-M3 kann nur 
noch mit viel Muehe auf einem 200 MHz++ auf einem ARM9 erreicht werden.

Moeglichkeiten anzufangen waeren z.B.
mbed von ARM/NXP
http://mcu-related.com/architectures/35-cortex-m3/86-mbed

Primer2 von Raisonance / ST
http://mcu-related.com/architectures/35-cortex-m3/59-stm32-primer2-stm32f103e-stm3210e-primer

Viele echte aber natuerlich mehr spezifische Referenzloesungen von 
TI/Stellaris
http://focus.ti.com/mcu/docs/mculuminarykitsapps.tsp?sectionId=95&tabId=2488&familyId=1755

Es gibt viel zu erkunden, fang schon mal an. Auch ich wuerde mehr die 
Cortex-M3 basierenden Teile empfehlen als die ARM7

Gruss, Robert

von Tobias P. (hubertus)


Lesenswert?

Hallo allerseits,
sorry dass ich mich hier einmische, aber ich hätte da gleich eine Frage 
zu, an Robert Teufel.
Und zwar geht es um dies:

> Auch ich wuerde mehr die
>Cortex-M3 basierenden Teile empfehlen als die ARM7

Warum das denn? Ist ARM7 veraltet, oder wie?
Gibt es eine modernere, bessere ARM-Architektur als den ARM7, (abgesehen 
vom CM3) die ebenso "einfach" ist? Was mich nämlich an den CM3ern stört, 
ist, dass keiner einen externen Bus hat. Ich habe jedenfalls noch keinen 
gesehen.
Manchmal aber reichen die internen paar k FLASH nicht aus, oder man 
möchte etwas mehr RAM, weil man eine grosse Datenstruktur bearbeiten 
will. Da ist man mit einem LPC2k-Derivat mit externem Bus doch besser 
beraten, da man da recht simpel einfach ein paar SRAMs dran pappen kann.
Warum kann man das beim Cortex M3 nicht? Das ist ein echtes Manko, finde 
ich.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Tobias Plüss schrieb:
> Warum das denn? Ist ARM7 veraltet, oder wie?

Die klassische ARM Architektur war nie besondes gut für typische µC 
Anwendungen geeignet. Sie wurde ursprünglich auch nicht dafür 
entwickelt.

> Gibt es eine modernere, bessere ARM-Architektur als den ARM7, (abgesehen
> vom CM3) die ebenso "einfach" ist?

Nein.

> Was mich nämlich an den CM3ern stört, ist, dass keiner einen externen Bus
> hat. Ich habe jedenfalls noch keinen gesehen.

Mehr suchen. Es gibt durchaus welche, z.B. bei ST und Atmel.

--
Marcus

von Blackbird (Gast)


Lesenswert?

Genau, z.B. Analog Devices: ADuC7xxx und ADuC8xxx.
Die haben unter anderem auch noch AD/DA-Komponenten drin, die andere 
ARM-Controller so nicht haben.

Und sind einfach über die serielle Schnittstelle (auch mit 
RS232-to-USB-Wandler) zu programmieren.

Gibt es nur nicht so häufig und werden auch nicht so aggressiv in diesem 
Forum beworben wie die LPCs.


Blackbird

von STM32 (Gast)


Lesenswert?

Blackbird wrote:

>Die haben unter anderem auch noch AD/DA-Komponenten drin, die andere
>ARM-Controller so nicht haben.

STM32 hat sogar 2 bis 3 unabhängige 12bit AD-Wandler und noch 12bit 
DA-Wandler dazu.

>Und sind einfach über die serielle Schnittstelle (auch mit
>RS232-to-USB-Wandler) zu programmieren.

STM32 kann dass auch.

von Robert T. (robertteufel)


Lesenswert?

Tobias Plüss schrieb:
>> Auch ich wuerde mehr die
>>Cortex-M3 basierenden Teile empfehlen als die ARM7
>
> Warum das denn? Ist ARM7 veraltet, oder wie?
> Gibt es eine modernere, bessere ARM-Architektur als den ARM7, (abgesehen
> vom CM3) die ebenso "einfach" ist? Was mich nämlich an den CM3ern stört,
> ist, dass keiner einen externen Bus hat. Ich habe jedenfalls noch keinen
> gesehen.

Hi Tobias,
wie andere schon beantwortet haben, es gibt sie, die CM3 mit ext. Bus, 
ich bin ueberzeugt auch bald von NXP aber die anderen haben das schon.
Warum nicht mehr ARM7? Das gilt fuer Neuentwicklungen. Die ganzen Firmen 
wie ST, Atmel, NXP und TI investieren nur noch in neue Peripherie und 
Cores, die auf dem Cortex-M basierend sind.
Siehe auch Cortex-M4 Ankuendigung von heute:
http://mcu-related.com/

Also wer sich heute mit bestehendem Code auf einem ARM7, z.B. von einem 
LPC2148 auf einen LPC2378 oder so beschaeftigt, der sollte das auch 
wirklich tun und vielleicht nochmals fuer 1-2 Generationen mit dem ARM7 
arbeiten, der ist beileibe nicht schlecht!

Wer aber mehr zukunftsorientiert arbeiten moechte oder gerade ein 
voellig neues Projekt anfaengt, der sollte sich auf dem CM3 stuerzen, 
denn dort geht die Post ab. Wie Markus bereits gesagt hat, der CM3 wurde 
neu als MCU entwickelt, der ARM7 war als Prozessor fuer Handies gemacht 
und wurde spaeter "zweckentfremdet" als eigenstaendige MCU.

Gruss, Robert

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.