Flash-Programm für eingebettete Programmierung

Hallo zusammen,
ich bin neu in diesem Forum und suche nach Meinungen. Ich habe das Board ein wenig durchsucht und ähnliche Fragen gefunden, aber nicht ganz das, wonach ich suche. Ich suche nach Hilfe bei der Entscheidung für ein SoC für eingebettete Systemanwendungen.

Ich habe an meiner Universität einen Einführungskurs für eingebettete Systeme belegt, aber der normale Professor hat das Semester zuvor verlassen, sodass ein CE-Student gezwungen war, den Kurs zu unterrichten. Infolgedessen habe ich das Gefühl, dass ich dadurch nicht die beste Ausbildung erhalten habe. In dem Kurs haben wir ein Smartfusion SoC verwendet, ich habe das Gefühl, dass ich dieses Board ziemlich gut kenne, aber ich möchte nicht rausgehen und mehr als 100 $ nur für das Board ausgeben. Außerdem möchte ich die MPU lieber nicht an ein FPGA anschließen.

Vor dem Ende des Semesters habe ich nach viel Recherche hastig ein Rpi 2 gekauft. Nach ein bisschen mehr Recherche und Herumspielen bin ich zu dem Schluss gekommen, dass es nicht das beste Board für Baremetal C ist des Codes ist Ihnen bereits gegeben, wenn ich den Code und die Treiber selbst schreiben möchte.

Am Ende möchte ich mit jeder Plattform, die ich verwende, in die Robotik einsteigen. Meine Frage ist folgende: Soll ich beim Rpi bleiben und einfach lernen, einige der Bibliotheken neu zu schreiben, oder sollte ich ein anderes Board wie das Beaglebone bekommen? Ein weiteres Problem, das ich mit dem Rpi habe, ist, wenn ich Baremetal-C machen möchte, dann ist das Flashen der MPU ein Schmerz, also hätte ich vorzugsweise eine IDE zum Debuggen und Flashen meines Codes.

Im Moment ist das Design eingebetteter Systeme nur eine Hobbysache, aber in Zukunft möchte ich tatsächlich als Embedded-Designer arbeiten können. Ich möchte dem Metall nahe kommen, im Gegensatz zu hochgradig abstrahiertem Away-Design. Im Voraus vielen Dank für Ihre Antworten.

Könnten Sie etwas genauer sagen, was Sie tun oder lernen möchten? „Eingebettete Systemanwendungen“ ist ein sehr weit gefasstes Konzept, das von medizinischen Bildgebungssystemen auf mehreren PC-Ebenen bis hin zu winzigen 6-Pin-8-Bit-Chips mit 256 Befehlen reicht, die FurElise spielen oder eine Taschenlampe zwischen Blinken und Dauerlicht umschalten. Dementsprechend variiert die geeignete Art von Hardware (und Entwicklungssoftware) stark.
Warum können Sie Ihren kompilierten Code nicht auf die SD-Karte legen und den Chip normal laden lassen?
@Ignacio, der den sogenannten "SD-Kartentanz" anführt. Schlecht für Ihre SD-Kartenanschlüsse und sehr mühsam. Die beste Lösung ist IME, um einen Bootloader auf die Flash-Karte zu legen, der eine Anwendung über Asynch Serial akzeptiert. Verwenden Sie eine Handsahle-Leitung, um einen Neustart zu erzwingen, wie dies üblicherweise bei LPC-ARM-Chips der Fall ist.
@WoutervanOoijen etwas spezifischer für die Robotik: Ich möchte ein Bluetooth-gesteuertes RC-Auto oder eine Hexapod-Spinne bauen. Also muss ich H-Brückenmotoren mit PWM steuern, von Sensoren (Sonar, Infrarot, Kreisel, Beschleunigung) und Bluetooth-Modul und serieller Kommunikation lesen.
Ich möchte wirklich nur meine Füße mit einem lustigen Projekt nass machen, ich mache mir nur Sorgen, dass das Rpi, obwohl es ziemlich einfach wäre, einen Roboter zu programmieren, mir nicht genau die eingebettete Erfahrung geben würde, nach der ich suche.

