Frage

Ich habe Erfahrung in Desktop-und Web-Programmierung für ein paar Jahre zu tun. Ich möchte auf einige tun embed Systemprogrammierung bewegen. Nach dem erste Frage , frage ich mich, welche Hardware / Software-IDE sollte ich auf ...

oder ... keine Rolle spielt?

Welche Entwicklungsplattform ist die am einfachsten zu erlernen und Programm in (nimmt unter Berücksichtigung der IDE Usability)?

Welches ist die einfachste zu debuggen, wenn etwas schief geht?

Mein Ziel ist es über besser Ist es ein zu erfahren, dass ich später verwenden werden, oder das hohe Niveau Konzept für die meisten Mikrocontrollern tragen über sollte?

Danke!

Update: , wie dieser Entwickler-Kit für einen Start? Kommentar? Vorschlag?

War es hilfreich?

Lösung

Persönlich würde ich empfehlen ein ARM Cortex-M3-basierte Mikrocontroller. Die höhere Leistung ARM Kerne sind sehr beliebt, und diese Low-Power-Versionen könnten sehr gut in einem Raum ausziehen Das ist immer noch mit proprietären 8/16 Bit Kerne übersät. Hier ist ein kürzlich erschienener Artikel zum Thema: Der ARM Cortex-M3 und die Konvergenz des Markts MCU .

Der Arduino ist sehr beliebt für Bastler. Atmel 's peripheren Bibliothek ist über Prozessortypen relativ häufig. So würde es einen späteren Übergang von einem glatten AVR ein ARM .

Damit meine ich nicht zu behaupten, dass eine ARM ist besser als ein AVR oder ein anderer Kern. eine MCU für ein kommerzielles Produkt der Wahl kommt in der Regel auf Peripheriegeräte nach unten und Preis, gefolgt von bestehenden Code-Basis und Entwicklungstool. Außerdem sind Mikrocontroller allgemeinen viel viel einfacher als ein Desktop-PC. Also, es ist wirklich nicht so schwer Form einen zum anderen, nachdem Sie bekommen den Dreh raus zu bewegen.

Auch Blick in FreeRTOS , wenn Sie in Echtzeit-Betriebssystem (RTOS) Entwicklung interessiert sind. Es ist Open-Source und enthält einen schönen Spaziergang durch, was ein RTOS ist und wie sie ein umgesetzt haben. In der Tat, ihre Freilos Beispiel selbst richtet einen AVR.


Entwicklungswerkzeuge für Embedded-Systeme können sehr teuer sein. Allerdings gibt es häufig Open-Source-Alternativen für die offeneren Kerne wie ARM und AVR. siehe zum Beispiel die WinARM und WinAVR Projekte.

Diese Werkzeugketten basieren auf GCC und sind somit ebenfalls zur Verfügung (und einfacher IMHO verwenden) auf Nicht-Windows-Plattformen. Wenn Sie mit der Verwendung von GCC vertraut sind, dann wissen Sie, dass es eine Fülle von „IDE“ ist Ihren Geschmack von EMACS und vi (mein Favorit) auf Eclipse-.

Die kommerziellen Angebote können Ihnen eine Menge Kopfschmerzen bekommen Setup speichern. die Wahl eines sehr viel auf Ihrer Zielhardware und Budget jedoch ab. Einige Hardware-Unterstützung direkte USB-Debugging, während andere auch, erfordern eine teure JTAG Adapter.


Weitere Links:


Low-Cost-Cortex-M3-Boards:


New Arduino nutzen ein ARM Cortex-M3 anstelle eines AVR-Mikrocontroller.

Andere Tipps

Da Sie bereits Programmiererfahrung haben, könnten Sie ein Arduino zu prüfen, bekommen und die Firmware Ihre eigenen Sachen mit AVR Studio + WinAVR zu tun auszulöschen. Das Arduino gibt Ihnen einen guten Ausgangspunkt für das Verständnis der Elektronikseite davon. Unter dem Arduino Bootloader würde Ihnen einen besseren Zugang zu den Innereien von Atmel.

an den Zielen bekommen Sie darlegt, würde ich auch Computer-Desktop zu erforschen tiefer durch x86-Programmierung empfehlen. Sie könnten einen x86-Betriebssystemkern, zum Beispiel bauen.

