Forum: Compiler & IDEs mbed - oder es muss nicht immer Arduino sein


von Johannes S. (Gast)


Lesenswert?

Als Fork von diesem Thread 
Beitrag "Re: Erfahrungen mit ChibiOS & ChibiStudio auf STM32Fxxx" habe ich 
mal ein neues Thema aufgemacht um den anderen Thread nicht zu kapern.
Es ging um ein ein OS und eine IDE für STM32 und mein Vorschlag war mbed 
zu benutzen. Das ist ein mittlerweile sehr umfangreiches OS von ARM 
(Keil) und ist im letzten Jahr massiv weiterentwickelt worden.
Die mbed Website zeigt schöne Bilder und viele Buzzwords und damit 
meiner Meinung nach nicht das ganze Potential das dahinter steckt. mbed 
verbinden viele sofort mit dem Online Compiler den man lieber nicht 
benutzen möchte. Aber das ist nur ein Teil von dem grossen Ganzen und 
mittlerweile ist die Nutzung per Command Line Interface vereinfacht und 
gut ausgebaut worden. Ich arbeite am liebsten in einer IDE incl. 
Debugger, und um da ein Projekt per mbed-cli zu erzeugen sind nur wenige 
Schritte nötig.
Die 8 Bitter nutze ich kaum noch und Arduino war anfangs ja auf die AVR 
beschränkt. Das hat sich geändert, mit STM32duino und dem Import der 
ESPs kann man die Arduino Libs auch auf anderen Plattformen nutzen. Die 
Entwicklung ist aber sehr verteilt und nicht einheitlich, ich persönlich 
halte mbed für das 'bessere' Arduino. Wobei ich durchaus Arduino nutze, 
z.B. im 3D-Drucker. Und auch Arduino Code lässt sich oft mit wenigen 
Anpassungen für mbed verwenden, selbst die Anpassung einer TFT Grafik 
Lib mit FSMC hat mich gerade mal 2 lange Abende Zeit gekostet (ist aber 
noch im Teststadium).
mbed stammt aus dem Hause ARM, wurde für den LPC1768 als Urvater 
entwickelt und dann wurde die Unterstützung für alles was einen Cortex-M 
core hat weitergeführt. Es werden viele Evalboards von NXP, STM, Nordic, 
Atmel usw. unterstützt, die Lister der offiziellen Targets findet man 
auf der mbed Website. Dazu kommen weitere die per mbed-cli genutzt 
werden können, das ist im folgenden beschrieben.

Peter schrieb:
> Aber bietet MBED auch eine IDE als lokale Installation an? (Vorzugswese
> für Windows und Linux)

ja,
das geht mit dem mbed-cli (command line interface). Für Windows gibt es
einen Installer der die Toolchain, Python und nötige Python Libs in
einem Rutsch installiert. Für Linux muss man sich durch die Anleitung
hangeln, ist aber auch nicht kompliziert weil nur Standard Pakete
benutzt werden.

Dann startet man z.B. mit dem mbed-os-blinky (für die fetteren F4/F7),
https://github.com/ARMmbed/mbed-os-example-blinky auf den lokalen
Rechner clonen. Der ganze Ablauf ist auf der blinky Seite beschrieben:
1
mbed import mbed-os-example-blinky
2
cd mbed-os-example-blinky
3
mbed compile -t GCC_ARM -m DISCO_F407VG

Der import holt den code aus dem git oder mercurial repo und fügt die
Library mbde-os hinzu. Das sind einige MegaBytes weil die immer für alle
Targets ist und der Download dauert etwas.
Dann compiliert man z.B. den Code für ein STM Dicovery F407 oder anderes
Target, eine Liste bekommt man wenn man für -m etwas ungültiges wie XX
angibt. Auf der mbed Site unter Hardware sind nur die offiziellen 'mbed
enabled' boards gelistet, aber man kann per mbed-cli auch andere
benuzten. Z.B. das beliebte Bluepill mit dem F103. Das läuft aber besser
mit dem mbed2, ein Projekt kann man so erstellen:
1
md myProject
2
cd myProject
3
mbed new . --mbedlib
4
mbed add https://os.mbed.com/users/mbed_official/code/mbed-dev/
5
mbed compile -m BLUEPILL_F103C8 -t GCC_ARM


per mbed export kann man dann eine Projektconfig für seine Lieblings IDE
oder für ein makefile schreiben wenn man nicht mit 'mbed compile'
arbeiten möchte.

Ich wollte hierzu immer mal einen Artikel ins Wiki schreiben, vielleicht
fange ich am WE mal an.

von yuchee (Gast)


Lesenswert?

Es wird aktuell eine auf Eclipse basierende Mbed IDE entwickelt:

https://os.mbed.com/studio/


Inzwischen ist die Entwicklung mit Mbed und stm32 Mikrocontrollern 
wirklich sehr einfach und es gibt immer mehr fertige Libs für 
verschiedene Sensoren.

Ich finde es ist für Anfänger besser wenn sie mit Mbed starten statt mit 
Arduino.
Mit Mbed beginnt man direkt mit einer modernen Mikrocontroller Familie.
Bei Arduino muss man früher oder später umsteigen und umlernen. Ok man 
muss nicht, aber wenn man leistungsfähigere Mikrocontroller benötigt 
oder langfristig etwas kommerzielles plant dann kommt irgendwann der 
Umstieg von Arduino.

von yuchee (Gast)


Lesenswert?

Und die Entwicklung von Mbed ist wirklich sehr aktiv und schnell. 
Regelmäßig erscheinen neue Versionen.
Die letzte gestern:

https://os.mbed.com/blog/entry/Mbed-OS-58-release/


Ich denke ARM ist dabei ein Mbed Ökosystem zu schaffen. Langfristig 
könnte das die Arduino Community unter Druck setzen.
Wobei ja aber auch nichts dagegen spricht das Arduino Plattform 
verstärkt auf 32bit Mikroncontroller auszubauen.

von Michael U. (amiga)


Lesenswert?

Hallo,

es wird wohl vorerst immer eine Diskrepanz zwischen dem Konzept Arduino 
und allen anderen IDEs geben.
Will man einsteigen weil man es beruflich oder in größerem umfang privat 
dauerhaft braucht, ist der Vorschlag und die Begründung 100% zutreffend.
Ist allgemein Elektronik Hobby oder Modelbau oder Modellbahn o.ä. Hobby 
und man kommt zu µC weil sie helfen können, ein Vorhaben zu realisieren, 
wird das Konzept Arduino gewinnen.
10 Minuten zum Runterladen und Installieren der IDE. Ein USB-Kabel an 
den "Arduino" stecken, das Board und die Schnittstelle auswählen, ein 
Beispiel laden, kompilieren und flashen.
Ein Projekt gefunden? Bibliothek fehlt? Von gitHub runterladen, 
Bibliothek als ZIP einbinden, neuer Versuch - klappt (wenn man Glück 
hat...).

Mach das mal z.Z. mit irgendeiner anderen "Umgebung".
Für eine "Arduino"-Schrankensteuerung der Modellbahn erstmal schauen was 
ein Compiler ist, was es mit Makefile und Linkerfile und... auf sich 
hat?
Herausfinden, wo das Dateisammelsurium einer Bibliothek in welche Ordner 
verteilt werden muß und wo die sind?

Sicher gut zu wissen. Was macht obiger Gelegenheitsbastler wenn das 
nächste Fundstück statt des AVR einen ESP8622 benutzt? Nächste 
IDE-Einrichtung, alles von vorn? Oder eine URL ind die ArduinoIDE 
kpieren, ESP-Paket dazu installieren, Board ist jetzt in der Auswahl, 
also auswählen, kompilieren, flashen.
Das ist im Moment der große Vorteil von Arduino, das Konzept.
Ich kann ohne nachdenken auch Plain C oder C++ drin machen, kann auf die 
SDK-Funktionen direkt durchgreifen und diese nutzen usw.
Wenn ich soweit bin (immernoch privat), dann bin ich ohnehin da, wo ein 
Umstig auf eine andere IDE eigentlich kein umlernen mehr ist. Dann habe 
ich sowieso schon die Finger in den Innereien von Arduino gehbt und 
festgestellt: oh, da wohnt ja auch nur ein GCC drunter, da läuft ja auch 
nur ein AVRDude oder das Espesssif-Python-Tool zum Flashen.