Antworten (2)

Ich schlage vor, Sie besorgen sich ein Discovery Kit für die STM32 F4-Serie mit STM32F407VG MCU wie diesem . Dies ist ein absolutes Schnäppchen für 14,88 $. Der 32-Bit-ARM-Cortex-M4-Prozessor verfügt über 1 MB Flash und 192 KB RAM. Es enthält auch zwei PWMs für die Motorsteuerung.

Sie können die I/O mit diesem STM32F4 Discovery Shield erweitern . Es ermöglicht das Hinzufügen von bis zu vier Click-Boards wie Bluetooth, Wi-Fi und Dutzenden anderen. Leider keine H-Brücken -- aber es gibt einen Prototyp eines Click-Boards, auf dem Sie Ihr eigenes verdrahten könnten.

Hatte das mickroE Click-Zeug und das Shield nicht gesehen. Ich würde das OP nur vor dem mikroE-Compiler warnen - zumindest zum Starten. Beim ARM Cortex ist das wirklich nicht nötig.
@ScottSeidman Ich bin nur erstaunt über den Preis auf diesem Board. Allein der Prozessor kostet bei Digi-Key 14,24 US-Dollar . Anscheinend verschenken sie das Board in der Hoffnung, dass viele Leute ihre Prozessoren in ihr Design übernehmen. Ich bin versucht, mir selbst einen zu besorgen, um damit zu spielen.
Ich habe mir gerade dieses Kit angesehen, bevor Sie gepostet haben. Ich werde mehr darüber und die IDE dafür schauen. Danke schön.
@tcrosley - ja, ich bekomme ein Kichern von Leuten, die denken, dass der Arduino Uno billig ist. Ich liebe die Discovery-Serie, von der F0 (für etwa 8 $!!!!) bis zur F4. Der einzige Fehler, den ich hatte, ist, dass STMicro VID und UID für USB-Entwicklung nicht unterlizenziert, wie es Microchip tut, also suche ich nach einer kostengünstigen Middleware-Lösung.
@unsure_ee_student -- Coocox könnte für Sie der schnellste Weg sein, gcc in eine ziemlich brauchbare IDE zu integrieren.
@tcrosley - Anstelle des Schilds können Sie sich für ein paar 50-polige Stiftleisten für Schraubklemmenadapter entscheiden. Sehr praktisch, um zu einem Steckbrett auszubrechen. zB ebay.com/itm/like/190903623678?lpid=82&chn=ps
Vergessen Sie auch nicht, dass Sie den integrierten STlink-Programmierer verwenden können, um externe Chips zu programmieren.
@ScottSeidman Das F0-Board ist sicherlich billig, aber der Prozessorspeicher beträgt nur 1/16 des F4 - 64 KB Flash, 8 KB RAM, zu etwas mehr als der Hälfte des Preises. Ich werde vorbeigehen.
Hängt davon ab, ob Sie den Discovery als Ihr Arbeitstier-Endprodukt betrachten oder ob Sie Geräte entwickeln und das kleinste Profil benötigen, das die Arbeit erledigen kann. Sie machen sogar eine Entdeckung in der STM32L0-Linie, die an Strom nippt.

Einfach ausgedrückt, Ihre Aufgabe muss Ihre Werkzeuge definieren, nicht umgekehrt. Raspberry Pi ist keine Echtzeitplattform. Es läuft Linux und kein Echtzeit-Betriebssystem.

Wenn Sie kein Betriebssystem benötigen und lieber Bare-Metal-C-Programmierung durchführen möchten, empfehle ich Ihnen, eine Mikrocontroller-Plattform auszuwählen, auf der Sie beginnen können - wahrscheinlich PIC oder AVR. Wählen Sie ein gutes Entwicklungsboard und eine IDE und führen Sie es aus. Wenn Sie ehrgeizig sind, könnten Sie sogar einen ARM Cortex wie den STM32F4 Discovery in Betracht ziehen.

Wenn Sie viele systemartige Ressourcen haben, die Sie verwenden und verwalten müssen, wie z. B. ein Dateisystem und mehr, dann ist dies möglicherweise ein Betriebssystem wie Linux auf einem Raspberry Pi oder ein Echtzeit-Betriebssystem auf einem Einplatinencomputer oder einem ARM Cortex-Entwicklungsboard der richtige Anruf sein.

ein RaPi lässt sich gut Bare-Metal programmieren. Wenn Sie ein Bare-Metal-Projekt mit viel RAM benötigen, würde ich es für eine gute Wahl halten.
@WoutervanOoijen hängt davon ab, wie Sie "Bare-Metal" in diesem Zusammenhang sehen. Wir meinen, kein Betriebssystem zu haben. Haben Sie eine Quelle auf einem Raspberry Pi ohne OS?
@WoutervanOoijen - hängt von der Art des Projekts ab, aber die proprietäre Natur des SoC auf dem Pi könnte mich durchaus zum BeagleBone Black als offenere Alternative drängen.
@FuaZe Ich weiß was Bare Metal bedeutet :)
@ScottSeidman Danke für eine Antwort. Ich gehe also davon aus, dass es Dev-Kits mit einer PIC- oder AVR-MPU gibt? und würden diese Entwicklungskits mit IDEs geliefert oder müsste ich eine finden, mit der ich mich wohl fühle?
Viele. Sie könnten Arduinos sogar als Entwicklungsboards für viele Absichten und Zwecke betrachten. AVR kann gcc verwenden, das kostenlos ist, und jede IDE, die es unterstützt. MPLAB ist die Entwicklungsumgebung von Microchip und für Basisinstallationen ebenfalls kostenlos. Schauen Sie sich auf der Microchip-Website um. Ich persönlich finde die Discover-Kits von STMicro fantastisch und ein tolles Preis-Leistungs-Verhältnis, aber der direkte Einstieg in ARM Cortex kann einschüchternd sein.
Es gibt viele billige kleine Mikrocontroller-Entwicklungsboards. Ich würde die Teensy (ARM) und die TI MSP-Linie zu Ihrer Liste hinzufügen. Integrierte IDEs können ein Vorteil oder eine Gefahr sein; Sie vereinfachen den Prozess für Sie, können aber selbst manchmal fehlerhaft oder langsam sein. Offene Systeme, bei denen Sie Ihre eigene IDE + Compiler (normalerweise GCC) + Downloader kombinieren, sind flexibler, aber schwieriger einzurichten.
Die Smartfusion, mit der mein Kurs herumgespielt hat, verwendete den Cortex M3, daher bin ich mit der Cortex-Serie ein wenig vertraut. Ich schaue mal in die Discover-Kits.
@pjc50 Gibt es viele Tutorials zum Einrichten von GCC-Compilern und -Downloadern? Ich verstehe, dass das auf lange Sicht die beste Option wäre. Aber brauchen Sie normalerweise auch einen JTAG-Port, um diese Route zu gehen?
@unsure_ee_student - einige Entwicklungsboards sind mit Programmierern direkt darauf. Die STM32FX Discoveries zum Beispiel.
@unsure_ee_student-Downloader sind vollständig plattformspezifisch, und es kann mehrere Möglichkeiten geben, dies zu tun. Einige der ARM-Geräte (evtl. LPC?) präsentieren sich beispielsweise als kleiner USB-Massenspeicher.
@unsure_ee_student Der BeagleBone ist keine bessere Wahl für dich als der Raspberry Pi, da er auch Linux betreibt und das Schreiben vieler Linux-Gerätetreiber nicht wirklich viel Spaß macht (da gewesen). Sie sollten sich ein Board mit einem PIC, AVR, ARM usw. besorgen, das keine Firmware enthält, aber eine anständige Bibliothek für Dinge wie SPI, I2C, UART und höherwertige Dinge wie SD-Karte, Dateisystem, USB - Dinge hat Sie wollen nicht wirklich selbst schreiben müssen.
@tcrosley Danke! Fällt Ihnen ein Entwicklerboard ein? Ich schaue mir die Discovery-Serie von STMicro an, wie von Scott vorgeschlagen.
@unsure_ee_student - siehe meine Antwort.