Empfehlungen für die Mikrocontroller-Programmierung unter Linux [geschlossen]

Kann mir jemand eine Empfehlung für eine stabile Entwicklungsumgebung ( Plattform + Programmiergerät + sw/ide ) geben, um mit der Programmierung von Mikrocontrollern unter Linux (nicht Arduino) zu beginnen?

Ich finde es schwierig, all diese Komponenten auszuwählen, und ich fürchte, ich muss auf Windows zurückgreifen. Danke!

Update: Danke für eure Antworten! Ich werde MPLAB auf Basis von Microchip und Netbeans ausprobieren. Nichts gegen Atmel, aber ich denke ersteres wird für mich einfach einzurichten sein;-)

Leider muss ich zugeben, dass ich MPLAB von Microchip unter Virtualbox in Windows XP verwende, wenn ich auf Ubuntu programmiere. Es klappt. Ich werde bald auf MPLAB X umsteigen.
Mein hier beschriebenes Entwicklungssystem: electronic.stackexchange.com/questions/10580/…

Antworten (8)

Microchip hat ein neues MPLAB X , das die NetBeans-Plattform verwendet, die unter Linux installiert wird, entweder 32-Bit oder 64-Bit. Es befindet sich noch in der Beta-Version, ist aber schon eine Weile draußen und wird über die Foren unterstützt.

Sie können für jede der MCU-Linien von Microchip entwickeln, PIC10/12/16/18 (alle 8-Bit), PIC24 (16-Bit) oder PIC32 (32-Bit). Ich würde empfehlen, mindestens mit der PIC18-Zeile zu beginnen - die kleineren werden am besten mit Assembler programmiert, und es ist viel einfacher, mit C zu beginnen.

Sie können kostenlose "Lite"-Versionen der Compiler erhalten (die Hauptbeschränkung besteht darin, dass einige Optimierungen nach 60 Tagen ablaufen, aber es gibt keine Codebeschränkung wie bei einigen Entwicklungssystemen).

Microchip hat ein kombiniertes Entwicklungsboard/Programmierer – MPLAB Starter Kit für PIC18F MCU , das 60 US-Dollar kostet. Es umfasst USB-Kommunikation, ein kapazitives Touchpad, Potentiometer, Beschleunigungssensor, MicroSD-Speicherkarte und ein OLED-Display.

Danke! Habe auch von MPLABX gehört, dachte aber, es sei immer noch nicht nutzbar. Warum ist es Ihrer Meinung nach besser, mit PIC18 statt mit 16 Zeilen zu beginnen?
Der PIC18 ist eine verbesserte Version des PIC16. Insbesondere hat es einen echten Datenstapel mit einem Rahmenzeiger, so dass der Befehlssatz für C-Compiler viel freundlicher ist. Ich habe gerade ein PIC16-Projekt abgeschlossen (der Prozessor wurde von meinem Kunden ausgewählt, bevor ich an Bord kam), und schließlich habe ich die gesamte Anwendung in Assembler geschrieben.
Von dem, was ich auf Mouser/Digikey aufgelistet sehe, sind die PIC16/18-Serien alle 8-Bit-MCUs und PIC24 ist der Anfang der 16-Bit-Teile.
@ Captainj2001 danke für die Korrektur. In meinem vorherigen Kommentar hatte ich gesagt, dass der PIC18 eine verbesserte Version des PIC16 ist (der ebenfalls 8-Bit ist), aber ich sehe in meiner Antwort, dass ich ihn als 16-Bit bezeichne. Ich werde das korrigieren.

Ich hatte gute Erfolge mit Atmel AVRs mit:

  • der GCC C-Compiler mit AVR-Bibliotheken (gepackt in APT für Debian-basierte Distributionen)
  • avrdude zum Flashen von Geräten (mit einem billigen Atmel AVRISP mkII-Programmierer)
  • AVR Eclipse-Plugin für eine IDE

Beim Googeln finden Sie einige Anleitungen zum Einrichten von allem unter einer kürzlichen Ubuntu-Installation. Es ist viel einfacher als früher, es ist jetzt so ziemlich nur das Installieren von Paketen aus den Repos.

Danke für deine Antwort. Reichen diese AVRISP-Programmierer aus, um mit AVR-Mikros in Kontakt zu treten, oder wird mehr Hardware benötigt?
Die AVRISP-Mikros und ein einfaches Steckbrett-Netzteil sind alles, was Sie brauchen, um eine LED zum Blinken zu bringen. Für 50 US-Dollar ist der AVR Dragon jedoch jeden Cent wert.
Entschuldigung @grieih, ich habe deinen Kommentar verpasst. Wie Zuph sagt, ist es auf der Hardwareseite einfach, es werden nur der Programmierer und die Stromversorgung benötigt. Hier ist eine gute Referenz zu den wenigen Pins, die Sie zum Programmieren anschließen müssen: evilmadscientist.com/article.php/avrtargetboards

Wenn Sie in C arbeiten möchten, können Sie sich entweder SDCC oder die Liste der unterstützten GCC -Cross-Compiler ansehen. Es gibt eine lange Liste. Wenn Sie in Assembler arbeiten möchten, verfügen die meisten 8-Bit-Mikros über gut unterstützte Linux-Tools, z. B. gputils.

Was die Programmiergeräte betrifft, so verfügen die meisten neueren Mikros heutzutage über integrierte Bootloader, für die kein teures Programmiergerät mehr gekauft werden muss. Ansonsten kannst du immer noch selber bauen. Für den PIC gibt es den PICKIT2, der mit Schaltplänen geliefert wird.

Für die IDE können Sie einfach Emacs oder Eclipse im Allgemeinen verwenden.

SDCC wäre großartig, aber leider unterstützt es nur einige Geräte. Großartig, wenn Ihr Gerät in der Liste enthalten ist; nicht so toll, wenn man auf einen Chip mit etwas mehr RAM umsteigt und plötzlich keine Unterstützung mehr dafür hat. Kann dies sogar unter Windows mit gputils und sogar in MPLABx mit der SDCC-Toolchain versuchen, aber das ist bestenfalls "experimentell".

Sie sollten in der Lage sein, eine Entwicklungsumgebung für die TI/Stellaris ARM Cortex M3-Teile mit arm-eabi-gcc zum Kompilieren von Code und OpenOCD zum Flashen und Debuggen auf der Zielplatine einzurichten. Ich habe alles unter Mac OS X gemacht, daher kann ich Ihnen keine direkte Anleitung geben, aber ich habe ein paar schnelle Google-Suchen durchgeführt und es sieht so aus, als ob es viele Setup-Anleitungen gibt. Ehrlich gesagt ist es ein bisschen mühsam und Sie müssen wahrscheinlich etwas herumfummeln, um alles zum Laufen zu bringen, selbst wenn Sie eine großartige Einrichtungsanleitung erhalten, aber sobald alles konfiguriert ist, ist der Workflow ziemlich gut. Sie sollten Eclipse auch als IDE verwenden und so konfigurieren können, dass Ihre Binärdateien automatisch auf das Board geladen werden, wenn Sie dazu neigen. Die Stellaris-Linie sind auch großartige Teile.

Es ist möglich, aber nicht annähernd so einfach wie das Einrichten einer Umgebung für AVR. Ich weiß es, weil ich es nur für einen LPC17xx ARM Cortex M3 mache.
Es gibt eine direkte Anleitung für Mac OS X, die ich hier für die Stellaris-Teile verwendet habe.
@starblue - Das OP sagte "nicht Arduino", also dachte ich, AVR sei aus. Vielleicht ist er mit einfachem AVR cool, aber AVR ist im Vergleich zu ARM Cortex-Teilen schwach. Natürlich hängt es von Ihrer Anwendung ab, und ein M3 wäre in einem supereinfachen Massenprodukt übertrieben, aber für einen Bastler, der Mikros lernen möchte, erhalten Sie mit einem ARM-Teil viel Leistung und Funktionen. Die Vorteile von AVR gegenüber Arduino sind die Tools, die Community und das Zubehör. Wenn Sie also nicht das gesamte Arduino-Paket möchten, können Sie AVR genauso gut weitergeben.

