Wie kompiliert man MicroPython vom Quellcode selbst?

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo zusammen,

ich will mittels MicroPython und einem ESP32 einen Motor über PWM ansteuern. Für das Vorhaben hat man mir empfohlen MCPWM zu verwenden. Das ist standardmäßig nicht in MicroPython enthalten, aber es gibt auf GitHub jemand, der das eingebaut hat: Siehe hier

Ich habe bis jetzt immer die fertige *.bin-Datei mit 'esptool' auf dem ESP geflasht und konnte dann MicroPython benutzen. Jetzt muss ich das selbst kompilieren und das habe ich noch nie gemacht.

Die Dokumentation von MicroPython beschreibt zwar das vorgehen hier, aber ich habe jetzt immer noch keine *.bin-Datei oder finde sie nicht.

Das kompilieren will ich auf einem Raspberry Pi mit dem aktuellen Betriebssystem machen, da das grad mein PC-Ersatz ist. Bis jetzt habe ich folgendes gemacht:
- *.zip-Datei mit dem Code heruntergeladen und entpackt
- in dem Ordner 'mpy-cross' gewechselt
- 'make' ausgeführt mit diesem Ergebnis:

Code: Alles auswählen

Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
GEN build/genhdr/mpversion.h
CC main.c
LINK mpy-cross
   text	   data	    bss	    dec	    hex	filename
 368925	  16912	    872	 386709	  5e695	mpy-cross
- in den Ordner 'docs' gewechselt
- 'make html' ausgeführt
- '/docs/build/html/index.html' im Browser erfolgreich getestet

Und jetzt weis ich nicht mehr weiter. In der Doku steht jetzt das man Tests ausführen kann, aber egal wo ich 'make test' eingebe, bekomme ich eine Fehlermeldung, als Beispiel:

Code: Alles auswählen

dennis@raspberrypi:~/Downloads/micropython_esp32_mcpwm/tests $ make test
make: *** Keine Regel, um „test“ zu erstellen.  Schluss
Habe ich was übersehen, bin ich auf dem falschen Weg?

Um es nochmal zu verdeutlichen, ich habe in der Doku Build the Cross-Compiler verwendet.

Danke schon mal für eure Hilfe.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich weiss nicht, wofuer dieser Schritt (edit: den du beschreibst) notwendig ist (ich erinnere mich da auch nicht mehr en Detail aus dem stehgreif), aber du musst den Anweisungen fuer den spezifischen Port folgen: https://github.com/bskp/micropython_esp ... orts/esp32

Damit funktioniert das ganz fein fuer mich. Wichtig dabei: es muss wirklich das passende IDF sein, micropython hat Probleme, da beliebige Versionen zu benutzen. Das drueckt sich durch diese Zeile aus:

git checkout <Current supported ESP-IDF commit hash>

Ein bisschen weiter vorher steht das Kommando, mit dem man rausbekommt, was der richtige hash ist.
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Danke für die schnelle Antwort.

Ich bin bis zu dem Punkt gekommen:
Using the IDF scripts to install the toolchain (IDF 4.x only)

Da bin ich dann dem Link gefolgt, der in "Follow the steps at the Espressif Getting Started guide." zu finden war.

Aber der hat mich trotz GitHub-Account nicht in die Doku's gelassen, dann habe ich selbst einen Link ausgesucht und bin hier bis "Start Project" gefolgt.

Dann komme ich zurück zu dem Punkt "Using the IDF scripts to install the toolchain (IDF 4.x only)" und soll "./install.sh" eingeben und bekomme dann folgende Fehlermeldung:

Code: Alles auswählen

(build-venv) dennis@raspberrypi:~/src/github.com/espressiif/esp-idf.git $ ./install.sh
Installing ESP-IDF tools
Installing tools: xtensa-esp32-elf, esp32ulp-elf, openocd-esp32
ERROR: tool xtensa-esp32-elf does not have versions compatible with platform linux-arm64
Ich bin immer noch in der Entwicklungsumgebung wie ihr seht.

Google hat mir leider nicht weiter helfen können.


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das gibt es nicht (so direkt) für den Pi. Das ist bei mir ein Intel Linux. Du kannst den Bums glaube ich auch unter Windows machen, wenn du kein “großes” Linux hast.

Das hier geht vielleicht auch: https://github.com/koendv/xtensa-esp32-elf-raspberrypi - kam auch recht schnell aus der googelei gefallen. Einfach nur die letzte Zeile der Fehlermeldung gesucht. Aber wie genau du das dann platzierst musst du schauen.
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Vielen Dank.

Einige Nervenzusammenbrüche später, war ich dann so weit, dass ich das über 'apt' installieren konnte, aber:

Code: Alles auswählen