Ich kann das alles, wenn ich will, muß es aber nicht, wenn ich es nicht 
wirklich brauche und nutzen will.

Gruß aus Berlin
Michael

von Checker (Gast)


Lesenswert?

Was spricht gegen die mbed online Handhabung?

von Johannes S. (Gast)


Lesenswert?

Nichts, nur gerade hier wird online immer = böse gesehen.
Und offline IDE hat den Vorteil das man steppen und analysieren kann.

Danke auch Michael für deinen Beitrag. Mbed ist weil von ARM halt nicht 
für andere Plsttformen. Halte ich nur beim ESP für schade, die meisten 
für Hobby interassanten kennt mbed schon.

von Mike (Gast)


Lesenswert?

>Was spricht gegen die mbed online Handhabung?

- Editor: code-browsing, auto-complete, etc. ist unbrauchbar
- Compiler: Wenn was nicht compilierbar ist, musst Du
  raten an welcher welcher codezeile es liegt
- Debuggen: schlichtweg nicht möglich.
- Export: Wenn mal ein bischen was erarbeitet hast, funzt der 
Code-Export
  nicht mehr. Er bricht mit einer Fehlermeldung ab mit dem Hinweis man
  soll sich beim Support melden. Das habe ich getan aber keine 
brauchbare
  Hilfe bzw. Lösung erhalten, dem Problem geht auch keiner wirklich 
nach.

MBED ist ein Geschwür! Die kaufen alles was erfolgversprechend ist auf 
und lassen es versanden um jegliche Konkurrenz auszuschalten:
=> http://www.yagarto.org/
=> http://www.emide.org/

Irgendwann, wenn sie genügend Entwickler und Projekte an der Leine haben 
wir es wohl grausam teuer, die wollen schlussendlich auch nur Geld 
verdienen.

Ich habe auch den Eindruck, dass diverse MBED Mitarbeiter oder 
beteiligte sich hier auf dem Forum herumtreiben und kräftig die 
Werbetrommel für MBED rühren wie z.B. Johannes S. (jojos)

von Mike (Gast)


Lesenswert?

Was spricht gegen die mbed online Handhabung?

- Editor: code-browsing, auto-complete, etc. ist unbrauchbar
- Compiler: Wenn was nicht compilierbar ist, musst Du
  raten an welcher welcher codezeile es liegt
- Debuggen: schlichtweg nicht möglich.
- Export: Wenn mal ein bisschen was erarbeitet hast, funzt der
  Code-Export nicht mehr. Er bricht mit einer Fehlermeldung ab
  mit dem Hinweis man soll sich beim Support melden.
  Das habe ich getan aber keine brauchbare Hilfe bzw.
  Lösung erhalten, dem Problem geht auch keiner wirklich nach.

MBED ist ein Geschwür! Die kaufen alles was erfolgversprechend ist auf
und lassen es versanden um jegliche Konkurrenz auszuschalten:
=> http://www.yagarto.org/
=> http://www.emide.org/

Irgendwann, wenn sie genügend Entwickler und Projekte an der Leine haben
wir es wohl grausam teuer, die wollen schlussendlich auch nur Geld
verdienen.

Ich habe auch den Eindruck, dass diverse MBED Mitarbeiter oder
Beteiligte sich hier auf dem Forum herumtreiben und kräftig die
Werbetrommel für MBED rühren wie z.B. "Johannes S. (jojos)"

von Checker (Gast)


Lesenswert?

aha, womit programmierst du die µC offline?

von Johannes S. (Gast)


Lesenswert?

Ich bin kein ARM Mitarbeiter und bekomme auch kein Geld von ARM & Co. 
für meine Beiträge. Mit mbed habe ich mich schon lange beschäftig und 
ich finde es einfach besser als Arduino.
Die online IDE macht für grössere Projekte keinen Spaß, das ist richtig. 
Dafür läuft das ad hoc ohne etwas zu installieren auf jedem Rechner. 
Zumindest zum Einstieg oder etwas schnell zu testen ist das ok, für mehr 
nutze ich das auch nicht.
Deshalb favorisiere ich auch das mbed-cli, Kommandline Interface. Von 
hier aus funktioniert auch der Export besser und man hat alles lokal. 
Die Exporter wurden lange links liegen gelassen, ich kenne die Roadmap 
der Entwicklung nicht aber die Exporter hatten keine Priorität. Mit der 
Entwicklung von mbed 5 hat ARM scheinbar mehr Power da rein gesteckt und 
es tut sich immer noch eine ganze Menge. Die meisten Exporter werden von 
freiwilligen Unterstützern gepflegt, das ist wie bei Open Source üblich 
mal mehr oder weniger gut. Den MCUXpresso Exporter habe ich geschrieben 
(bzw. aus dem gnu arm eclipse Exporter abgeleitet) weil das LPCXpresso 
veraltet ist und da so gut wie gar nix ging. Den Gnu Arm Eclipse 
Exporter hat der Liviu Ionescu, der Entwickler von gnu arm eclipse 
übrigends dazu beigetragen.
Die Entwickler von mbed reagieren meist sehr freundlich auf die git 
contributions.
Wie gesagt, nicht lange mit dem Online Kram aufhalten und mbed-cli 
benutzen.
Das einzige was mir persönlich nicht so gut gefällt ist das der Export 
immer nicht mehr wie früher ein zip-file anlegt sondern nur das IDE 
Projektfile und immer das ganze mbed für alle Targets guckt. Da es sehr 
viele Targets gibt ist das mittlerweile sehr groß geworden.

von Checker (Gast)


Lesenswert?

du meinst das hier abarbeiten ...
https://github.com/ARMmbed/mbed-cli

Ich bevorzuge jedoch lieber was mit Fenster statt in der Konsole 
rumzutippen.

Ich frage deshalb weil ich schon länger einen Arch Pro von Seeedstudio 
rumliegen habe. Irgendwann wollte ich damit etwas rumspielen.

von Johannes S. (Gast)


Lesenswert?

Mike schrieb:
> Irgendwann, wenn sie genügend Entwickler und Projekte an der Leine haben
> wir es wohl grausam teuer, die wollen schlussendlich auch nur Geld
> verdienen.

wohl kaum, mbed = ARM / Keil, die verdienen Geld mit dem Verkauf von 
Lizenzen für die ARM cores. mbed ist auf git und das meiste ist frei 
nach MIT oder GPL, auch für kommerzielle Nutzung.
Keil verkauft sicher auch gerne seinen Compiler, aber gcc und IAR werden 
auch bestens von mbed unterstützt.
Ob das mit Yagarto/emIde stimmt weiss ich nicht, aber es ist eine 
Eclipse IDE von mbed angekündigt, da würde so eine Aquise Sinn machen. 
Und was ARM nicht kauft das schnappt sich STM ja gerade.

von Johannes S. (Gast)


Lesenswert?

Checker schrieb:
> Ich bevorzuge jedoch lieber was mit Fenster statt in der Konsole
> rumzutippen.

vom mbed-cli aus kann man ein Projektfile für die IDE erzeugen lassen 
und von da an fensterln.
Der Arch Pro ist soweit ich weiss in der Liste der unterstützten 
Hardware drin: https://os.mbed.com/platforms/Seeeduino-Arch-Pro/
Da der den LPC1768, den Urvater von mbed drauf hat, müsste auch Ethernet 
sofort damit laufen.

von Nop (Gast)


Lesenswert?

Mich schreckt an "online" vor allem die mangelnde Archivierbarkeit ab. 
Ein Projekt gehört IMO mitsamt der verwendeten Toolchain archiviert.

von Checker (Gast)


Lesenswert?

Gibt es nichts vergleichbares wie Atmel Studio nur eben für mbed arm? Es 
macht doch keinen Sinn in der Konsole ein File zu erzeugen um es danach 
in der IDE zu erarbeiten. Das muss doch alles in der IDE funktionieren. 
Oder ich habe irgendwas falsch verstanden?
Auch wenn ich mich wiederhole. Welche IDE soll ich für offline nehmen? 
Darum geht es doch laut meiner Meinung zur Zeit. Oder funktioniert für 
das arch pro Board nur die mbed online Variante?

von Johannes S. (Gast)


Lesenswert?

Es gibt MCUXpresso von NXP, das ist für die LPC und Kinetis Prozessoren. 
Einfach zu installieren, aber eben nur mit Support für die NXP Teile.
Dann gibt es als universellere IDE das gnu arm eclipse, aber da muss man 
eine Menge zusammensuchen und manuell installieren.
ARM hat eine mbed IDE angekündigt, ist aber noch nicht verfügbar. 
https://os.mbed.com/blog/entry/Introducing-Mbed-Studio/

Das mbed-cli ist aber mit wenigen Klicks installiert (incl. Toolchain) 
und um ein Blinky für das Arch Pro zu erstellen brauchst du auch nur die 
3 Zeilen aus meinem ersten Post. Zum kompilieren ist der Aufruf dann:
mbed compile -t GCC_ARM -m ARCH_PRO

Exportieren nach MCUXpresso:
mbed export -m ARCH_PRO -i mcuxpresso

Das erzeugt die Projektfiles und die IDE kann das importieren. Von da an 
kann man mit der IDE weiterarbeiten.

von Operator S. (smkr)


Lesenswert?

Bei mbed habe ich gemischte Gefühle. Die Idee ist sehr gut, die 
Umsetzung gut, die Dokumentation so lala und die Community nicht 
vorhanden.
Faktisch geschieht die gesamte Entwicklung von uController Hersteller, 
die ihre Treiber an das mbed API anbinden.

Seit einigen Jahren schon verfolge ich mbed, aber wirklich benutzbar ist 
es leider bis heute nicht. Man sieht auch nicht, welche Features von 
mbed auf welchen konkreten Mikrocontroller laufen, so dass man bereits 
in den Code einsteigen muss, um den uC zu evaluieren.

Dann gab es vor einigen Jahren einen Bruch von mbed 2 auf mbed 5. Vieles 
der Dokumentation ist noch immer nicht umgeschrieben.
Irgendwann gab es einen Bruch im Export der online IDE, so dass man 
nicht mehr sein erstelltes Projekt auf SW4STM32 exportieren konnte.

Bei den ganzen "success stories" frage ich mich auch, wie da die 
Wartbarkeit etc. aussieht. USBDevice ist erst im komment, Ethernet ist 
bei 2-3 devices wohl implementiert, aber gleichzeitig sind die gross im 
"IOT" drin. Ich frag mich nur mit welcher Technologie...

Zum rumspielen ist es wohl gut genug, aber für den professionellen 
Einsatz würde ich noch 1 Jahr warten - und dann wieder schauen obs so 
weit ist.

von Johannes S. (Gast)


Lesenswert?

Operator S. schrieb:
> Irgendwann gab es einen Bruch im Export der online IDE, so dass man
> nicht mehr sein erstelltes Projekt auf SW4STM32 exportieren konnte.

das hatte mich auch geärgert, da wurde die Verzeichnisstruktur geändert 
und von da an ging der Export lange Zeit nicht mehr. Dann habe ich mich 
da weiter reingearbeitet und mittlerweile wird der Export besser 
unterstützt und ist sogar in den automatischen Tests mit drin.
Aktuell wird das mbed 5 weiterentwickelt, das mbed 2 gibts auch noch, da 
werden die Änderungen rüberkopiert. mbed 2 ist immer noch gut für 
kleinere Targets, mbed 5 ist mit dem RTOS etwas anspruchsvoller. Aber 
das RTOS kann man da auch abklemmen und dann ist der Unterschied nicht 
mehr so gross.

> USBDevice ist erst im komment, Ethernet ist
> bei 2-3 devices wohl implementiert,

USB gibt es eigentlich schon lange, ist aber nicht für alle Devices 
implementiert. Es ist im 'unsupported' Ordner und nicht in den 
automatischen Tests drin. Wegen der vielen verschiedenen Targets und 
Compiler wird da exzessiv getestet und ein offizielles USB müsste auch 
in die Hardwaretests rein. Trotzdem funktioniert das, habe ich schon auf 
mehreren LPC und STM benutzt.
Ethernet ist noch weniger verbreitet, aber auch das ging schon auf dem 
Ur mbed LPC1768. Auf den beliebten STM Boards funktioniert das auch.
ARM gehört das TLS, das ist auf den fetteren Boards auch implementiert 
und diese sind wohl für das IoT gedacht.

von Checker (Gast)


Lesenswert?

Hallo,

habe nun alles nach der mbed youtube Anleitung mit dem installer tool 
installieren lassen. Danach das Bsp. youtube mit blinky begonnen. Hier 
komme ich nicht weiter.

Das mit dem blinky download mittels url funktionierte noch.
Dann soll man "mbed detect" eintippen, dass scheitert.
C:\Users\Checker\mbed_blinky>mbed detect
1
Traceback (most recent call last):
2
  File "C:\Users\Checker\mbed_blinky\.temp\tools\detect_targets.py", line 33, in <module>
3
    from tools.test_api import get_autodetected_MUTS_list
4
  File "C:\Users\Checker\mbed_blinky\.temp\tools\test_api.py", line 53, in <module>
5
    import tools.test_configs as TestConfig
6
ImportError: No module named test_configs
7
[mbed] ERROR: "C:\Python27\python.exe" returned error code 1.
8
[mbed] ERROR: Command "C:\Python27\python.exe -u C:\Users\Checker\mbed_blinky\.temp\tools\detect_targets.py" in "C:\Users\Checker\mbed_blinky"
9
---

Auf C:\ gibt es einen Ordner namens "mbed-cli" und "Python27".
Was mit eigentlich gar nicht gefällt, wenn sich eine Installation wild 
auf der Platte breit macht.

Was läuft schief?

von Dr. Sommer (Gast)


Lesenswert?

Checker schrieb:
> Was mit eigentlich gar nicht gefällt, wenn sich eine Installation wild
> auf der Platte breit macht.

Es ist aber zweckmäßig, denn es ist auch nicht das Gelbe vom Ei wenn man 
sowas elendig langes wie "C:\Program Files (x86)\Acme Corporation 
Inc\Super Product Pro 10.2\Tools\Compiler\ARM\Bin" im Pfad hat. Bei so 
komplex aufgebauten Softwares mit diversen Komponenten ist es auch nicht 
schlecht, wenn man einen standardisierten Installationspfad hat.

von Checker (Gast)


Lesenswert?

Hallo,

naja, es gibt seit Jahrzehnten eine allgemeine Installationsvorgabe 
(oder wie man das nennt) seitens MS. Die beiden Ordner hätte man locker 
in einen Programmordner mbed oder so ähnlich reinwerfen können.
Der Rest der selbst erstellten Code Projekte landet standardmäßig unter 
Dokumente im user Ordner. Alles ganz easy und seit Jahren eigentlich 
Standard.

Ist jetzt aber auch egal. Was ich falsch mache oder schief lief zu 
wissen wäre mir aktuell lieber.  :-)

von Dr. Sommer (Gast)


Lesenswert?

Checker schrieb:
> Die beiden Ordner hätte man locker
> in einen Programmordner mbed oder so ähnlich reinwerfen können.

Und wenn dann ein anderes Programm auch Python braucht hast du es 2x auf 
dem Rechner... Da lieber eine "allgemeingültige" globale Version 
C:\Python die dann allen Softwares zur Verfügung steht. Unter Windows 
ist das halt alles etwas komisch, unter Unix fügt sich das so 
"natürlicher" zusammen.

Checker schrieb:
> Alles ganz easy und seit Jahren eigentlich
> Standard.
Nö, erst seit MS da seinen eigenen "Standard" gemacht hat :) Python & Co 
orientieren sich aber am älteren echten Standard Unix (Posix)...

von Michael B. (laberkopp)


Lesenswert?

Johannes S. schrieb:
> Die 8 Bitter nutze ich kaum noch und Arduino war anfangs ja auf die AVR
> beschränkt. Das hat sich geändert, mit STM32duino und dem Import der
> ESPs kann man die Arduino Libs auch auf anderen Plattformen nutzen. Die
> Entwicklung ist aber sehr verteilt und nicht einheitlich, ich persönlich
> halte mbed für das 'bessere' Arduino.

Ich befürchte, du hast nicht mal ansatzweise verstanden, was das Arduino 
Konzept so interessant für Anfänger macht.

Aber schön, daß ARM versucht, etwas für seine ARM auf die Beine zu 
stellen. Es richtet sich nur an eine andere Zielgruppe.

von Johannes S. (Gast)


Lesenswert?

Checker schrieb:
> Ist jetzt aber auch egal. Was ich falsch mache oder schief lief zu
> wissen wäre mir aktuell lieber.  :-)

Die Firmware für das Board muss aktualisiert werden (steht auf der HW 
Seite zu dem Board) und der mbed serielle Treiber muss installiert sein. 
Der Installiert sich blöderweise nur wenn sich die Hardware 
angeschlossen ist und erkannt werden kann.
Das mbed detect ist aber auch nicht dringend nötig, das Programm sollte 
sich kompilieren lassen und kann dann per copy auf das Board geschoben 
werden.

von Checker (Gast)


Lesenswert?

Hallo,

die Firmware hatte ich schon vorher auf die v244 aktualisiert und der 
serielle Treiber wurde installiert, hatte ich beobachtet während die 
Installation lief. Du meinst jetzt das "mbed detect" überspringen?

-------------------------

@ Dr. Sommer

Mit "reinwerfen" meinte ich eine saubere Installation!
Vielleicht auch ein Missverständnis. Wenn sich Python und mbed sauber in 
die Programmordner-Struktur "Programme" oder "Programme(x86)" 
installieren würden ...

Wenn Python sich zum Bsp. direkt auf C:\ "entpackt" findet das kein 
anderes Programm was davon nichts weiß. Wenn es sich sauber installieren 
würde, kann jedes andere Programm im Standardinstallationspfad/Eintrag 
nachschauen und findet es. Funktioniert seit Jahren so.

Unter Linux wird auch nichts wild irgendwohin verfrachtet. Es gibt auch 
unter Linux klare Regeln. Sonst könnten die ganzen Paketabhängigkeiten 
niemals sauber aufgelöst werden und es würde immer etwas fehlen oder 
nicht gefunden.

von Dr. Sommer (Gast)


Lesenswert?

Checker schrieb:
> Wenn sich Python und mbed sauber in
> die Programmordner-Struktur "Programme" oder "Programme(x86)"
> installieren würden ...

Hat man das o.g. Problem mit den ewigen langen Pfaden.

Checker schrieb:
> Wenn Python sich zum Bsp. direkt auf C:\ "entpackt" findet das kein
> anderes Programm was davon nichts weiß
Andere Programme wissen das über die Path-Variable.

Checker schrieb:
> Wenn es sich sauber installieren
> würde, kann jedes andere Programm im Standardinstallationspfad/Eintrag
> nachschauen und findet es.
Wird bei Unixoiden Programmen so nicht gemacht. Wenn du ein "make" 
-Programm ausführst, sucht das via "Path" nach "gcc.exe", "python.exe" 
usw., aber nicht über irgendwelche Registry-Einträge.

Checker schrieb:
> Unter Linux wird auch nichts wild irgendwohin verfrachtet.
Da gibt es auch keine Registry. Sowas wie /bin gibts ja unter Windows 
nicht...

von Checker (Gast)


Lesenswert?

Hallo,

eben, wenn es über Path sowieso gefunden werden kann oder wird, dann 
kann es auch ordentlich installiert sein. Gehüpft wie gesprungen. Unter 
Linux wird doch auch nichts direkt auf das Laufwerk installiert. Warum 
wird oder soll der Mist unter Windows gemacht und soll für okay 
empfunden werden. Die Logik verstehe ich nicht. Entweder hält man sich 
an Regeln oder nicht.

von Christopher J. (christopher_j23)


Lesenswert?

Checker schrieb:
> Gibt es nichts vergleichbares wie Atmel Studio nur eben für mbed arm? Es
> macht doch keinen Sinn in der Konsole ein File zu erzeugen um es danach
> in der IDE zu erarbeiten. Das muss doch alles in der IDE funktionieren.
> Oder ich habe irgendwas falsch verstanden?

Doch, das mit dem CLI macht eben schon Sinn, weil man damit relativ 
einfach Projekte für sehr viele verschiedene IDEs generieren kann und 
genau das macht das mbed-cli. Für offline kannst du z.B. SW4STM32 
nehmen. Darüber hinaus bauen die Leute von mbed gerade an ihrer eigenen 
Eclipse-basierten mbed-offline-IDE, finde aber leider gerade den Link 
nicht mehr.

von Checker (Gast)


Lesenswert?

Hallo,

die mbed Studio IDE hat noch frühen alpha status. Da sollte man bestimmt 
noch warten.
https://os.mbed.com/studio/

Die ST IDE. Da wird wohl kaum mein "mbed Arch Pro" Board funktionieren, 
denke ich. Oder?
Ich finde keine Auflistung oder dergleichen.

Werde mich nochmal mit der mbed cli befassen.

von Christopher J. (christopher_j23)


Lesenswert?

Checker schrieb:
> Die ST IDE. Da wird wohl kaum mein "mbed Arch Pro" Board funktionieren,
> denke ich. Oder?

Ja, stimmt natürlich. Johannes hatte ja auch schon direkt den korrekten 
Hinweis auf MCU Xpresso gebracht. Prinzipiell sollte jedoch sogar 
SW4STM32 gehen, wenn du es als Makefile-Projekt aus dem mbed-cli 
exportierst und als Makefile-Projekt importierst. Ob das sinnvoll ist, 
das ist natürlich eine ganz andere Frage aber prinzipiell sollte es 
gehen.

von Checker (Gast)


Lesenswert?

heute weiter gemacht und "mbed detect" ignoriert. Scheint nicht sinnvoll 
zu sein. Denn später folgte ein "mbed compile" mit ähnlicher 
Fehlermeldung. Irgendwas scheint mit der Python Installation nicht zu 
stimmen.
1
C:\Users\Checker\mbed_blinky>mbed detect
2
Traceback (most recent call last):
3
  File "C:\Users\Checker\mbed_blinky\.temp\tools\detect_targets.py", line 33, in <module>
4
    from tools.test_api import get_autodetected_MUTS_list
5
  File "C:\Users\Checker\mbed_blinky\.temp\tools\test_api.py", line 53, in <module>
6
    import tools.test_configs as TestConfig
7
ImportError: No module named test_configs
8
[mbed] ERROR: "C:\Python27\python.exe" returned error code 1.
9
[mbed] ERROR: Command "C:\Python27\python.exe -u C:\Users\Checker\mbed_blinky\.temp\tools\detect_targets.py" in "C:\Users\Checker\mbed_blinky"
10
---
11
12
C:\Users\Checker\mbed_blinky>mbed toolchain GCC_ARM
13
[mbed] GCC_ARM now set as default toolchain in program "mbed_blinky"
14
15
C:\Users\Checker\mbed_blinky>mbed target K64F
16
[mbed] K64F now set as default target in program "mbed_blinky"
17
18
C:\Users\Checker\mbed_blinky>mbed compile
19
usage: make.py [-h] [-m MCU] [-t TOOLCHAIN] [--color] [--cflags CFLAGS]
20
               [--asmflags ASMFLAGS] [--ldflags LDFLAGS] [-c]
21
               [--profile PROFILE] [--app-config APP_CONFIG] [-p PROGRAM]
22
               [-n PROGRAM] [-j JOBS] [-v] [--silent] [-D MACROS]
23
               [-S [{matrix,toolchains,targets}]] [-f GENERAL_FILTER_REGEX]
24
               [--stats-depth STATS_DEPTH] [--automated] [--host HOST_TEST]
25
               [--extra EXTRA] [--peripherals PERIPHERALS]
26
               [--dep DEPENDENCIES] [--source SOURCE_DIR]
27
               [--duration DURATION] [--build BUILD_DIR] [-N ARTIFACT_NAME]
28
               [-d DISK] [-s SERIAL] [-b BAUD] [-L] [--rpc] [--usb] [--dsp]
29
               [--testlib] [--build-data BUILD_DATA] [-l LINKER_SCRIPT]
30
make.py: error: Could not find executable for GCC_ARM.
31
Currently set search path: No path set
32
[mbed] ERROR: "C:\Python27\python.exe" returned error code 2.
33
[mbed] ERROR: Command "C:\Python27\python.exe -u C:\Users\Checker\mbed_blinky\.temp\tools\make.py -t GCC_ARM -m K64F --source . --build .\BUILD\K64F\GCC_ARM" in "C:\Users\Checker\mbed_blinky"
34
---