Die Eclipse -IDE ist Java-basiert, funktioniert also gut unter Linux. Es ist ein Plugin für die IDE verfügbar, das die C/C++-Entwicklung für AVR-Mikrocontroller unterstützt und es Ihnen auch ermöglicht, kompilierten Code über eine Vielzahl von Programmierern auf das Gerät hochzuladen.

Ich habe eine Reihe von Beispielen für eingebettete Mikrocontroller auf Linux-Basis bei github https://github.com/dwelch67 . Beachten Sie, dass ide Ihr bevorzugter Texteditor und eine Befehlszeile ist, in die Sie make eingeben.

Beachten Sie, dass die kostenlosen Tools für Mikrochip (pic32) (nicht die von Mikrochip) Optimierung, Unterstützung für 16-Bit-Befehlssätze usw. haben. Und Sie können sehen, was los ist (weil Sie es selbst tun). Dies sind natürlich die Mainline gcc und llvm (nicht die von Microchip).

Die mbed oder stellaris entsprechen wahrscheinlich eher dem, was Sie wollen. Oder Arduino wie vielleicht mit dem Ahorn gehen. Ich hasse es zu sagen, vielleicht der Fez-Panda. Das msp430-Launchpad kostet 4,30 US-Dollar. Zu diesem Preis können Sie genauso gut ein Paar kaufen, um für einen regnerischen Tag zu sparen. Die Entdeckung der stm32-Wertlinie kostet etwa 10 US-Dollar. Gleiches Angebot, man spart es sich für einen regnerischen Tag.

Wenn Sie die Bibliotheken und die Umgebung die ganze Arbeit für Sie erledigen lassen, dann ist es nicht anders, als nur Anwendungen auf Ihrem Desktop-Computer zu schreiben, ein bisschen Zeitverschwendung, eingebettet zu werden, schreiben Sie einfach Desktop-Apps. Wenn Sie sich für Embedded entscheiden, sollten Sie die Ärmel hochkrempeln und sich die Hände schmutzig machen ... etwas zum Nachdenken ... Andernfalls kaufen Sie einfach das Arduino und bringen Sie es hinter sich. Atmel ist für Kundenzufriedenheit schwer zu erreichen, nicht sicher warum, aber es ist, was es ist. Der avr-Befehlssatz ist nicht großartig, bei weitem nicht so schlecht wie der PIC (ohne PIC32), aber nicht so gut wie der msp430- oder ARM-Befehlssatz. Ich habe die Arduino-IDE unter Linux verwendet, wahrscheinlich muss Windows nicht neu gestartet werden. Es gibt nichts so Einfaches wie das Arduino, außer vielleicht die BASIC-basierten Stempel wie Parallax und einige andere.

Wie bei der Linux/Unix-Entwicklung im Allgemeinen sollten Sie sich nicht auf die Suche nach einer IDE konzentrieren. Konzentrieren Sie sich auf den Compiler, gcc oder llvm, dann auf Ihren bevorzugten Editor und das war's, fangen Sie an zu programmieren. Wenden Sie das auf einen Mikrocontroller an und sehen Sie sich die Ziele an, die die Compiler unterstützen. ARM und MIPS sind eine natürliche Ergänzung, Sie werden keine Probleme haben, die Tools zum Laufen zu bringen, jedes Mal, wenn Sie eine gepatchte gcc-Version nehmen und versuchen, diese auf Ihrer aktuellen Linux-Box zum Laufen zu bringen, werden Sie von Zeit zu Zeit Probleme haben time, avr, msp und pic fallen in diese Kategorie. Dasselbe gilt für sdcc, es ist ein Hit oder Miss, und Sie müssen sich sowieso fragen: C auf dem 8051? Nicht so schlimm wie C auf dem PIC, aber nah dran. Wenn Sie wirklich nach einer ausgefeilten, unterstützten, aktuellen, stabilen IDE usw. suchen, müssen Sie zu Windows gehen. Keil, IAR, Code Red usw. Die Nachfrage ist einfach nicht da, Linux/Unix-Entwickler verbringen historisch gesehen ihre Zeit damit, vi vs. Werfen Sie gdb ein, wenn Sie verzweifelt sind.

