Forum: Mikrocontroller und Digitale Elektronik ESP32 IDF: Warum so riesiges Binary?


von Fritz G. (fritz65)


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)

      .data size:    8432 bytes

      .bss  size:    2168 bytes

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

      .text size:   48119 bytes

   .vectors size:    1027 bytes

Used Flash size :  117131 bytes

           .text:   79795 bytes

         .rodata:   37080 bytes

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

von Peter D. (peda)


Lesenswert?

Fritz G. schrieb:
> printf und sleep können es ja kaum sein?

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.

von Niklas G. (erlkoenig) Benutzerseite


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...

: Bearbeitet durch User
von Jens K. (jensky)


Lesenswert?

Böse Zungen behaupten der genutzte Speicher würde für die 
Backdoor-Routine der Chinesenregierung benutzt.

Wäre interessant welche Daten übers WiFi gehen, wenn man am ESP keine 
Daten sendet, sondern nur eine Verbindung bestehen hat.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Jens K. schrieb:
> Böse Zungen behaupten der genutzte Speicher würde für die
> Backdoor-Routine der Chinesenregierung benutzt.

Der ist im ROM und zählt nicht zur Flash-Nutzung.

von Jens K. (jensky)


Lesenswert?

Niklas G. schrieb:
> Jens K. schrieb:
>> Böse Zungen behaupten der genutzte Speicher würde für die
>> Backdoor-Routine der Chinesenregierung benutzt.
>
> Der ist im ROM und zählt nicht zur Flash-Nutzung.

Ist das wirklich so? Immerhin (deswegen sagte ich ja "behaupten") wäre 
das der Hammer. Hast du Quellen bei denen man das mal nachlesen kann?

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Jens K. schrieb:
> Ist das wirklich so?

Reine Spekulation. Wenn ich eine Backdoor in so einem System 
unterbringen wollen würde, würde ich sie in den ROM packen. Dort ist sie 
schwerer zu finden und zu entfernen. Dementsprechend glaube ich nicht, 
dass der große Flash-Verbrauch durch eine Backdoor verursacht wird.

von Jens M. (schuchkleisser)


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.

von Fritz G. (fritz65)


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.

von Niklas G. (erlkoenig) Benutzerseite


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 😜

von Jens M. (schuchkleisser)


Lesenswert?

Fritz G. schrieb:
> was gibt es da zu spionieren?

Den WLAN-Schlüssel, andere Geräte und evtl. deren Sicherheitslücken.
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...

von Harry L. (mysth)


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.

von Michael U. (amiga)


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

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.