Werde es nochmal deinstallieren und diesmal alles einzeln installieren, 
Wenn das wieder nicht will teste ich die MCU Xpresso IDE.

von Johannes S. (Gast)


Lesenswert?

Der Fehler beim compile scheint eher an der Toolchain Installation zu 
liegen. Wenn die fragt ob die Environment Variablen gesetzt werden 
sollen muss man das mit ja beantworten.
In dem bin Verzeichnis der gcc Installation liegt eine Batchdatei die 
das macht, die kann man auch vorher aufrufen.

von Johannes S. (Gast)


Lesenswert?

und welche mbed Version hattest du benutzt? Für den Arch Pro geht auch 
mbed 5, also mbed import mbed-os-example-blinky.
Im mbed ist eine Versionsverwaltung integriert, ältere mbed2 Sachen 
benutzen noch Mercurial (historisch bedingt) und neuere verwenden git. 
Wenn man ein älteres Beispiel mit dem cli lädt liegt erstmal nur ein 
link (.lib) im Verzeichnis. Mit mbed update oder wenn mbed compile die 
Dateien nicht findet wird die Version geladen auf die der Link zeigt. 
Das können dann ältere Versionen sein, mbed detect ist etwas neueres das 
in der alten Version evtl. noch nicht drin war.
Ist etwas komplizierter als Arduino, aber die Versionsverwaltung mit git 
ist etwas geniales und das sollte man sich auch die Basics anlesen.

von Johannes S. (Gast)


Lesenswert?

habe nochmal nachgesehen, das müsste mit mbed 5 oder Update der cli 
Tools behoben sein:

https://github.com/ARMmbed/mbed-cli/issues/564
https://github.com/ARMmbed/mbed-cli#updating-mbed-cli

Da der Arch Pro mit dem LPC1769 relativ viel Flash und Ram hat würde ich 
darauf auch mbed 5 nutzen, da hat man gleich das RTOS dabei.

von Checker (Gast)


Lesenswert?

Hallo,

das Arch Pro Board hat den LPC1768 drauf, falls das einen Unterschied 
macht.
Ich hatte das nach der Anleitung des letzten Links gemacht, nur eben 
nicht einzeln sondern mit dem Windows Installer der alles in einem 
Rutsch installiert. Deinstalliert ist es schon, sobald mehr Zeit ist 
versuche ich es nochmal einzeln ...

von Johannes S. (Gast)


Lesenswert?

ok,
dann probiere lieber
1
mbed import mbed-os-example-blinky

Das erzeugt das mbed 5 Blinky.

Checker schrieb:
> das Arch Pro Board hat den LPC1768 drauf, falls das einen Unterschied
> macht.

da hatte ich falsch gesehen, macht keinen Unterschied, ist richtig als 
LPC1768 target da.

> nur eben
> nicht einzeln sondern mit dem Windows Installer der alles in einem
> Rutsch installiert.

das hat bei mir auf mehreren Rechnern funktioniert, nur eben bei der 
Toolchain muss man drauf achten das der Path gesetzt ist. Das kann bei 
der manuellen Installation auch passieren.

von Checker (Gast)


Lesenswert?

bei der kompletten Windows Installer Variante wird man nicht gefragt ob 
der Python Pfad eingetragen werden soll oder nicht.

Habs nochmal von vorn probiert.

Bis zum "mbed compile" sah es vielversprechend aus.
1
C:\Users\Checker>mbed import mbed-os-example-blinky
2
3
[mbed] Importing program "mbed-os-example-blinky" from "https://github.com/ARMmbed/mbed-os-example-blinky" at latest revision in the current branch
4
[mbed] Adding library "mbed-os" from "https://github.com/ARMmbed/mbed-os" at rev #f9ee4e849f8c
5
[mbed] Auto-installing missing Python modules...
6
7
C:\Users\Checker>mbed detect
8
9
[mbed] WARNING: The mbed tools were not found in "C:\Users\Checker".
10
[mbed] WARNING: Limited information will be shown about connected mbed targets/boards
11
---
12
[mbed] Detected "ARCH_PRO" connected to "E:" and using com port "COM7"
13
14
C:\Users\Checker>cd mbed-os-example-blinky
15
16
C:\Users\Checker\mbed-os-example-blinky>mbed detect
17
18
[mbed] Detected ARCH_PRO, port COM7, mounted E:, interface version 0244:
19
[mbed] Supported toolchains for ARCH_PRO
20
+----------+-----------+-----------+-----------+-----------+-----------+-----------+
21
| Target   | mbed OS 2 | mbed OS 5 |    ARM    |  GCC_ARM  |    IAR    |   ARMC6   |
22
+----------+-----------+-----------+-----------+-----------+-----------+-----------+
23
| ARCH_PRO | Supported | Supported | Supported | Supported | Supported | Supported |
24
+----------+-----------+-----------+-----------+-----------+-----------+-----------+
25
Supported targets: 1
26
Supported toolchains: 4
27
28
C:\Users\Checker\mbed-os-example-blinky>mbed toolchain GCC_ARM
29
30
[mbed] GCC_ARM now set as default toolchain in program "mbed-os-example-blinky"
31
32
C:\Users\Checker\mbed-os-example-blinky>mbed target ARCH_PRO
33
34
[mbed] ARCH_PRO now set as default target in program "mbed-os-example-blinky"
35
36
C:\Users\Checker\mbed-os-example-blinky>mbed compile
37
38
usage: make.py [-h] [-m MCU] [-t TOOLCHAIN] [--color] [--cflags CFLAGS]
39
               [--asmflags ASMFLAGS] [--ldflags LDFLAGS] [-c]
40
               [--profile PROFILE] [--app-config APP_CONFIG] [-p PROGRAM]
41
               [-n PROGRAM] [-j JOBS] [-v] [--silent] [-D MACROS]
42
               [-S [{matrix,toolchains,targets}]] [-f GENERAL_FILTER_REGEX]
43
               [--stats-depth STATS_DEPTH] [--automated] [--host HOST_TEST]
44
               [--extra EXTRA] [--peripherals PERIPHERALS]
45
               [--dep DEPENDENCIES] [--source SOURCE_DIR]
46
               [--duration DURATION] [--build BUILD_DIR] [-N ARTIFACT_NAME]
47
               [-d DISK] [-s SERIAL] [-b BAUD] [-L] [--rpc] [--usb] [--dsp]
48
               [--testlib] [--build-data BUILD_DATA] [-l LINKER_SCRIPT]
49
make.py: error: Could not find executable for GCC_ARM.
50
Currently set search path: No path set
51
[mbed] ERROR: "C:\Python27\python.exe" returned error code 2.
52
[mbed] ERROR: Command "C:\Python27\python.exe -u C:\Users\Checker\mbed-os-example-blinky\mbed-os\tools\make.py -t GCC_ARM -m ARCH_PRO --source . --build .\BUILD\ARCH_PRO\GCC_ARM" in "C:\Users\Checker\mbed-os-example-blinky"
53
---
54
55
C:\Users\Checker\mbed-os-example-blinky>

GCC-ARM und Python kann nicht gefunden werden.

Habe dann Python entfernt und einzeln mit Pfadeintragsoption 
installiert.
Ab da war der Befehl "mbed" unbekannt. Es geht nichts mehr. Habe jetzt 
aktuell alles wieder deinstalliert. Morgen fang ich nochmal von vorn an. 
Vielleicht habe ich auch was falschen oben ausgewählt. GCC_ARM und 
ARCH_PRO ist doch richtig? Oder?

Macht es Sinn Python einzeln mit Pfadeintrag zu installieren und dann 
beim Windows Komplettinstaller Python abwählen?

von F. F. (foldi)


Lesenswert?

yuchee schrieb:
> Ok man
> muss nicht, aber wenn man leistungsfähigere Mikrocontroller benötigt
> oder langfristig etwas kommerzielles plant dann kommt irgendwann der
> Umstieg von Arduino.