Das ist das Problem mit Linux, die einzige Option ist GCC. Und es wird nur zuverlässige, gewartete GCC-Ports für die gehyptesten Mainstream-MCUs geben.
llvm fängt und übergibt gcc und ist standardmäßig ein Cross-Compiler. Es könnte eines Tages auch ein Bootsanker sein, aber im Moment ist es das nicht. Die msp430-Portierung dauerte weniger als 24 Stunden, heißt es.
Danke für deine Antwort, @dwelch! Mein Hauptanliegen ist hier, ein geeignetes Programmierboard zu finden, das Linux-Entwicklungen unterstützt, aber ich dachte, eine IDE könnte mich zumindest am Anfang davon befreien, alle notwendigen Softwareteile zusammenzustellen.

Die Programmierung von PIC-Mikrocontrollern unter Linux ist ziemlich einfach. Ich habe einen Pickit2-Klon, eine MPLAB X-IDE und QPickit, die pk2cmd als Backend verwenden. Ich habe dsPIC33 ohne Probleme mit diesem Programmierer programmiert. So programmieren Sie Ihr Gerät:

  1. Erstellen Sie Ihr Projekt auf MPLAB X. Im Ausgabefenster wird der .hex-Dateipfad angezeigt. Zum Beispiel:/home/user/MPlabx_projects/Test/dis/default/production/test.hex
  2. Kopieren Sie diese Route und verwenden Sie siepk2cmd -p -f /home/user/MPlabx_projects/Test/dis/default/production/test.hex -m -r
  3. Ihr Gerät wird automatisch erkannt, dann programmiert und das MCLR wird für den Betrieb freigegeben.

Denken Sie daran, die richtige Spannung in Ihrem Pickit zu wählen. Für dsPIC33 sind im Allgemeinen 3,3 V. Sie können es aus Ihrem pickit2-Klon auswählen, indem Sie den richtigen Jumper auswählen. Außerdem können Sie Ihre MCU über eine unabhängige Stromversorgung von 3,3 V mit Strom versorgen und die Standardeinstellungen von pk2cmd verwenden.

Wenn Sie möchten, können Sie QPickit verwenden. Ist eine QT-basierte Anwendung zum Programmieren von PIC-Mikrocontrollern mit einer sehr einfachen und nützlichen Schnittstelle. Die Programmquellen werde ich in den nächsten Tagen laden.

Laden Sie pk2cmd von hier herunter

Willkommen bei EE.SE! Danke für die informative Antwort. Möglicherweise möchten Sie Ihre(n) Link(s) so aktualisieren, dass er für die Microchip-Software-Downloadseite und nicht für den direkten Download-Link ist, damit zukünftige Benutzer aktualisierte Versionen der Software sofort sehen können.
Aktualisierungen vorgenommen. Link zur PICkit 2 Development Programmer/Debugger-Archivseite geändert.

Gute Empfehlungen, Und wenn Sie die ARM-Architektur ausprobieren möchten, haben Sie noch mehr Auswahl:

  1. LPC ARM Cortex m0~m4 MCU-Familien von NXP by LPCXPRESSO (Eclipse & GNU-basierte voreingestellte IDE) als eine der besten Wahl, basierend auf LPCOPEN-Bibliotheken & LPC-LINK2-Debauger
  2. STM32 ARM Cortex m0 ~ m7 MCU-Familien von ST BY Einstellung und Konfiguration von Eclipse und gnu gcc (da ich glaube, dass Sie dies für jeden anderen ARM-Chip einstellen können, aber es gibt viele Vorlagenprojekte und -bibliotheken für stm32) mit SPL- oder HAL-Bibliotheken & ST-LINK-Debugger