sudo apt install ./xtensa-esp32-elf_8.2.0-2020r2_arm64.deb
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
Hinweis: »xtensa-esp32-elf« wird an Stelle von »./xtensa-esp32-elf_8.2.0-2020r2_arm64.deb« gewählt.
Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass
Sie eine unmögliche Situation angefordert haben oder, wenn Sie die
Unstable-Distribution verwenden, dass einige erforderliche Pakete noch
nicht erstellt wurden oder Incoming noch nicht verlassen haben.
Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 xtensa-esp32-elf : Hängt ab von: python-click ist aber nicht installierbar
                    Hängt ab von: python-cryptography ist aber nicht installierbar
                    Hängt ab von: python-future ist aber nicht installierbar
                    Hängt ab von: python-pip ist aber nicht installierbar
                    Hängt ab von: python-pyelftools ist aber nicht installierbar
                    Hängt ab von: python-pyparsing ist aber nicht installierbar
                    Hängt ab von: python-serial ist aber nicht installierbar
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.
Das Problem ist, dass der versucht zum Beispiel 'apt install python-future' auszuführen. Wenn ich das manuell mache geht das auch nicht, weil das Paket nicht gefunden wurde. Wenn ich es mit 'apt install python3-future' mache geht das. Das betrifft die anderen Pakete auch.
Wie kann ich der Installation sagen, dass das mit 'python3' geht?

Habe gerade keinen anderen PC hier, deswegen muss ich das mit dem Pi machen.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Da kann ich nicht wirklich was zu sagen. Ich benutze das ja nicht. Bei mir geht install.sh ganz fein, ich nutze eben einen Intel PC. Das der Kram für 64Bit PiOs ist, hast du gesehen?
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Ja das habe ich gesehen und das habe ich auch installiert.

Da muss ich morgen den Laptop aus dem Büro hier her holen, dann versuche ich es unter Windows.

Danke für deine Hilfe :)

Ich melde mich wenn es Neuigkeiten gibt.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

@Dennis89: Ein weiterer Ansatz wäre ein Docker-Container auf dem Pi, in dem ein x86_64-Linux läuft. Hab ich bis jetzt zwar nur andersrum gemacht, aber eigentlich™ sollte das gehen. Wird nur extrem langsam sein, aber wenn man’s nur einmal machen muss...
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Danke für den Vorschlag, allerdings ist mir der Pi an sich schon etwas zu langsam. :D
Dann muss ich noch meine Fehlversuche einrechnen, da versuche ich es dann lieber mit Windows und "wsl" versuchen.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Guten Abend,

ich habe nun unter Windows mit "wsl" Ubuntu 20.04 TLS aufgesetzt und alles nochmal durchgekaut. Das hat zwar nicht auf anhieb funktioniert, aber immerhin hat es letztendlich geklappt! :)
Ich habe 4 Dateien erhalten: application.bin, bootloader.bin, firmware.bin und partions.bin

Ich habe jetzt aber noch zwei Probleme. Das erste, hat zwar mehr mit Ubuntu zu tun, aber das weis einer von euch bestimmt auch.
Das erstellen der *.bin-Dateien habe ich in einer virtuellen Python Entwicklungsumgebung (build-venv) gemacht. Das wird in der Anleitung auch so empfohlen. Gleichzeitig befinde ich mich ja noch in Ubuntu, das ja eigentlich auf meinem Windows läuft.
Weis einer wie ich die *.bin - Dateien da irgendwie rausbekomme, so das sie zumindest mal in einem Windows-Ordner liegen?

Ein USB-Stick wird in der build-venv nicht erkannt.

Das Problem das danach kommt, welche der vier *.bin-Dateien muss ich auf den ESP flashen? Aus dem Gefühl heraus würde ich firmeware.bin nehmen. Zu was sind dann die anderen da?

So wie es in der Anleitung beschrieben wird kann ich es ja nicht machen, da ich keinen Zugriff auf USB-Geräte von Ubuntu aus habe und dann auch den ESP nicht anschließen kann bzw. nicht darauf zugreifen kann.

Vielen Dank und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst mit dem esptool flashen. Das kann mit Pip installiert werden. So muss es aufgerufen werden:

https://github.com/bskp/micropython_esp ... efile#L736

Die Einstellungen stehen hier:

https://github.com/bskp/micropython_esp ... kefile#L43
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Vorweg: Meine erste Frage hat sich schnell gelöst, da hatte ich kurz einen Knoten im Kopf.

@__deets__ Vielen Dank für deine Antwort und deine Hilfe.

Damit hat es funktioniert, jetzt habe ich das MCPWM-MicroPython auf dem ESP 😍

Das werde ich morgen dann testen, bzw. versuchen das Beispiel in dem der Motor angesteuert wird auf den ESP zu bekommen.


Viele Grüße
glücklicher, müder Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