Schau dir erstmal an was so einige aus winzigen 8-bittern so raus holen. 
Ich behaupte einfach, dass das meiste was gerade Hobbyisten so machen, 
mit 8 bit durchaus auch noch geklappt hätte.
Gut, ich bin kein Maßstab und schon wieder eine Weile raus, aber ich 
kann mir in meinem Hobbybereich keine Anwendung vorstellen (die auch 
zeitlich machbar wäre), die mit 8 bit nicht mehr laufen würde. und wenn 
am Ende zwei oder drei Controller zusammen arbeiten, als verteiltes 
System.
Wenn ich mir vielen Steuerungen ansehe, drin sind meist noch 8-bitter 
und die steuern ziemlich komplexe Sachen.
Hatte für Spaß einmal geguckt was das für ein Siemens Teil ist. Hätte an 
FPGA gedacht. Ziemlich groß, steuert (gut wir haben dann auch noch zwei 
andere Controller da drin) einen ganzen Stapler.
Bis ich das ausreizen könnte, da bin ich auch unter normalen Umständen 
längst tot.

von Johannes S. (Gast)


Lesenswert?

Checker schrieb:
> make.py: error: Could not find executable for GCC_ARM.
> Currently set search path: No path set
> [mbed] ERROR: "C:\Python27\python.exe" returned error code 2.

bis hierhin war schon alles gut, Python ist vermutlich auch korrekt 
installiert. Der Fehlercode bezieht sich nicht auf Python sondern das 
make.py kann einfach den GCC nicht finden, und der wird über eine 
Environmentvariable gefunden die bei der gcc Installation gesetzt werden 
soll.
Wenn die nicht gesetzt ist kann man auch die Batchdatei ausführen die 
bei der Windows version dabei ist, zB für den gcc Version 6:
1
c:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin\gccvar.bat

Danach muss in der Kommandozeile
1
arm-none-eabi-gcc --version

funktionieren und der gcc seine Version melden. Dann klappts auch mit 
dem kompilieren. So kann man auch mehrere gcc Versionen installieren und 
per Environmentvariable auswählen.

von Johannes S. (Gast)


Lesenswert?

F. F. schrieb:
> Schau dir erstmal an was so einige aus winzigen 8-bittern so raus holen.

ist richtig, aber die Cortex-M oder andere haben viel mehr an Peripherie 
zu bieten, z.B. schnelle LCD Controller oder wie beim Arch Pro mit dem 
LPC1768 gleich Ethernet on Chip. Das alles per Datenblatt from scratch 
zu programmieren kostet Zeit die nicht jeder investieren will, deshalb 
ist das zusammenstoppeln von fertigen Funktionen oder Klassen Libs nix 
verwerfliches finde ich.

von F. F. (foldi)


Lesenswert?

Johannes S. schrieb:
> ist richtig, aber die Cortex-M oder andere haben viel mehr an Peripherie
> zu bieten, z.B.

Das ist dann natürlich ein Grund.

Johannes S. schrieb:
> Das alles per Datenblatt from scratch
> zu programmieren kostet Zeit die nicht jeder investieren will, deshalb
> ist das zusammenstoppeln von fertigen Funktionen oder Klassen Libs nix
> verwerfliches finde ich.

Überhaupt nicht. Deswegen erfreut sich Arduino auch solcher Beliebtheit.
Wird auch immer mehr grafisch angeboten. Was meiner Meinung nach dann 
irgendwann den Hauptteil ausmacht.
Gerade schnell etwas machen zu können, ist im Hobby mindestens genauso 
wichtig, wie im professionellen Einsatz.
Die Profis müssen schnell Ergebnisse liefern. Wenn du ewig dran bist, zu 
Hause, und nichts wird fertig, verliert man die Lust.

Aber zu dem Beitrag, finde ich klasse.

von Johannes S. (Gast)


Lesenswert?

danke, ich habe auch nichts (mehr) gegen Arduino. mbed ist sicher keine 
grosse Konkurrenz zu Arduino, die STM haben sich da ja sehr breit 
gemacht und dafür gibt es auch ja mittlerweile auch die Arduino cores, 
wie auch für andere Architekturen. mbed war da seiner Zeit etwas vorraus 
und schwieriger in den Griff zu bekommen, ausser vielleicht die ersten 
mbed Boards + Online Compiler. Aber der Ur-mbed war da mit ca. 60-70 € 
einfach zu teuer und jetzt wird der Markt von den Chinaboards 
überschwemmt.
Trotzdem freut es mich wenn sich jemand auch mal was anderes ansieht 
oder ein Board aus der Schublade mit mbed zum Leben verhelfen kann.

von Jack (Gast)


Lesenswert?

Checker schrieb:
> make.py: error: Could not find executable for GCC_ARM.

Man brauch keine Windows-Environmentvariable zu setzen. Das geht auch 
als mbed-Konfiguration nach der Installation des Compilers:

[/c]
mbed config -G GCC_ARM_PATH "C:\Program Files (x86)\GNU Tools ARM 
Embedded\7 2017-q4-major\bin"
[c]
Statt dem Pfad im Beispiel sollte man natürlich den Pfad nehmen, in dem 
man den Compiler installiert hat.

von Checker (Gast)


Lesenswert?

ihr werdet es kaum glauben  :-)  aber die Sch... funktioniert.  :-)

Aus irgendwelchen Gründen funktioniert der Windows Installer wohl nicht 
richtig bei mir. Keine Ahnung. Ich muss Python selbst installieren, 
dabei advanced wählen und den Pfad eintragen lassen. Dann ist bei Python 
alles korrekt. Danach starte ich den Windows Installer und muss danach 
den gcc_arm Pfad anpassen. Wie ihr oben beschrieben habt. Vielen Dank 
für den Tipp. Ich habs mit der mbed config gemacht.

Danach lief compile durch und die Led blinkte, Änderungen vorgemommen, 
Led blinkte schneller.
Alles so wie es soll. Vielen Dank für eure Geduld.

Läuft das für AVR's und ihren make ähnlich ab?
Habe bisher dafür nur Atmel Studio verwendet.

Nochmal für die Nachwelt alles zusammengefasst.
1
C:\Users\Checker>mbed import mbed-os-example-blinky
2
3
[mbed] Importing program "mbed-os-example-blinky" from "https://github.com/ARMmbed/mbed-os-example-blinky" at latest revision in the current branch
4
[mbed] Adding library "mbed-os" from "https://github.com/ARMmbed/mbed-os" at rev #f9ee4e849f8c
5
[mbed] Auto-installing missing Python modules...
6
7
C:\Users\Checker>mbed detect
8
9
[mbed] WARNING: The mbed tools were not found in "C:\Users\Checker".
10
[mbed] WARNING: Limited information will be shown about connected mbed targets/boards
11
---
12
[mbed] Detected "ARCH_PRO" connected to "E:" and using com port "COM7"
13
14
C:\Users\Checker>cd mbed-os-example-blinky
15
16
C:\Users\Checker\mbed-os-example-blinky>mbed detect
17
18
[mbed] Detected ARCH_PRO, port COM7, mounted E:, interface version 0244:
19
[mbed] Supported toolchains for ARCH_PRO
20
+----------+-----------+-----------+-----------+-----------+-----------+-----------+
21
| Target   | mbed OS 2 | mbed OS 5 |    ARM    |  GCC_ARM  |    IAR    |   ARMC6   |
22
+----------+-----------+-----------+-----------+-----------+-----------+-----------+
23
| ARCH_PRO | Supported | Supported | Supported | Supported | Supported | Supported |
24
+----------+-----------+-----------+-----------+-----------+-----------+-----------+
25
Supported targets: 1
26
Supported toolchains: 4
27
28
C:\Users\Checker\mbed-os-example-blinky>mbed toolchain GCC_ARM
29
30
[mbed] GCC_ARM now set as default toolchain in program "mbed-os-example-blinky"
31
32
C:\Users\Checker\mbed-os-example-blinky>mbed target ARCH_PRO
33
34
[mbed] ARCH_PRO now set as default target in program "mbed-os-example-blinky"
35
36
C:\Users\Checker\mbed-os-example-blinky>mbed compile
37
38
usage: make.py [-h] [-m MCU] [-t TOOLCHAIN] [--color] [--cflags CFLAGS]
39
               [--asmflags ASMFLAGS] [--ldflags LDFLAGS] [-c]
40
               [--profile PROFILE] [--app-config APP_CONFIG] [-p PROGRAM]
41
               [-n PROGRAM] [-j JOBS] [-v] [--silent] [-D MACROS]
42
               [-S [{matrix,toolchains,targets}]] [-f GENERAL_FILTER_REGEX]
43
               [--stats-depth STATS_DEPTH] [--automated] [--host HOST_TEST]
