Forum: Mikrocontroller und Digitale Elektronik flash esp8266


von Jonas (Gast)


Lesenswert?

moin zusammen,
ich habe vor eine Projekt mit einem NodeMCU (Esp8266) (in Windows10) zu 
machen.
Allerdings scheitere ich schon am flashen.
Ich bin hiernach vorgegangen
https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/
die Beispielprojekte kann ich auch flashen und die laufen auch.
Allerdings habe ich jetzt Probleme die Richtigen Dateien und Anpassungen 
im eigenen Projekt zu machen.
Ich habe momentan folgenden Aufbau
Ordner: hello_world_own
Dieser Ordner beinhaltet einen weiteren Ordner Source. Hier befindet 
sich meine main.c drinn.
Im Ordner hello_world_own habe ich ebenfalls eine Datei: Makefile
1
#
2
# This is a project Makefile. It is assumed the directory this Makefile resides in is a
3
# project subdirectory.
4
#
5
6
PROJECT_NAME := hello_world_own
7
8
include $(IDF_PATH)/make/project.mk

diese habe ich aus dem Beispiel-projekt kopiert und PROJECT_NAME 
angepasst.
der IDF_PATH zeigt auf
C:/msys32/home/esp/ESP8266_RTOS_SDK

das Programm ist ähnlich dem hello_world aus dem Beispiel. Nur ein 
zehnfaches schneller, damit ich einen Unterschied sehe.
1
#include <stdio.h>
2
#include "freertos/FreeRTOS.h"
3
#include "freertos/task.h"
4
#include "esp_system.h"
5
#include "esp_spi_flash.h"
6
7
void main()
8
{
9
    printf("Hello world!\n");
10
11
    /* Print chip information */
12
    esp_chip_info_t chip_info;
13
    esp_chip_info(&chip_info);
14
    printf("This is ESP8266 chip with %d CPU cores, WiFi, ",
15
            chip_info.cores);
16
17
    printf("silicon revision %d, ", chip_info.revision);
18
19
    printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
20
            (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
21
22
    for (int i = 10; i >= 0; i--) {
23
        printf("Restarting in %d seconds...\n", i);
24
        vTaskDelay(100 / portTICK_PERIOD_MS);
25
    }
26
    printf("Restarting now.\n");
27
    fflush(stdout);
28
    esp_restart();
29
}

Jetzt gehe ich in der ming23.exe console in den Ordner hello_world_own
Eingabe: make menuconfig
hier wird auch das Menu erstellt, wo ich den Port vom esp eingebe. Wenn 
ich alles schließe, bekomme ich die Ausgabe
1
Python requirements from C:/msys32/home/esp/ESP8266_RTOS_SDK/requirements.txt are satisfied.
2
DEFCONFIG
3
MENUCONFIG
4
configuration written to /h/Projects/ESP/connectRouter/sdkconfig
5
6
*** End of the configuration.
7
*** Execute 'make' to start the build or try 'make help'.
8
9
GENCONFIG
10
make: xtensa-lx106-elf-gcc: Kommando nicht gefunden
11
expr: syntax error: unexpected argument „5.2.0“
12
Project is not inside a git repository, or git repository has no commits
13
will not use 'git describe' to determine PROJECT_VER.
14
App "connect_router" version: 1
15
make: xtensa-lx106-elf-gcc: Kommando nicht gefunden
16
expr: syntax error: unexpected argument „5.2.0“

Also die python requirements in ESP8266_RTOS_SDK habe ich alle. Die 
sdkconfig wird auch in meinem Projekt erstellt.
Aber ich bekomme zwei errors:
make: xtensa-lx106-elf-gcc: Kommando nicht gefunden
expr: syntax error: unexpected argument „5.2.0“

Was genau bedeutet das?

Jetzt kann ich eingeben
make flash monitor
und bekomme folgende Ausgabe
1
make: xtensa-lx106-elf-gcc: Kommando nicht gefunden
2
expr: syntax error: unexpected argument „5.2.0“
3
/bin/sh: xtensa-lx106-elf-gcc: Kommando nicht gefunden.
4
which: no xtensa-lx106-elf-gcc in (/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/opt/xtensa-esp32-elf/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
5
/bin/sh: xtensa-lx106-elf-gcc: Kommando nicht gefunden.
6
Toolchain path:
7
WARNING: Failed to find Xtensa toolchain, may need to alter PATH or set one in the configuration menu
8
Python requirements from C:/msys32/home/esp/ESP8266_RTOS_SDK/requirements.txt are satisfied.
9
make[1]: xtensa-lx106-elf-gcc: Befehl nicht gefunden
10
expr: syntax error: unexpected argument „5.2.0“
11
/bin/sh: xtensa-lx106-elf-gcc: Kommando nicht gefunden.
12
which: no xtensa-lx106-elf-gcc in (/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/opt/xtensa-esp32-elf/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
13
/bin/sh: xtensa-lx106-elf-gcc: Kommando nicht gefunden.
14
WARNING: Failed to find Xtensa toolchain, may need to alter PATH or set one in the configuration menu
15
make[1]: xtensa-lx106-elf-gcc: Befehl nicht gefunden
16
expr: syntax error: unexpected argument „5.2.0“
17
CC build/bootloader/main/bootloader_start.o
18
make[2]: xtensa-lx106-elf-gcc: Befehl nicht gefunden
19
make[2]: *** [/home/esp/ESP8266_RTOS_SDK/make/component_wrapper.mk:292: bootloader_start.o] Fehler 127
20
make[1]: *** [/home/esp/ESP8266_RTOS_SDK/make/project.mk:571: component-main-build] Fehler 2
21
make: *** [/home/esp/ESP8266_RTOS_SDK/components/bootloader/Makefile.projbuild:40: /h/Projects/ESP/connectRouter/build/bootloader/bootloader.bin] Fehler 2
Was ist hier jetzt falsch?

Wie kann ich ein Projekt erstmal nur bauen? Ohne es gleichzeitig zu 
flashen?
Habe vorher noch nie mit make zu tun gehabt und tu mich damit doch ein 
bisschen schwer.

von Stefan F. (Gast)


Lesenswert?

Jonas schrieb:
> /bin/sh: xtensa-lx106-elf-gcc: Kommando nicht gefunden.
> Toolchain path:
> WARNING: Failed to find Xtensa toolchain, may need to alter PATH or set
> one in the configuration menu

Da steht, was los ist. Offenbar hast du die Toolchain nicht installiert 
oder sie befindet sich nicht im Suchpfad.

Alles was danach kommt, sind Folgefehler.

PS: Der Titel des Thread ist grottenschlecht.

von Εrnst B. (ernst)


Lesenswert?

Tipp:
Versuchs mit platformio. Damit fällt wenigstens das 
Toolchain-installieren als Fehlerquelle weitestgehend weg, und "make" 
brauchst du auch nicht.

Falls du an einer Microsoft-Web-App-Allergie leidest: VisualStudioCode 
musst du dafür nicht installieren/verwenden, platformio geht auch 
standalone.

von Jonas (Gast)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Da steht, was los ist. Offenbar hast du die Toolchain nicht installiert
> oder sie befindet sich nicht im Suchpfad.

Das habe ich angepasst und den Pfad in menuconfig eingefügt.

Wenn ich jetzt aber
make flash
eingebe, werden erst zig sachen gebaut (siehe anhang).
Kommen diese sachen, da diese irgendwo im Configurationsmenu aktiviert 
sind?
Oder woher kommen diese sonst?
Am schluss bekomme ich allerdings dann den Fehler
1
H:/Projects/ESP/connectRouter/build/esp8266\libesp8266.a(startup.o):(.literal.user_init_entry+0x1c): undefined reference to `app_main'
2
H:/Projects/ESP/connectRouter/build/esp8266\libesp8266.a(startup.o): In function `user_init_entry':
3
C:/msys32/home/esp/ESP8266_RTOS_SDK/components/esp8266/source/startup.c:87: undefined reference to `app_main'
4
collect2.exe: error: ld returned 1 exit status
5
make: *** [C:/msys32/home/jcall/esp/ESP8266_RTOS_SDK/make/project.mk:510: /h/Projects/ESP/connectRouter/build/connect_router.elf] Fehler 1

was ist diese startup.c?
Meine Funktion habe ich nach app_main umbenannt.

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.