ARM ist die am weitesten verbreitete Embedded-Architektur und erstreckt sich über eine enorme Bandbreite von Geräten verschiedener Hersteller und eine Vielzahl von Kosten. Dass sagte, gibt es erhebliche Unterschiede zwischen den ARM7, 9, 11 und Cortex-Geräte - vor allem Cortex. Wenn jedoch in Embedded-Systeme immer professionell Ihr Ziel ist es, Erfahrung ARM werden Sie gut.

8-Bit-Architekturen sind in der Regel einfacher zu bedienen, aber oft sehr begrenzt sowohl die Speicherkapazität und die Kerngeschwindigkeiten. Auch, weil sie einfach zu bedienen sind, 8-Bit-Fähigkeiten sind relativ leicht zu erwerben, so dass es ein weniger attraktives handwerkliches Geschick für einen potenziellen Arbeitgeber, weil es einfach zu erfüllen intern oder mit weniger erfahrenen (und damit weniger teuer) Personal.

Allerdings, wenn dies ist ein Hobby, eher als eine Karriere, die niedrig Kosten der Teile, Platinen und Werkzeuge und einfache Bedienung kann acht machen Bit attraktiv. Ich würde vorschlagen, AVR, nur weil es durch den freien avr-gcc-Toolchain unterstützt wird. Einige 8-Bit-Ziele werden durch SDCC unterstützt wird, eine andere Open-Source-C-Compiler. Ich glaube, Zilog ihre Z8 Compiler kostenlos zur Verfügung zu stellen, aber Sie können für die Debug-Hardware zahlen müssen (obwohl dies relativ billig ist). Viele kommerzielle Tool-Anbieter bieten Code-Größe begrenzte Versionen ihrer Tools zur Auswertung und nicht-kommerzielle Nutzung, aber Vorsicht die meisten Debugger-Spezialist Hardware erfordern, die teuer werden kann, obwohl in einigen Fällen Sie es selbst bauen kann, wenn man nur die Grundfunktionen benötigen und niedrige Geschwindigkeiten.

Was auch immer Sie nehmen Sie einen Blick auf www.embedded.com . Wenn Sie ARM wählen, habe ich WinARM erfolgreich auf kommerzielle Projekte verwendet, obwohl es nicht gebaut-for-Komfort! Eine gute Liste der ARM-Ressourcen verfügbar hier . Für AVR überprüfen definitiv www.avrfreaks.net

Ich würde nur Microchip PIC Teile empfehlen (zumindest das Low-End ist) für hochsensible Projekte kosten, wo die periphere Mischung der Anwendung eine gute Passform ist; nicht für eingebettete Systeme zu lernen. PIC ist eher ein Branding als eine Architektur, die verschiedenen Bereiche PIC12, 16, 18, 24 und PIC32 voneinander sehr verschieden sind, so auf ein Lernen Sie sich für eine andere gute Dienste leisten nicht unbedingt stehen - oft Sie selbst brauchen kaufen neue Tools! Das heißt, die dsPIC, die auf der PIC24-Architektur basiert, könnte eine gute Wahl sein, wenn Sie ein paar einfache DSP Erfahrung zur gleichen Zeit bekommen wollte.

In allen Fällen Compiler Verfügbarkeit überprüfen (vor allem, wenn C ++ Unterstützung ist Voraussetzung) und Kosten und Debugger Hardware-Anforderungen, da diese oft die teuersten Teile des dev-Kit sein wird, sind die Platten und Teile oft die am wenigsten kostspieligste Teil.

Texas Instruments hat einen sehr interessanten Entwicklungs-Kit auf einem sehr niedrigen Preis-Freigabe: The eZ430-Chronos Development Tool ein MSP430 mit Display und verschiedenen Sensoren enthält in einer Sportuhr, darunter einen uSB-Debug-Programmierer und ein uSB-Funkzugangspunkt für 50 $

Es gibt auch ein Wiki enthält viele, viele Informationen .

Ich habe bereits einen Stack Vorschlag für die erstellt eZ430-Chronos Kit.

