ESP32 IDF: Warum so riesiges Binary?

OP #7544700
Lesenswert?

Ich mache gerade meine ersten Versuche mit dem ESP32-IDF. Nach ein paar Klimmzügen habe ich es unter Eclipse zum Laufen gebracht und das erste Testprogramm kompiliert. Obwohl es sich um einen Vierzeiler handelt, der periodische eine Zählvariable per printf ausgibt und dann jeweils eine Sekunde schläft, ist das Kompilat über 174 kByte groß. Was wird da alles eingebunden? printf und sleep können es ja kaum sein?

1
#include <stdio.h>
2
#include <stdbool.h>
3
#include <unistd.h>
4

5
void app_main(void)
6
{
7
  unsigned int c = 0;
8
    while (true) {
9
        printf("Count: %d, count^2: %d\n", c, c*c);
10
        c++;
11
        sleep(1);
12
    }
13
}

Total sizes:

Used static DRAM: 10600 bytes ( 170136 remain, 5.9% used)

1
  .data size:    8432 bytes
2

3
  .bss  size:    2168 bytes

Used static IRAM: 49146 bytes ( 81926 remain, 37.5% used)

1
  .text size:   48119 bytes

.vectors size: 1027 bytes

Used Flash size : 117131 bytes

1
       .text:   79795 bytes
2

3
     .rodata:   37080 bytes

Total image size: 174709 bytes (.bin may be padded larger)

Persönliche Seite #7544721
Lesenswert?

Ist nicht per default der ganze WiFi- und Netzwerkstack aktiviert? Der braucht natürlich einiges an Speicher. FreeRTOS ist auch immer dabei. Außerdem eine ganze Menge an Treibern für diverse Peripherie, Hilfsfunktionen wie Logging usw. Allein dafür ist das printf() sowieso immer mit dabei.

Aber was soll's? Die ESP32 haben bis zu 32 MiB Flash. Das Library-Zeug ist ja auch nur ein mal im Flash. Den ganzen Rest kannst du dann voll machen mit Massen an Anwendungscode...

#7544832
Lesenswert?

Zumindest meine Tasmotas auf 8266 und 8285 machen genau gar keinen Traffic ausgehend, sagt mir mein Mikrotikrouter. Außer: Tasmota hat den Hang andauernd nach Holländischen NTP-Servern zu kucken, obwohl lokaler NTP angegeben und auch erreichbar ist. Das ist aber auch das einzige, es sei denn man versucht Updates zu fahren. Meine Tasmotas sind alle offline, als smarte Zeitschaltuhren, d.h. auch ohne MQTT usw.

OP #7544927
Lesenswert?

Peter D. schrieb:

Doch, printf ist auf den Boliden recht teuer. Bei 8-Bittern wird default der float-Support erstmal weggelassen. Wo aber die 60kB RAM hin verschwinden, ist mir auch ein Rätsel.

Ich habe die Zeile mit printf mal auskommentiert, das spart nur etwa 50 Bytes. Anscheinend wird da ein komplettes Framework mit allen Treibern, RTOS, etc. eingebunden.

Ob das Teil nach Hause telefoniert werde ich mir bei Gelegenheit mal anschauen, im Moment läuft das WiFi noch nicht. Ich glaube aber kaum, dass es da interessante Informationen zu übermitteln gibt. Die ESP stecken doch vor allem in steuerbaren Steckdosen und anderen Smart-Home-Gimmicks, was gibt es da zu spionieren? Handys und PCs sind da ein lohnenderes Ziel.

Persönliche Seite #7544939
Lesenswert?

Fritz G. schrieb:

Ich habe die Zeile mit printf mal auskommentiert, das spart nur etwa 50 Bytes.

Ja, weil printf sowieso gebraucht wird, da verschwindet nur der Aufruf selbst.

Fritz G. schrieb:

Anscheinend wird da ein komplettes Framework mit allen Treibern, RTOS, etc. eingebunden.

So ist es. Schau mal ins Menuconfig, da kannst du einige Dinge deaktivieren (z.B. WiFi/Netzwerk-Stack), und ein paar Kilobytes sparen.

Fritz G. schrieb:

Ich glaube aber kaum, dass es da interessante Informationen zu übermitteln gibt.

Vielleicht ja den Programmcode 😜

#7545079
Lesenswert?

Es ist schon ziemlich naiv, anzunehmen, daß sich solche Hacker für den Inhalt bzw. die Daten eurer Geräte interessieren.

Es geht vielmehr darum möglichst viele Geräte als Soldaten für ein Botnetz zu rekrutieren, mit dem man dann kritische Infrastrukturen angreifen kann.

Das gibt dem Satz "Ich hab ja nix zu verbergen" eine ganz andere Dimension.

#7545081
Lesenswert?

Hallo,

Jens M. schrieb:

Fritz G. schrieb:

was gibt es da zu spionieren?

Den WLAN-Schlüssel, andere Geräte und evtl. deren Sicherheitslücken.

Dehalb sind dauernd Chinesen vor meiner Haustür, die wollen mein WLAN benutzen... Ansonsten schon verblüffend, was da an Spionagecode im Rom/Flash sein soll, da müssen Superprogrammierer am Werk sein.

So ein Backdoor-ESP könnte ja als "Remote Relay" dienen, um z.B. deinen PC, dein NAS oder eben auch deine Mobilgeräte leerzuräumen...

Naja, bei den erreichbaren Transferraten auf diesem Weg wird wohl da in ein paar Monaten erst die Dateiliste von NAS/PC usw. in China angekommen sein.

Gruß aus Berlin Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren