Ich habe einige STM32 Nucleo-Boards, die ich gerne verwenden würde. Hier gibt es ein Arduino Framework für die Boards: https://github.com/stm32duino/Arduino_Core_STM32 Bis jetzt hat das aber noch nie funktioniert. Alle paar Monate installiere ich das Ding neu, allerdings konsequent erfolglos. Woran könnte das liegen Hier die Debug-Ausgabe Arduino: 1.8.9 (Linux), Board: "Nucleo-144, Nucleo H743ZI, Mass Storage, Enabled (generic 'Serial'), None, Low/Full Speed, Smallest (-Os default), Newlib Nano (default)" /home/christoph/tools/Arduino/arduino-1.8.9/arduino-builder -dump-prefs -logger=machine -hardware /home/christoph/tools/Arduino/arduino-1.8.9/hardware -hardware /home/christoph/.arduino15/packages -tools /home/christoph/tools/Arduino/arduino-1.8.9/tools-builder -tools /home/christoph/tools/Arduino/arduino-1.8.9/hardware/tools/avr -tools /home/christoph/.arduino15/packages -built-in-libraries /home/christoph/tools/Arduino/arduino-1.8.9/libraries -libraries /home/christoph/Arduino/libraries -fqbn=STM32:stm32:Nucleo_144:pnum=NUCLEO_H743ZI,upload_method=MassStorag e,xserial=generic,usb=none,xusb=FS,opt=osstd,rtlib=nano -ide-version=10809 -build-path /tmp/arduino_build_381654 -warnings=none -build-cache /tmp/arduino_cache_427275 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arm-none-eabi-gcc.path=/home/christoph/.arduino15/p ackages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7 -prefs=runtime.tools.arm-none-eabi-gcc-8.2.1-1.7.path=/home/christoph/.a rduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7 -prefs=runtime.tools.CMSIS.path=/home/christoph/.arduino15/packages/STM3 2/tools/CMSIS/5.5.1 -prefs=runtime.tools.CMSIS-5.5.1.path=/home/christoph/.arduino15/package s/STM32/tools/CMSIS/5.5.1 -prefs=runtime.tools.STM32Tools.path=/home/christoph/.arduino15/packages /STM32/tools/STM32Tools/1.3.0 -prefs=runtime.tools.STM32Tools-1.3.0.path=/home/christoph/.arduino15/pa ckages/STM32/tools/STM32Tools/1.3.0 -verbose /home/christoph/tools/Arduino/arduino-1.8.9/examples/01.Basics/Blink/Bli nk.ino Board Nucleo_144 (Plattform stm32, Paket STM32) ist unbekannt Fehler beim Kompilieren für das Board Nucleo-144.
Hast Du das Nucleo 144 Board vorher über den Board Manager hinzugefügt? https://github.com/stm32duino/wiki/wiki/Getting-Started
>Hast Du das Nucleo 144 Board vorher über den Board Manager hinzugefügt? Ja schon. Aber nach all der Zeit bin ich jetzt doch weiter. Ich habe das STM32 Paket mit dem Board-Manager deinstalliert und nachdem im Verzeichnis .arduino immer noch nicht alle Files weg waren, habe ich diese dann noch von Hand gelöscht. Dann das gesamte STM32Duino über den Board-Manager neu installiert. Hurra, es compiliert .... aber: Jetzt findet er keine Download Möglichkeit.
Mittlerweile glaube ich ja, dass das Hauptgeschäft von ST gar nicht die Produktion von Mikrocontrollern sondern von Spielen ist. Die Spiele gehören zur Kategorie "Installation-Advendure-Games" mit dem man sich über Tage beschäftigen kann. Das ist der Output: .... Global variables use 800 bytes (6%) of dynamic memory, leaving 11488 bytes for local variables. Maximum is 12288 bytes. An error occurred while uploading the sketch STM32_Programmer.sh not found. Please install it or add '<STM32CubeProgrammer path>/bin' to your PATH environment: https://www.st.com/en/development-tools/stm32cubeprog.html Aborting!
Seit der Übernahme durch ST läuft dieses Projekt nur noch gruselig. ST kann einfach keine Software. Für einige ältere STM32 Modelle gibt es eine ältere Version vom Projekt, welches von Dan Drown zum Download bereitgestellt wird. Diese Version läuft noch ohne Cube. http://stefanfrings.de/stm32/stm32f1.html#arduino
>Seit der Übernahme durch ST läuft dieses Projekt nur noch gruselig. ST >kann einfach keine Software. Stefan, Du hast völlig Recht, der Meinung bin ich auch. Zu herunterladen des Cube-Programmers muss man seine E-Mail angeben. Dafür bekommt man dann einen 90Mb großes Programm ( früher hatten Betriebssysteme mal diese Größe und nicht die Flash-tools ). Natürlich ist das Ergebnis keineswegs überzeugend, denn wie könnte es auch anders sein: Das Programm funktioniert nicht. Es gibt die Fehlermeldung, dass man openJFX ( also eine neue Java Runtime ) herunterladen muss. Natürlich ist das Ergebnis keineswegs überzeugend, denn wie könnte es auch anders sein: Das Programm funktioniert nicht. Weil Ubuntu die alte JavaSDK als default nimmt. Welcher hirnverbrannte Idiot kam bei ST auf die Idee, dass eine Flash-Software die neuesten GUI-Elemente braucht?
Sebastian schrieb: > Es gibt die Fehlermeldung, dass man openJFX ( also eine neue Java > Runtime ) herunterladen muss. Du musst es mit Oracle Java 8 ausführen. https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html Unter Linux nutze ich dazu dieses Hilfs-Script, welches drei benötigte Libraries automatisch auspackt, falls nötig: http://stefanfrings.de/stm32/start.tar.gz > Welcher hirnverbrannte Idiot kam bei ST auf die Idee, > dass eine Flash-Software die neuesten GUI-Elemente braucht? Da hast du etwas missverstanden. JFX gibt es schon seit vielen jahren, wurde zwischenzeitlich aus Linux entfernt und jetzt doch wieder eingefügt. Allerdings in einem Verzeichnis, wo diese Kack Software sie nicht findet.
Das dürfte an den geänderten Lizenzbedingungen liegen, das liegt aber an Oracle und da kann ST nix für.
>Du musst es mit Oracle Java 8 ausführen.
Danke für den Hinweis.
Ich habe festgestellt, dass es eine Kommandozeilenversion gibt, die von
der Arduino-IDE benötigt wird.
Ich kann ein Terminal öffnen, meinen Tool-Pfad exportieren und dann die
Arduino-IDE vom Terminal aus starten:
export PATH=~/tools/Arduino/STM32CubeProg/bin:$PATH
./arduino
Natürlich ist das Ergebnis keineswegs überzeugend, denn wie könnte es
auch anders sein: Das Programm hat keine Rechte:
Global variables use 944 bytes (0%) of dynamic memory, leaving 130128
bytes for local variables. Maximum is 131072 bytes.
-------------------------------------------------------------------
STM32CubeProgrammer v2.1.0
-------------------------------------------------------------------
libusb: error [_get_usbfs_fd] libusb couldn't open USB device
/dev/bus/usb/003/005: Keine Berechtigung
libusb: error [_get_usbfs_fd] libusb requires write access to USB device
nodes.
libusb: error [_get_usbfs_fd] libusb couldn't open USB device
/dev/bus/usb/003/005: Keine Berechtigung
libusb: error [_get_usbfs_fd] libusb requires write access to USB device
nodes.
ST-LINK error (DEV_CONNECT_ERR)
Leider weiß ich nicht, welchen Programmiermodus man normalerweise nimmt
( Massstorage, SWD, Serial, DFU ).
Die Meldung gilt für SWD
>Das dürfte an den geänderten Lizenzbedingungen liegen, das liegt aber an >Oracle und da kann ST nix für. Doch: Warum muss ein Flash-Tool eine SchnickSchnack-GUI mit 90Mb haben, anstatt eine einfache alte mit SWING die wirklich überall läuft?
Sebastian schrieb: > Das Programm hat keine Rechte Du trittst aber auch in jedes Fettnäpfchen , könntest mei Seelenverwandter sein. "Zufällig" kenne ich nämlich auch dieses Problem. Da gibt es ein Unterverzeichnis Drivers/rules. Die Dateien darin kopierst du nach /etc/udev/rules.d. Oder du startest das Programm einfach mit sudo (falls du ihm vertraust, keine Dummheiten zu begehen).
Sebastian schrieb: > Doch: Warum muss ein Flash-Tool eine SchnickSchnack-GUI mit 90Mb haben, > anstatt eine einfache alte mit SWING die wirklich überall läuft? Vor allem: Cube MX braucht ja schließlich auch kein JFX.
Sebastian schrieb: > Leider weiß ich nicht, welchen Programmiermodus man normalerweise nimmt SWD wenn du einen ST-Link Adapter verwendest. Ich glaube, du brauchst ein paar Grundlagen: http://stefanfrings.de/stm32/index.html
>Ich glaube, du brauchst ein paar Grundlagen: Wohl war .... So, die LED blinkt. Damit liegt die TTB ( Time to Blink ) bei ca. 4 Stunden, wobei man von einem Arduino Framework deutlich mehr erwarten kann. Man muss die rules kopieren: ~/tools/Arduino/STM32CubeProg/Drivers/rules$ sudo cp *.* /etc/udev/rules.d/ Das wirkt aber scheinbar nicht gleich, man muss die IDE neu starten. Ausserdem dachte ich, dass das Blink Beispiel nicht geht. Es scheint so zu sein, als wenn das Falshen nur bei jedem zweiten Mal funktioniert. Aber ich bin zuversichtlich, dass ich jetzt die LED auf dem Board https://www.st.com/en/evaluation-tools/nucleo-h743zi.html mit gefühlten 100MHz blinken kann. Ich muss mal raus kriegen, ob's einen DA-Wandler gibt und ob der von Framework unterstützt wird.
Sebastian schrieb: > Das wirkt aber scheinbar nicht gleich, man muss die IDE neu starten. Eigentlich musst du das USB Gerät ab- und wieder anstecken.
>Eigentlich musst du das USB Gerät ab- und wieder anstecken.
Ah, OK, könnte sein, dass ich das im Eifer des Gefechts getan habe ...
Der STM32H743ZI auf dem Nucleo Board ( TQFP144? ) hat tatsächlich zwei DAC. Aber ich bin mir nicht sicher, wie die angesprochen werden müssen, analogWrite(pin,wert) ? Im Moment tut sich da nichts:
1 | #define PIN_DAC1 40 // Achtung, wahrscheinlich falsch
|
2 | |
3 | void setup() |
4 | {
|
5 | pinMode(LED_RED, OUTPUT); |
6 | }
|
7 | |
8 | void loop() |
9 | {
|
10 | digitalWrite(LED_RED, 1); |
11 | analogWrite(PIN_DAC1, 200); |
12 | delay(1000); // wait for a second |
13 | |
14 | digitalWrite(LED_RED, 0); |
15 | analogWrite(PIN_DAC1, 0); |
16 | delay(1000); // wait for a second |
17 | }
|
18 | |
19 | Bin ich am falschen Pin? Geht analogWrite nicht? |
Das müsste do eigentlich alles in der Doku des Arduino Core beschrieben sein. Ok zugegebenermaßen sind diese Dokus oft Lückenhaft, insbesondere bei den Punkten, wo sie den Arduino Standard weitgehend 1:1 implementiert haben. Guck zuerst in die Doku auf Github: https://github.com/stm32duino/wiki/wiki/ Zum DAC habe ich da aber nichts gefunden, daher musst du wohl auf die Cube HAL Funktionen zugreifen oder den DAC "zu Fuß" ansprechen. Und wenn du dort nichts findest, könnte der Standard gelten: https://www.arduino.cc/reference/en/ (den man ohnehin kennen sollte, wenn man Arduino benutzt) Darüber hinaus solltest zu zur Kenntnis nehmen, dass der Arduino Core seit Übernahme durch ST komplett auf Cube HAL basiert. Deswegen stehen alle Funktionen aus der Cube HAL zur Verfügung, sofern sie nicht durch das Arduino Framework belegt wurden: https://www.st.com/en/embedded-software/stm32cubeh7.html#resource Cube HAL basiert wiederum auf der CMSIS Library, deren Struktur und Funktionsumfang von ARM als Standard spezifiziert wurde. Hier würde ich Dir raten, einen Blick in di Datei stm32h7xx.h zu werfen, und in die Dateien, die darin inkludiert sind. Der gcc Compiler wird in der Regel zusammen mit der newlib-nano Library verwendet. Da sind die Standard C Funktionen drin, wie z.B. sprintf() und atoi(). Sie ist hier Dokumentiert: https://sourceware.org/newlib/docs.html Bevor du loslegst, würde ich Dir empfehlen, herauszufinden, welche Ressourcen (insbesondere Timer) bereits vom Arduino Framework belegt sind. Das erspart Dir stundenlanges Stochern im Nebel. Dazu habe ich auf die Schnelle keine Doku gefunden, musst du mal selber suchen.
Die Doku zum DAC ist leider gleich Null. Aber mittlerweile wurde das hier gelöst: Beitrag "Re: Arduino Nucleo-H743ZI" Wenn ST zu den Boards die Arduino üblichen, einfachen Examples gemacht hätte, wäre das ein Sache von Sekunden. So muss man ein paar Stunden suchen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.