Was auch immer Sie tun, stellen Sie sicher, dass eine gute Entwicklungsumgebung erhalten. Ich bin kein Fan von Entwicklungs-Tools von Microchip, obwohl Ich mag ihre Mikrocontroller (Ich habe zu viele Male durch MPLAB + ICD verbrannt, zu viel Aufwand und Dysfunktion). TI 2800 Serie DSPs sind ziemlich gut und haben eine Eclipse-basierte C ++ Entwicklungsumgebung, die Sie in für <100 US $ bekommen (erhalten eine der „controlcard“ -Basis Kits des Experimentators wie die für die 28335 ) - die Debugger-Kommunikationsverbindung ist wirklich solide; Die IDE ist gut, obwohl ich sie gelegentlich zum Absturz bringen.

Irgendwo da draußen ICs und Bretter sind, die besser sind; Ich bin nicht so mit dem eingebetteten Mikrocontroller Landschaft vertraut, aber ich habe nicht viel Geduld für arme IDEs mit noch ein weiteres Software-Tool-Kette, dass ich herausfinden, wie alle die Fehler zu umgehen.

Einige empfehlen die ARM. Ich würde es empfehlen, nicht als erste Plattform zu lernen, aber als zweite Plattform. ARM ist ein bisschen komplexer als Plattform, um die Low-Level-Details eingebetteter zu lernen, weil die Start-up-Code und Initialisierung Anforderungen komplizierter als viele andere Mikros. Aber ARM ist ein großer Player im Embedded-Markt, so lohnt sich das Lernen. Also habe ich es als eine zweite Plattform empfehlen würde zu lernen.

Die Atmel AVR wäre gut für viele Embedded Essentials Lernen, für 3 Hauptgründe:

  1. Architektur ist ziemlich straight-forward
  2. Guter Entwicklungs-Kits zur Verfügung, mit Tutorials
  3. Fan Forum mit vielen Ressourcen

Andere Mikros mit Development Kits auch gut so sein könnte wie MSP430 -Obwohl sie nicht haben so ein Fan-Forum kann. ein Development Kit ist ein guter Weg zu gehen, da sie mit dem Mikro zu schnell immer up-and-Laufen, ausgerichtet sind und effektives Lernen fördern. Sie sind wahrscheinlich zu haben Tutorials orientiert sich schnell die ersten Schritte .

Nun, ich nehme an, die Entwicklungs-Kits und ihre Tutorials sind wahrscheinlich solche Dinge wie Bootloader beschönigen und Start-up-Code für Ihren Code immer die LED so schnell wie möglich zu blinken. Aber das könnte ein guter Weg, um zu beginnen, und Sie können die Kette von Ereignissen aus „Power-on“ auf „Code ausgeführt“ in Ihrem eigenen Tempo erkunden.

Ich bin kein Fan des PICs, zumindest die PIC16s, aufgrund ihrer Architektur . Es ist nicht sehr C-freundlich. Und Speicherbänke sind schmerzhaft.

Das ist ein bisschen eine schwierige Frage zu beantworten, wie Ihre ideale Antwort hängt sehr davon ab, was es ist, interessiert sich für das Lernen.

Wenn Ihr Ziel nur zu tauchen ist ein wenig tiefer in die innere Funktionsweise von Computersystemen würde ich fast empfehlen Sie den eingebetteten Weg verzichten und ein Buch holen auf dem Schreiben ein Linux-Kernel-Modul. Schreib etwas Einfaches, das einen Temperatursensor aus dem SMbus oder so ähnlich liest.

Wenn Ihr Blick auf in hohem Niveau bekommen (die Telefone usw.) eingebettete Anwendungsentwicklung, laden Sie das Android SDK, können Sie Code in Java unter Eclipse und hat auch einen schönen Emulator.

Wenn Ihr auf den Einstieg in den „echten“ Mikrocontroller Raum suchen und wirklich einen Blick auf niedrigem Niveau Systemprogrammierung unter, ich würde Ihnen empfehlen, auf eine sehr einfache Architektur wie einen AVR oder PIC, etwas ohne MMU starten.