44
               [--extra EXTRA] [--peripherals PERIPHERALS]
45
               [--dep DEPENDENCIES] [--source SOURCE_DIR]
46
               [--duration DURATION] [--build BUILD_DIR] [-N ARTIFACT_NAME]
47
               [-d DISK] [-s SERIAL] [-b BAUD] [-L] [--rpc] [--usb] [--dsp]
48
               [--testlib] [--build-data BUILD_DATA] [-l LINKER_SCRIPT]
49
make.py: error: Could not find executable for GCC_ARM.
50
Currently set search path: No path set
51
[mbed] ERROR: "C:\Python27\python.exe" returned error code 2.
52
[mbed] ERROR: Command "C:\Python27\python.exe -u C:\Users\Checker\mbed-os-example-blinky\mbed-os\tools\make.py -t GCC_ARM -m ARCH_PRO --source . --build .\BUILD\ARCH_PRO\GCC_ARM" in "C:\Users\Checker\mbed-os-example-blinky"
53
---
54
55
!!! Pfad ändern !!! 
56
Bsp.   C:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin
57
58
C:\Users\Checker\mbed-os-example-blinky>mbed config -G GCC_ARM_PATH "C:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin"
59
[mbed] C:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin now set as global GCC_ARM_PATH
60
61
C:\Users\Checker\mbed-os-example-blinky>mbed compile
62
...
63
...
64
Compile [100.0%]: test_env.cpp
65
Link: mbed-os-example-blinky
66
Elf2Bin: mbed-os-example-blinky
67
+------------------+-------+-------+------+
68
| Module           | .text | .data | .bss |
69
+------------------+-------+-------+------+
70
| [fill]           |   612 |     4 |   17 |
71
| [lib]\c.a        | 17139 |  2472 |   89 |
72
| [lib]\gcc.a      |  3892 |     0 |    0 |
73
| [lib]\misc       |   252 |    12 |   28 |
74
| main.o           |   202 |     4 |   24 |
75
| mbed-os\drivers  |    46 |     0 |    0 |
76
| mbed-os\hal      |  1733 |     4 |   68 |
77
| mbed-os\platform |  1937 |   260 |   21 |
78
| mbed-os\rtos     |  9995 |   168 | 6073 |
79
| mbed-os\targets  |  3564 |     4 |  244 |
80
| Subtotals        | 39372 |  2928 | 6564 |
81
+------------------+-------+-------+------+
82
Total Static RAM memory (data + bss): 9492 bytes
83
Total Flash memory (text + data): 42300 bytes
84
85
Image: .\BUILD\ARCH_PRO\GCC_ARM\mbed-os-example-blinky.bin
86
87
C:\Users\Checker\mbed-os-example-blinky>
88
89
90
*.bin Datei auf Arch Pro Board kopieren, Bsp. Laufwerk DAPLINK(E:)
91
C:\Users\Checker\mbed-os-example-blinky\BUILD\ARCH_PRO\GCC_ARM\mbed-os-example-blinky.bin
92
93
kurz warten und Board Resettaster drücken, LED sollte blinken
94
95
Änderungen in main.cpp vornehmen
96
C:\Users\Checker\mbed-os-example-blinky\main.cpp
97
und neu compilieren lassen usw.

von Checker (Gast)


Lesenswert?

nochwas, die gccvar.bat habe ich ausgeführt

arm-none-eabi-gcc --version

wird jedoch nicht gefunden ???

Die arm-none-eabi-gcc.exe ist aber vorhanden, sehe ich im Ordner

Muss deswegen nochwas korrigiert werden?

von Jack (Gast)


Lesenswert?

Checker schrieb:
> ihr werdet es kaum glauben  :-)  aber die Sch... funktioniert.  :-)

Doch, glauben "wir", funktioniert "bei uns" schon "ewig" :-)
>
1
> C:\Users\Checker\mbed-os-example-blinky>mbed compile
2
> ...
3
> ...
4
> *.bin Datei auf Arch Pro Board kopieren, Bsp. Laufwerk DAPLINK(E:)
5
> C:\Users\Checker\mbed-os-example-blinky\BUILD\ARCH_PRO\GCC_ARM\mbed-os-example-blinky.bin
6
>

Kann man in einem Rutsch machen:
1
mbed compile -f

von Jack (Gast)


Lesenswert?

Checker schrieb:
> nochwas, die gccvar.bat habe ich ausgeführt
>
> arm-none-eabi-gcc --version
>
> wird jedoch nicht gefunden ???

Dann rufst du irgendwas falsch auf. gccvar setzt den Pfad in einer neuen 
cmd.exe. Nur in dieser cmd.exe wird danach der Compiler gefunden.

Das ist nur beschränkt nützlich.

> Die arm-none-eabi-gcc.exe ist aber vorhanden, sehe ich im Ordner
>
> Muss deswegen nochwas korrigiert werden?

Nein. Das mbed cli braucht das nicht.

von Johannes S. (Gast)


Lesenswert?

Checker schrieb:
> nochwas, die gccvar.bat habe ich ausgeführt

hoffentlich in der Eingabeaufforderung. Nur die die Batchdatei ausführen 
bringt nix, das ist nur für die gerade ausgeführte Shell gültig, mit der 
Ausführung der Batchdatei startet man die und die beendet sich gleich 
wieder.

Ein weiterer Schritt wäre dann MCUXpresso zu installieren und das 
Projekt per mbed export / import in MCUXpresso anzulegen. Der Arch Pro 
sollte mit der aktuellen Firmware als CMSIS-DAP debug probe in der 
Geräteliste auftauchen und dann man direkt darüber debuggen.
Ein bisschen Eclipse Erfahrung vorausgesetzt, da findet man ja jeden Tag 
neue Dialoge. Das mitgelieferte Tutorial ist aber sehr ausführlich und 
hilfreich für den Anfang.

von Checker (Gast)


Lesenswert?

okay, dachte das wird mit der .bat ein dauerhafter Pfadeintrag. In der 
gleichen Konsole klappt alles.

6.3.1 20170620 (release) [ARM/embedded-6-branch revision 249437]

Wenn ich vielleicht MCUXpresso verwende, kann ich dann alles bis jetzt 
installierte wieder deinstallieren?

von temp (Gast)


Lesenswert?

Ich beobachte mbed auch schon sehr lange. Lange Zeit gab es für den 
STM32F103 keine USB Unterstützung, was in Hinsicht auf die 
Blue-Pill-Boards schade war. Inzwischen geht das aber. Ich hab mir mal 
die Mühe gemacht und das folgende Projekt compiliert:

https://os.mbed.com/users/hudakz/code/STM32F103C8T6_USBSerial/

Wenn ich den Online-Compiler benutze kriege ich am Ende ein Binarie von 
ca 34k. Da kann man aber mit Keil in der freien Version schon nicht mehr 
debuggen.
Exportiere ich das ganze für den gcc lande ich bei 56k. Wohlgemerkt das 
ist ein blinky mit USB-CDC das nur ein paar Bytes an den Host sendet. 
Das ist mir persönlich deutlich zu fett. Allerdings ist das auch kein 
Wunder. Unter dem (in meinen Augen recht gut geschriebenen) mbed-C++ 
Code liegt nochmal die ganze STM32-HAL. Allein die nötigen Header 
belegen 6MB in 248 Dateien. Arduino ist da auch nicht viel sparsamer, 
aber diese Entwicklung mache ich persönlich nicht mehr mit. Für kleine 
Sachen wird mit den Register und dem Manual gearbeitet und für alles das 
wo es nicht mehr reicht nehme ich dann doch lieber ein richtiges BS. In 
sofern ist mbed also keine Alternative.

von Johannes S. (Gast)


Lesenswert?

Checker schrieb:
> Wenn ich vielleicht MCUXpresso verwende, kann ich dann alles bis jetzt
> installierte wieder deinstallieren?

wenn du mbed nicht benutzen möchtest dann ja, mit MCUXpress kannst du 
die Programme von Adam und Eva an selber bauen. D.h. man kann aus 
vorinstallierten Templates ein C/C++ Projekt erstellen, Linkerfile und 
Startupfile werden aus dem Template erzeugt. Das ist ok zum Grundlagen 
lernen, mit mbed bekommt ein Projekt auf höherem Abstraktionslevel 
erzeugt.
Die beiden Installationen tun sich aber nix und können nebenander 
laufen, MCUX installiert den gcc nochmal in seinem eigenen Pfad.