ich weis nicht ob ich das richtig verstanden habe. Ich würde gerne dieses Beispiel auf meinem ESP32 haben.

Im README steht:
Building an example is the same as building any other project

Ich bin in das entsprechende Verzeichnis gewechselt, das richtige Gerät ist ja schon als Standardwert hinterlegt da habe ich dann gleich

Code: Alles auswählen

idf.py menuconfig

eingegeben.

Das ging auch erstmal los, endete aber relativ schnell mit einem Fehler. Die ganze Ausgabe:

Code: Alles auswählen

(build-venv) dennis@DESKTOP-CEVO5TA:~/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control$ idf.py menuconfig
Executing action: menuconfig
Running cmake in directory /home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DCCACHE_ENABLE=0 /home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control"...
-- IDF_TARGET not set, using default target: esp32
-- Found Git: /usr/bin/git (found version "2.25.1")
-- The C compiler identification is GNU 5.2.0
-- The CXX compiler identification is GNU 5.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
-- Check for working C compiler: /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
-- Check for working C compiler: /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc -- broken
CMake Error at /usr/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake:60 (message):
  The C compiler

    "/home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build/CMakeFiles/CMakeTmp

    Run Build Command(s):/usr/bin/ninja cmTC_073f2 && [1/2] Building C object CMakeFiles/cmTC_073f2.dir/testCCompiler.c.obj
    [2/2] Linking C executable cmTC_073f2
    FAILED: cmTC_073f2
    : && /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc -mlongcalls -Wno-frame-address   CMakeFiles/cmTC_073f2.dir/testCCompiler.c.obj  -o cmTC_073f2   && :
    /home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find crt1-sim.o: No such file or directory
    /home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find _vectors.o: No such file or directory
    /home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lsim
    /home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhandlers-sim
    /home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhal
    collect2: error: ld returned 1 exit status
    ninja: build stopped: subcommand failed.





  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  /home/dennis/esp/esp-idf/tools/cmake/project.cmake:290 (__project)
  CMakeLists.txt:9 (project)


-- Configuring incomplete, errors occurred!
See also "/home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build/CMakeFiles/CMakeOutput.log".
See also "/home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build/CMakeFiles/CMakeError.log".
cmake failed with exit code 1
Der Inhalt des Verzeichnisses:

Code: Alles auswählen

(build-venv) dennis@DESKTOP-CEVO5TA:~/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control$ ls -l
total 12
-rw-r--r-- 1 dennis dennis  422 Feb 18 18:26 CMakeLists.txt
-rw-r--r-- 1 dennis dennis 4929 Feb 18 18:26 README.md
drwxr-xr-x 1 dennis dennis 4096 Feb 18 18:42 build
drwxr-xr-x 1 dennis dennis 4096 Feb 18 18:26 main
-rw-r--r-- 1 dennis dennis  457 Feb 18 18:26 serial-studio-proto-map.json
Und weil in der Fehlermeldung auch was von der "CMakeLists.txt" steht, habe ich mir die noch angeschaut:

Code: Alles auswählen

(build-venv) dennis@DESKTOP-CEVO5TA:~/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control$ cat CMakeLists.txt
# The following lines of boilerplate have to be in your project's CMakeLists
# in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)

set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/examples/common_components/pid_ctrl"
                         "$ENV{IDF_PATH}/examples/peripherals/pcnt/rotary_encoder/components")

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(mcpwm_brushed_dc_control)
Es wird noch auf zweo Log-Dateien hingewiesen:

Code: Alles auswählen

(build-venv) dennis@DESKTOP-CEVO5TA:~/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control$ cat /home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build/CMakeFiles/CMakeOutput.log
The target system is: Generic -  -
The host system is: Linux - 4.4.0-19041-Microsoft - x86_64
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
Compiler: /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Build flags: -mlongcalls;-Wno-frame-address
Id flags: -c

The output was:
0


Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o"

The C compiler identification is GNU, found in "/home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.o"

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++
Build flags: -mlongcalls;-Wno-frame-address
Id flags: -c

The output was:
0


Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o"

The CXX compiler identification is GNU, found in "/home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.o"

Checking whether the ASM compiler is GNU using "--version" matched "(GNU assembler)|(GCC)|(Free Software Foundation)":
xtensa-esp32-elf-gcc (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a) 5.2.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
und

Code: Alles auswählen

(build-venv) dennis@DESKTOP-CEVO5TA:~/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control$ cat /home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build/CMakeFiles/CMakeError.log
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Build flags: -mlongcalls;-Wno-frame-address
Id flags:

The output was:
1
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find crt1-sim.o: No such file or directory
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find _vectors.o: No such file or directory
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lsim
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhandlers-sim
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhal
collect2: error: ld returned 1 exit status


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++
Build flags: -mlongcalls;-Wno-frame-address
Id flags:

The output was:
1
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find crt1-sim.o: No such file or directory
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find _vectors.o: No such file or directory
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lsim
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhandlers-sim
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhal
collect2: error: ld returned 1 exit status


Determining if the C compiler works failed with the following output:
Change Dir: /home/dennis/esp-idf/examples/peripherals/mcpwm/mcpwm_bdc_speed_control/build/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/ninja cmTC_1094f && [1/2] Building C object CMakeFiles/cmTC_1094f.dir/testCCompiler.c.obj
[2/2] Linking C executable cmTC_1094f
FAILED: cmTC_1094f
: && /home/dennis/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc -mlongcalls -Wno-frame-address   CMakeFiles/cmTC_1094f.dir/testCCompiler.c.obj  -o cmTC_1094f   && :
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find crt1-sim.o: No such file or directory
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find _vectors.o: No such file or directory
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lsim
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhandlers-sim
/home/dennis/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhal
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Wenn ich nach

Code: Alles auswählen

cannot find crt1-sim.o: No such file or directory
suche, dann landet man zum Beispiel hier. Allerdings bringt der Hinweise auf GetStarted nichts, denn genau diese Anleitung habe ich gestern befolgt.

Sagt euch der Fehler vielleicht etwas mehr wie mir und jemand kann mir erklären was da schief läuft?

Und bin ich so überhaupt auf dem richtigen Weg um das Beispiel auf den ESP32 zu kriegen? (Brauche das ja nicht in C sondern MicroPython)


Vielen Dank und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist ein Holzweg. Das ist ein C Beispiel. Du kannst das zur Hälfte jetzt nachprogrammieren, weil du jetzt die MCPWM klasse hast. Der Encoder fehlt noch.
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Danke für deine Antwort.

Dann muss ich raten, was die Codezeilen in C bedeuten könnten. Ich setze mich mal dran.

Gerade habe ich den Test gemacht und mit dem ESP auf dem das MCPWM-MicroPython ist ein PWM-Signal erzeugt. Das funktioniert 😊

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na ich denke den Encoder muss ich dir in micropython einbauen, weil das ohne C nicht geht. Aber den Motor kannst du schon mal testen.
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Über die Unterstützung würde ich mich natürlich wahnsinnig freuen!

Um den Motor wollte ich mich eh als erstes kümmern, da habe ich mir höhere Erfolgschance ausgemalt.

Falls es möglich ist, das in ein zwei Sätzen zu erklären, würde es mich natürlich interessieren, warum man dazu C braucht?


Noch am Rande:
Der Encoder ist bis jetzt nur mit dem Spannungsteiler auf dem Steckbrett aufgebaut um zu sehen, ob das soweit passt. An den Leitungen die später an den ESP angeschlossen werden habe ich eine Amplitude von 2,54V gemessen, als ich ihn von Hand drehte.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Man braucht C dafür weil das wie der MCPWM eine Spezialfunktion des ESP32 ist, die in yPy sonst nicht zur Verfügung steht.

Hast du die Messung schon mit dem Oszi vorgenommen?
Benutzeravatar
Dennis89
User
Beiträge: 1125
Registriert: Freitag 11. Dezember 2020, 15:13

Okay, Danke.

Ja, also mal eine erste Testmessung, auch um das Gerät etwas kennen zu lernen.
Ich habe von jedem Tastkopf, Masse an Masse angeschlossen und dann kommen vom Encoder zwei Datenleitungen, deren Flanken versetzt steigen und fallen und anstatt die Leitungen an den ESP anzuschließen habe ich jeweils eine an einen Tastkopf angeschlossen und den Encoder mal von Hand gedreht.
Morgen früh wollte ich eine Kupplung und Halterung bauen, damit ich den Encoder mit dem Motor antreiben kann. Dann erhalte ich mal ein konstanteres Ergebnis und bringe den Encoder auf eine Drehzahl, die die des späteren Betriebs überschreitet. Wenn dann auch meine Spannung nicht über 3,3V beträgt wäre ich zufrieden.

Müsste ich sonst noch etwas messen?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Masse sollte allgemein von einem Tastkopf reichen. Ansonsten klingt das aber richtig. Das der Spannungswert mit 2.54V recht niedrig ist, mag auch an Widerstandstoleranzen liegen. Und fur ein High sollte es reichen. Ein ansteigen der Spannung aufgrund höherer Drehzahlen würde mich erstmal überraschen. Da schaltet ja einfach nur ein Transistor durch zwischen Masse und VCC, ohne Induktivitäten sehe ich erstmal keinen Grund, dass das höher wird. Aber natürlich ist eine Messung bei maximaler Drehzahl nicht schlecht, um ein Gefühl für die Obergrenze zu bekommen.
Antworten