Tauchen in den Mittelweg, zum Beispiel einer ARM mit MMU und eine Art von O sei es Linux oder sonst wird ein bisschen einen Schock sein, wie ohne einen Hintergrund sowohl System-Programmierung und Hardware ist ich denke, eine Schnittstelle der Übergang sehr rau, wenn Sie viele andere zu tun, als Schreib sehr einfache Anwendungen, Zählen Taste drückt oder ähnliches.

planen

Es ist egal, müssen Sie sich nach und nach Erfahrungen sammeln mit einfacheren Systemen zu starten. Beachten Sie, dass durch einfacher ich bedeuten nicht weniger leistungsfähig, ich meine, einfache Bedienung, einfache Einrichtung usw. In diesem Sinne ich folgende empfehlen würde (ich habe kein berechtigtes Interesse an einem beliebigen Produkt, fand ich sie nur das Beste):

Ich habe mit einem dieser (mbed Entwickler Board) gestartet. Die großen Verkaufsargumente für mich waren, dass ich kann Code in C oder C ++, unkomplizierter Verbindung über USB und eine glatte Online-Entwicklungsumgebung (ohne lokale Installation Tool überhaupt erforderlich!).

http://mbed.org/

Fünf Minuten afer Öffnung Box ich eine Probe blinky Programm hatte (die ‚Hallo Welt‘ der emedded Welt) läuft wie folgt vor:

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

Das ist es! Oben ist das komplette Programm!

Es basiert auf ARM Cortex M3, schnell und viel Speicher für Embedded-Projekte (100 MHz, 256 KB Flash & 32k ram). Die Online-Entwickler-Tools haben eine sehr gute Bibliothek und viele Beispiele und es gibt ein sehr aktives Forum. Viel Hilfe auf Geräten mbed etc

Verbindungs

Auch wenn ich viel Erfahrung mit Embedded-Systemen (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC usw.) Ich fand noch das eine erfrischend einfache System in den Griff zu bekommen, während ernsthafte Fähigkeit .

Nachdem zunächst mit ihr auf einem grundlegenden Steckbrett spielen kaufte ich eine Grundplatte von diesen Jungs: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207 . Dies hat einen Stapel von I / O-Geräte (einschließlich einem miniture OLED- und einem 3-Achsen-Beschleunigungsmesser). Aus dem gleichen Standort auch einen der LCPExpresso Prozessorkarten gekauft I, die billig ist, weniger Energie / Speicher als die mbed aber für kleinere Arbeiten perfektionieren (noch hämmert den Mist aus PIC / Atmega Prozessoren). Die Basisplatte unterstützt sowohl die LCPExpresso und die mbed. den LCPExpress Prozessorplatine Einkauf hat mir auch mir einen angeschlossenen JTAG Debugger und einen Offline-dev envoronment (Code Red GCC / Eclipse-basierten Entwickler-Kit). Das ist viel komplexer als die Online-mbed dev Umwelt, sondern ist eine logische Weiterentwicklung, nachdem Sie expeience mit dem mbed gewonnen haben.

Mit Bezug auf meinen ursprünglichen Punkt noite, dass der mbed-Controller ist viel besser in der Lage als die der LPCExpresso Controller ist aber viel einfacher zu bedienen und zu lernen, mit.

Ich benutze Mikrochips PIC, dessen, was ich begann, ich hauptsächlich bekam auf sie gehen aufgrund der 123-Mikrocontroller-Projekte für den bösen Geist Buch. Ich nahm eine Klasse Mikroprozessoren in der Schule für mein Studium und lernte ein wenig über Interrupts und das Timing und die Dinge, das eine Tonne mit meinem Mikrocontroller geholfen. Ich nehme an einige der anderen Programmierer usw. sein kann, besser / einfacher, aber für 36 $ für die PicKit1, ich bin zu billig ein anderes kaufen zu gehen ... und ehrlich gesagt, ohne sie mit ich weiß nicht, ob sie leichter / besser ich wie meine und es bei jeder Gelegenheit empfehle ich bekommen, und es hat mich für immer zu wirklich tatsächlich es zu betrachten, aber ich konnte schließlich einen weiteren Chip off-Board mit ICSP programmieren. Ich weiß nicht, was andere Programmierer es tun, aber für mich ist das die schönste Sache 5 Draht-Schnittstelle und Sie sind programmiert. Kann nicht mit einem Stock ...

schlagen, dass

Ich habe nur einer von denen, verwendet wird.

Der Freescale ist ein feines Chip. Ich habe seit Jahren für kleine Projekte HC-etwas-Chips verwendet. Der einzige Nachteil ist, dass ich nicht CodeWarrier eingebettet mit einem 10 Meter langen Stange berühren würde. Sie können wenig freien C-Compiler und Montierer finden (ich erinnere mich nicht, den Namen der letzten, den ich verwenden), die nur gut die Arbeit machen. Codewarrior war groß und verwirrend und unabhängig davon, wie viel wusste ich über die Chip-Architektur und C immer nur schien Programmierung Dinge schwieriger machen. Wenn Sie Codewarrior auf dem Mac zurück in den alten Tagen verwendet haben und denken CW recht ordentlich ist, na ja, es ist überhaupt nicht so. CW eingebettet Aussehen vage ähnlich, aber es funktioniert sehr unterschiedlich, und nicht sehr gut.

Ein Kommandozeilen-Compiler sind in der Regel feine . Profis, die das große Geld bekommen teure Entwicklungsumgebungen berappen können, und ich bin sicher, dass sie die Dinge besser zu machen, aber ohne, dass es noch viel besser ist als das Schreiben Assembler-Code für einen Desktop-PC 1990, und irgendwie gelang es uns, dass nur gut zu tun . : -)

Nein, es spielt keine Rolle, wenn Sie wollen lernen, wie man ein Embedded-Gerät zu programmieren. Aber Sie müssen den Fluss von wissen, wo ich anfangen soll und wohin gehen. Ursache gibt es viele Mikro-Controller gibt, und Sie nicht wissen, welches man zu wählen. Also besser einen Fahrplan hat vor dem Start.

Aus meiner Sicht sollten Sie beginnen mit - Jeder AVR Board (ATMEGA 328P- Arduino-Boards oder AVR-Boards) dann sollten Sie Mikrocontroller auf ARM gehen - erste ARM CORTEX TDMI tun dann ARM Cortex M3 board.Thus diese Ihnen einen Gesamtüberblick geben, nach dem Sie jedes Board können wählen, je nachdem, welche Art von Projekt Sie arbeiten und was sind Ihre Anforderungen.

Lesen Sie mehr über Embedded-on- doafco.com

Sie können betrachten a RoBoard . Nun, dieses Board kann nicht das, was Sie suchen in Bezug auf einen Mikrocontroller, aber es hat den Vorteil, dass sie von Windows oder DOS und damit Sie könnte laufen verwenden Sie das Microsoft .NET oder auch C / C ++ Entwicklungstools mit Dingen wie Servos oder Sensoren herumzuzudaddeln oder sogar, was zum Teufel, einen Roboter bauen! Es ist eigentlich ein bisschen Spaß.

Es gibt auch die Axon II , die den ATmega640 Prozessor hat.

So oder so, sollten beide Boards helfen Ihnen, Ihr Ziel zu erreichen.

Sorry für die Robotik zu konzentrieren, nur etwas, was ich bin interessiert an und dachte, dass es auch Ihnen helfen kann.

Ich benutze PICs, würde aber Arduino überlegen, ob ich heute gewählt haben. Aber von Ihren Zielen:

  • , wie IO-Ports Arbeit
  • Speicher Einschränkungen / Anforderungen
  • Interrupt-Service-Routinen

Ich frage mich, ob Sie die beste Wahl ist nur in dem Linux-Kernel zu hacken?

BBC Micro Bit

https://en.wikipedia.org/wiki/Micro_Bit

Dieses billige Brettchen (~ 20 Jahre); wurde von ARM Holdings als Bildungseinrichtung in Kisten verpackt und 1M Einheiten wurden kostenlos UK Studenten vergeben.

Es enthält einen ARM Cortex-M0, der kleinste ARM-Kern von allen.

Ich empfehle es als erste Mikro-Controller-Platine aufgrund seiner breiten Verfügbarkeit, geringen Kosten, Einfachheit und die Tatsache, dass es Ihnen auf die ARM-Architektur führt, die viele erweiterte Bretter auch für ernstere Anwendungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top