von Checker (Gast)


Lesenswert?

okay, gut zu wissen, dann lasse ich das erstmal so und wenn es mich 
juckt probiere ich mcuxpresso aus. Danke dir/euch soweit.

von Christopher J. (christopher_j23)


Lesenswert?

temp schrieb:
> Das ist mir persönlich deutlich zu fett.

Ich finde mbed in der Grundkonfiguration auch etwas zu fett. Das liegt 
aber vor allem am RTOS und weniger an dem HAL von ST, siehe z.B. 
https://github.com/adamgreen/gcc4mbed/blob/master/notes/size_analysis.creole

von Johannes S. (Gast)


Lesenswert?

Beim mbed 5 mit dem RTOS ist auch die 'große' Newlib drin weil die Nano 
Version nicht threadsafe ist, das macht gute 20k aus.

von Checker (Gast)


Lesenswert?

was muss man denn beim mbed cli machen um offline ein neues projekt zu 
erstellen? Ich lese immer nur von Bsp. importieren. Weil es müssen ja 
dann auch alle weiteren benötigten Dateien herbeigezaubert werden in den 
neuen Ordner.

von Johannes S. (Gast)


Lesenswert?

für mbed2 hatte ich das im ersten Post schonmal beschrieben, für mbed5 
ist etwas einfacher weil das default ist:
1
mkdir myProject
2
cd myProject
3
mbed new .

jetzt noch ein main.cpp erstellen und im Projektverzeichniss speichern, 
dann einfach kompilieren mit
1
#include "mbed.h"
2
3
DigitalOut led1(LED1);
4
5
// main() runs in its own thread in the OS
6
int main() {
7
    while (true) {
8
        led1 = !led1;
9
        wait(0.5);
10
    }
11
}
1
mbed compile -t GCC_ARM -m BLUEPILL_F103C8
z.B. für das Bluepill Board.

Der Schritt 'mbed new .' lädt dann das aktuelle mbed-os von github.com. 
Das geht leider nur für alle Targets in einem Stück, und da das 
mittlerweile sehr viele sind dauert das eine Weile. Man kann das auch 
einmal machen, die Targets die man nicht braucht aus dem Verzeichnis 
.\mbed-os\targets rauslöschen und das dann als Kopiervorlage benutzen.
Eigenen Quellcode kann man jetzt im Projektverzeichnis erstellen oder 
auch in Unterverzeichnisse packen. Das Build System sucht die Quellen 
und erzeugt die nötigen Compiler und Linker includes.

von Veit D. (devil-elec)


Lesenswert?

Vielen Dank für die wunderbare und verständliche Erklärung.
Funktioniert.  :-)

von Johannes S. (Gast)


Lesenswert?

danke, freut mich.
Noch ein Tip zur Codegrösse: default ist das 'develop' Profil, die 
Compilersettings die da verwendet werden sind in 
./mbed-os/tools/profiles zu finden. Das zieht printf für Debugausgaben 
mit rein und kostet in der newlib viel Speicher. Mit
1
mbed compile --stats-depth 4 --profile release -c
bekommt man eine erweiterte Statistik über Speichernutzung, benutzt das 
release Profil und -c macht ein clean build.

von Checker (Gast)


Lesenswert?

Danke, funktioniert und .bin schrumpft. Damit habe ich nun auch den 
Pintakt auf 24MHz erhöhen können. Das wäre 1/4 vom CPU Takt. Ist das so 
normal? Würde bedeuten der braucht 4 Takte zum Pin umschalten.


1
#include "mbed.h"
2
#include "LPC17xx.h"
3
4
int main(void) {
5
6
    SystemInit();                      //Clock and PLL configuration
7
      LPC_GPIO0 -> FIODIR = 0xFFFFFFFF;    //Configure the PORT pins as OUTPUT;
8
9
10
    while(1)
11
    {
12
         LPC_GPIO0->FIOSET = 0xFFFFFFFF;     // Turn ON all the LEDs
13
14
         LPC_GPIO0->FIOCLR = 0xFFFFFFFF;     // Turn OFF all the LEDs
15
    }
16
17
    return 0 ;
18
}


Nur mit der MCUXpresso IDE komme ich nicht klar.
Beitrag "MCUXpresso - CMSIS Core wird nicht gefunden"

von Johannes S. (Gast)


Lesenswert?

Checker schrieb:
> Ist das so
> normal?

ich würde sagen ja, das ist schon sehr schnell.
In dem Beispiel nutzt du natürlich nur das Buildsystem von mbed und 
nicht die lib. Das funktioniert in dem Fall weil mbed auch die CMSIS 
benutzt. Das SystemInit wird auch schon im Startupcode aufgerufen und 
kann weggelassen werden.
Als Benchmark mag ich diese Pintoggle Beispiele nicht, die Power der 
Cortex-M  liegt eher in viel Speicher, guter Peripherie und eben der 
mbed lib die den Code einfacher und für die Standardklassen auch 
portabel macht. Die Programmierung auf Registerebene braucht man 
natürlich trozdem wenn man eigene Klassen bauen möchte mit Komponenten 
die nicht in diesem Standard enthalten sind, zB. DMA, Counter, 
Grafikfunktionen etc.

Das MCUXpresso Problemchen hatte ich gesehen, kann ich evtl. morgen 
reinsehen, hier ist schon spät.

von Checker (Gast)


Lesenswert?

ich wollte mal testen was so geht. Mit 8Bit AVRs kenne ich mich 
einigermaßen aus. Deswegen nun der Versuch mit dem Arch Pro Board als 
ich dein Thread entdeckt hatte. Was sowas auslöst ist manchmal nicht 
vorhersehbar.
Die mbed Lib werde ich auch wieder nutzen.  :-)

Das mit MCUXpresso drängelt erstmal nicht. So umfangreich sind die 
Gehversuche nicht.

von Johannes S. (Gast)


Lesenswert?

Checker schrieb:
> Das mit MCUXpresso drängelt erstmal nicht.

ok, IDEs mag ja auch nicht jeder und mit Eclipse und den vielen Optionen 
muss man sich auch erstmal anfreunden. Aber das Debuggen oder Code 
analysieren damit alleine macht schon Spass oder mit Ctrl-Klick ist man 
sofort in Definitionen von Klassen oder Typen.

von Checker (Gast)


Lesenswert?

Die Autovervollständigung und IntelliSense wären irgendwann schon von 
Vorteil.  :-)

Mir fiel auf das sich die 4 vordefinierten Leds irgendwie immer negiert 
verhalten. Die anderen Portpins dagegen nicht.

while(1) ist leer und "mbed.h" ist immer inkludiert.

DigitalOut led1(LED1);    // Led leuchtet

DigitalOut led1(LED1,0);  // Led leuchtet

DigitalOut led1(LED1,1);  // Led leuchtet nicht

DigitalOut led(P0_25);    // Pin ist "aus"

DigitalOut led(P0_25,0);  // Pin ist "aus"

DigitalOut led(P0_25,1);  // Pin ist "ein"

Hat sich dann nach der Schaltplansuche bestätigt. Die haben die Leds 
wirklich gegen (+) angeklemmt. Sorgt erstmal für Verwirrung.

Pinname P1_18, P1_20, P1_21 und P1_23

von Johannes S. (Gast)


Lesenswert?

Checker schrieb:
> Die haben die Leds
> wirklich gegen (+) angeklemmt. Sorgt erstmal für Verwirrung.

das ist aber üblich weil die Ausgänge nach GND mehr Strom schalten 
können. So war es jedenfalls mal, heute sind da oft Push-Pull Stufen 
drin die auch nach Plus mehrere mA schaffen. Das Thema gab es hier schon 
öfter, hier ist zB etwas altes dazu:
Beitrag "LED gegen VCC oder GND?"
Ich mache mir dafür defines wie
1
#define LED_ON   (0)
2
#define LED_OFF  (1)
Da C++ kann man auch ein DigitalOutInvers bauen und die read/write und 
Operatoren überschreiben, das wäre noch eleganter.

von Checker (Gast)


Lesenswert?

okay, laut Datenblatt kann er 4mA sink wie source. Bin 20mA vom ATmega 
gewohnt. Ich muss bei allen genau aufpassen.  :-)

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.