Forum: Mikrocontroller und Digitale Elektronik ESP8266 - Error Nachricht beim Start


von Max M. (maxmicr)


Lesenswert?

Ich bin nun weitestgehend dieser Anleitung gefolgt, um das Espressif 3.0 
SDK für den ESP8266 unter Windows 10 zusammen mit dem Compiler zu 
installieren:

https://cutmywire.wordpress.com/2017/05/08/esp8266-windows-10-sdk-installation/comment-page-1/#comment-943


Mein Code, den ich aktuell zu flashen versuche:
1
#include "ets_sys.h"
2
#include "osapi.h"
3
#include "gpio.h"
4
#include "os_type.h"
5
#include "user_config.h"
6
7
void user_pre_init(void) {
8
}
9
10
void ICACHE_FLASH_ATTR user_init()
11
{
12
  os_printf("Hello World");
13
}

Demnach erwarte ich nach dem Reset ein einzelnes "Hello World" auf der 
Kommandozeile (mit 74880 BAUD).

Stattdessen bekomme ich:
1
 ets Jan  8 2013,rst cause:2, boot mode:(3,6)
2
3
load 0x3ffe8000, len 1288, room 16 
4
tail 8
5
chksum 0x4a
6
load 0x3ffe8510, len 880, room 0 
7
tail 0
8
chksum 0xb7
9
load 0x40100000, len 26184, room 8 
10
tail 0
11
chksum 0xb3
12
csum 0xb3
13
>> 0x0,0x0rf_cal[0] !=0x05,is 0xE9

und das ständig (d.h. der ESP8266 stürzt ab, startet selbst neu und 
bringt jedesmal diese Nachricht).

Ich verwende dieses Makefile:

https://github.com/esp8266/source-code-examples/blob/master/blinky/Makefile

mit zusätzlichen libs. Also anstatt
1
LIBS    = c gcc hal pp phy net80211 lwip wpa main

verwende ich:
1
LIBS    = c gcc hal pp phy net80211 lwip wpa main ssl crypto

Der Compiler erzeugt außerdem kein 0x40000.bin, sondern ein 0x10000.bin, 
daher habe ich das:
1
FW_FILE_2_ADDR  = 0x40000

durch das
1
FW_FILE_2_ADDR  = 0x10000

ersetzt. In meinem Firmware-Ordner habe ich nun eine 0x00000.bin und 
eine 0x10000.bin.

Ich habe diese Befehle ausgeführt:
1
esptool.py --port /dev/ttyS5 write_flash --flash_mode dio 0x00000 firmware/0x00000.bin

und
1
esptool.py --port /dev/ttyS5 write_flash --flash_mode dio 0x10000 firmware/0x10000.bin

Hab ich die falsche Stelle im Flash ausgewählt?

Mein Board ist ein D1 mini aus China. Ich habe bereits ein simples 
Arduino-Beispiel geflasht, das hat einwandfrei funktioniert. Der ESP8266 
funktioniert also.

: Bearbeitet durch User
von G. H. (schufti)


Lesenswert?

ich habe noch nichts mit dem orig. espressif sdk gamacht, aber der 
fehler besagt, dass an der Stelle wo die WiFi Kalibrationsdaten erwartet 
werden keine oder Müll liegen.
Eigentlich sollte das sdk den Block initialisieren wenn leer oder man 
legt dort die "esp_init_data_default.bin" ab; wo sagt die flash map 
(readme.txt).
Ich würde es mal mit komplettem erase vor flash versuchen.

von Max M. (maxmicr)


Lesenswert?

G. H. schrieb:
> Ich würde es mal mit komplettem erase vor flash versuchen.

Hab ich nun auch versucht:
1
esptool.py --port /dev/ttyS5 erase_flash

und dann
1
make flash

Leider das selbe Verhalten nach wie vor.

G. H. schrieb:
> wo sagt die flash map
> (readme.txt).

Ich hab da per Google nur das hier gefunden:

https://github.com/espressif/ESP8266_AT/blob/master/bin/readme.txt


Hab nun das hier versucht:
1
esptool.py --port /dev/ttyS5 erase_flash
2
esptool.py --port /dev/ttyS5 write_flash --flash_mode dio 0x7C000 firmware/esp_init_data_default.bin
3
make flash

und auch das hier:
1
esptool.py --port /dev/ttyS5 erase_flash
2
make flash
3
esptool.py --port /dev/ttyS5 write_flash --flash_mode dio 0x7C000 firmware/esp_init_data_default.bin

Leider immer noch das selbe Verhalten.

von Emil (Gast)


Lesenswert?

Du musst auch die Partitionstabelle implementieren, sonst weiß das SDK 
gar nicht, wo es suchen soll.

von G. H. (schufti)


Lesenswert?


von Max M. (maxmicr)


Lesenswert?

Ich hab mir das IoT-Example heruntergeladen und mit meinem Makefile 
versucht zu kompilieren, bekomme allerdings diese Fehlermeldungen (nur 
ein kleiner Ausschnitt):
1
user/user_main.c:39:7: error: "SPI_FLASH_SIZE_MAP" is not defined [-Werror=undef]
2
 #if ((SPI_FLASH_SIZE_MAP == 0) || (SPI_FLASH_SIZE_MAP == 1))
3
       ^
4
user/user_main.c:40:2: error: #error "The flash map is not supported"
5
 #error "The flash map is not supported"

Wenn ich das Makefile von espressif verwende und
1
make

ausführe, bekomme ich diese Ausgabe:
1
make: Nothing to be done for 'FORCE'.
.

Die gen_misc.bat sieht schon eher danach aus, als würde sie etwas 
kompilieren. Wenn man sich durch das kurze Menü durchklickt, wird am 
Ende doch wieder das Makefile aufgerufen, dass dann erneut "Nothing to 
be done" liefert.

Emil schrieb:
> Du musst auch die Partitionstabelle implementieren, sonst weiß das SDK
> gar nicht, wo es suchen soll.

Danke, anscheinend kam das mit SDK v3.0 hinzu. Den Sinn davon verstehe 
ich zwar nicht, aber gut.

G. H. schrieb:
> also könnte das Dokument helfen:

Ich verstehe das Dokument nicht. Daraus erschließt sich mir nicht, was 
ich wirklich brauche und welche Zusammenhänge es gibt bzw. welche 
imports ich benötige.

Edit: Ich hab mir nun auch das wesentlich simplere Beispiel

https://github.com/espressif/ESP8266_NONOS_SDK/tree/master/examples/simple_pair

angeschaut. Ich hab mal versucht, die main.c auf das wesentliche zu 
reduzieren:
1
#include "osapi.h"
2
#include "user_interface.h"
3
4
#define EAGLE_FLASH_BIN_ADDR        (SYSTEM_PARTITION_CUSTOMER_BEGIN + 1)
5
#define EAGLE_IROM0TEXT_BIN_ADDR      (SYSTEM_PARTITION_CUSTOMER_BEGIN + 2)
6
7
static const partition_item_t partition_table[] = {
8
  { EAGLE_FLASH_BIN_ADDR, 0x00000, 0x10000},
9
    { EAGLE_IROM0TEXT_BIN_ADDR, 0x10000, 0x60000},
10
    { SYSTEM_PARTITION_RF_CAL, SYSTEM_PARTITION_RF_CAL_ADDR, 0x1000},
11
    { SYSTEM_PARTITION_PHY_DATA, SYSTEM_PARTITION_PHY_DATA_ADDR, 0x1000},
12
    { SYSTEM_PARTITION_SYSTEM_PARAMETER,SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR, 0x3000},
13
};
14
15
void ICACHE_FLASH_ATTR user_pre_init(void)
16
{
17
    if(!system_partition_table_regist(partition_table, sizeof(partition_table)/sizeof(partition_table[0]),SPI_FLASH_SIZE_MAP)) {
18
    os_printf("system_partition_table_regist fail\r\n");
19
    while(1);
20
  }
21
}
22
23
void ICACHE_FLASH_ATTR
24
user_init(void)
25
{
26
}

Nun bekomme ich mit meinem Makefile (siehe 1. Post) diese Ausgabe:
1
CC user/user_main.c
2
user/user_main.c:32:2: error: stray '\357' in program
3
  { EAGLE_FLASH_BIN_ADDR, 0x00000, 0x10000},
4
  ^
5
user/user_main.c:32:2: error: stray '\274' in program
6
user/user_main.c:32:2: error: stray '\210' in program
7
user/user_main.c:32:2: error: stray '\357' in program
8
user/user_main.c:32:2: error: stray '\274' in program
9
user/user_main.c:32:2: error: stray '\211' in program
10
user/user_main.c:33:5: error: stray '\357' in program
11
     { EAGLE_IROM0TEXT_BIN_ADDR, 0x10000, 0x60000},

Ich weiß nicht - sind diese geschweiften Klammern nicht konform zur 
C-Syntax? Macht meine eingedampfte main.c überhaupt noch Sinn?

: Bearbeitet durch User
von John Doe (Gast)


Lesenswert?

Max M. schrieb:
> Nun bekomme ich mit meinem Makefile (siehe 1. Post) diese Ausgabe:
>
>
1
> CC user/user_main.c
2
> user/user_main.c:32:2: error: stray '\357' in program
3
>   { EAGLE_FLASH_BIN_ADDR, 0x00000, 0x10000},
4
>   ^
5
> user/user_main.c:32:2: error: stray '\274' in program
6
> user/user_main.c:32:2: error: stray '\210' in program
7
> user/user_main.c:32:2: error: stray '\357' in program
8
> user/user_main.c:32:2: error: stray '\274' in program
9
> user/user_main.c:32:2: error: stray '\211' in program
10
> user/user_main.c:33:5: error: stray '\357' in program
11
>      { EAGLE_IROM0TEXT_BIN_ADDR, 0x10000, 0x60000},
12
>
>
> Ich weiß nicht - sind diese geschweiften Klammern nicht konform zur
> C-Syntax? Macht meine eingedampfte main.c überhaupt noch Sinn?


Hast Du sinnlos Copy&Paste von der Webseite gemacht oder die Datei 
runtergeladen und bearbeitet?
Bei ersterem solltest Du die fehlerhaften Zeilen löschen und von Hand 
neu tippen.

von Max M. (maxmicr)


Lesenswert?

John Doe schrieb:
> Hast Du sinnlos Copy&Paste von der Webseite gemacht

Schuldig.

John Doe schrieb:
> und von Hand
> neu tippen.

Hab ich gemacht, jetzt kommt der Fehler nicht mehr. Allerdings:
1
user/user_main.c: In function 'user_pre_init':
2
user/user_main.c:36:116: error: 'SPI_FLASH_SIZE_MAP' undeclared (first use in this function)
3
  if(!system_partition_table_regist(at_partition_table, sizeof(at_partition_table) / sizeof(at_partition_table[0]), SPI_FLASH_SIZE_MAP)){

Wo ist denn das #define von dieser Konstante?

von John Doe (Gast)


Lesenswert?

Max M. schrieb:
> Wo ist denn das #define von dieser Konstante?

Ich übergebe bei mir SPI_SIZE_MAP als Define Parameter dem make Aufruf. 
In den Makefiles von Espressif wird dann daraus SPI_FLASH_SIZE_MAP 
erzeugt.

von Max M. (maxmicr)


Lesenswert?

John Doe schrieb:
> Ich übergebe bei mir SPI_SIZE_MAP als Define Parameter dem make Aufruf.

Magst du bitte erläutern, wie genau das abläuft? Woher hast du den Wert 
von SPI_SIZE_MAP? Was genau gibst du in die Kommandozeile ein? Wie 
sieht dein Makefile aus?

Ich hab nun einfach selbst
1
#define SPI_FLASH_SIZE_MAP 5

gesetzt und dabei alle Werte von 2 - 6 ausprobiert. Bei keinem Wert hat 
sich das Verhalten irgendwie verändert (kompilieren und flashen hat aber 
funktioniert).

Ich bezweifle langsam, dass die Partitionierung überhaupt helfen kann. 
Diese greift ja nur, wenn mein Code überhaupt aufgerufen bzw. ausgeführt 
wird. Das wird er solange nicht, wie der ESP8266 ständig neu startet und 
abstürzt.

Auch liefert dieses Tutorial: 
https://cutmywire.wordpress.com/2017/05/08/esp8266-windows-10-sdk-installation/comment-page-1/#comment-943

keinen Hinweis auf Partitionierung seit SDK v3.0.

Es kann doch nicht sein, dass Espressif die letzten Jahre in Sachen 
Benutzerfreundlichkeit nichts dazu gelernt hat. Hat noch jemand 
irgendeine Idee?

Ich vermute stark, dass ich den Code an die falsche Stelle schreiben 
lasse.

: Bearbeitet durch User
von Max M. (maxmicr)


Lesenswert?

Fragt mich nicht was ich jetzt anders gemacht hab, aber immerhin bin ich 
nun bei diesem Fehler, keine Ahnung ob das ein Fortschritt ist:
1
 ets Jan  8 2013,rst cause:2, boot mode:(3,6)
2
3
load 0x3ffe8000, len 1288, room 16 
4
tail 8
5
chksum 0x2a
6
load 0x3ffe8510, len 972, room 0 
7
tail 12
8
chksum 0x57
9
ho 0 tail 12 room 4
10
load 0x40100000, len 26180, room 12 
11
tail 8
12
chksum 0xbd
13
csum 0xbd
14
p 3 size 0x6a000 ,0x3 err
15
system_partition_table_regist fail

Liegt wahrscheinlich daran, dass ich keine Ahnung hab, welchen Wert 
SPI_FLASH_SIZE_MAP oder SPI_SIZE_MAP haben sollen.

: Bearbeitet durch User
von Franz (Gast)


Lesenswert?

Guck mal hier ganz unten.
https://github.com/espressif/ESP8266_NONOS_SDK
Da ist der Hinweis auf die Partitionstabelle.

Du kannst die Adressen und Größen der Partitionen auch ohne Weiteres per 
Hand fest vergeben. Einfach die Werte, die du auch beim Flashen 
verwendest.

von Max M. (maxmicr)


Angehängte Dateien:

Lesenswert?

Franz schrieb:
> Da ist der Hinweis auf die Partitionstabelle.

Tut mir leid, aber ich kann damit überhaupt nix anfangen. Zum einen 
liegt das am unverständlichen Englisch und daran, dass ich


"If you donot use Non-FOTA bin, eagle.irom0.text.bin and irom0.text MUST 
be downloaded the fixed address"

diese Dateien nicht habe. Was sind denn "the fixed address"?

Wenn ich mir das angehängte Bild in der Doku anschaue, finde ich auch 
Dateien wieder, die ich nicht habe. Eine 0x0000.bin und eine 0x10000.bin 
kommen auch nicht vor.

Ich hab das Gefühl, die Doku ist entweder völlig veraltet oder für einen 
anderen Controller oder anderes SDK geschrieben.

Franz schrieb:
> Einfach die Werte, die du auch beim Flashen
> verwendest.

Ich vergebe beim Flashen keine Werte für

SYSTEM_PARTITION_SYSTEM_PARAMETER
SYSTEM_PARTITION_PHY_DATA
SYSTEM_PARTITION_RF_CAL

Und ob meine Firmware nun SYSTEM_PARTITION_OTA_2 oder 
SYSTEM_PARTITION_OTA_1 ist, weiß ich auch nicht. Ich vermute, die Datei 
0x00000.bin entspricht SYSTEM_PARTITION_BOOTLOADER?

: Bearbeitet durch User
von Franz (Gast)


Lesenswert?

Ok, aber wenn du esp_init_data_default.bin nicht flashst, ist es kein 
Wunder, dass es nicht klappt. Auch die anderen beiden sollte man 
flashen, bzw. eben auf 0xFF erasen.

von Max M. (maxmicr)


Lesenswert?

Franz schrieb:
> Ok, aber wenn du esp_init_data_default.bin nicht flashst, ist es kein
> Wunder, dass es nicht klappt. Auch die anderen beiden sollte man
> flashen, bzw. eben auf 0xFF erasen.

Ich hab nun mal das versucht:
1
esptool.py --port /dev/ttyS5 write_flash 0x00000 firmware/0x00000.bin 0x10000 firmware/0x10000.bin 0x3FB000 firmware/blank.bin 0x3FE000 firmware/blank.bin 0x3FC000 firmware/esp_init_data_default.bin

wobei esp_init_data_default.bin dieser Datei: 
https://github.com/espressif/ESP8266_NONOS_SDK/blob/master/bin/esp_init_data_default_v08.bin 
entspricht.

und blank.bin dieser Datei: 
https://github.com/espressif/ESP8266_NONOS_SDK/blob/master/bin/blank.bin

Jetzt bin ich wieder bei dem rf_cal Fehler :(

: Bearbeitet durch User
von Max M. (maxmicr)


Lesenswert?

Ähm, hab ichs geschafft?
1
 ets Jan  8 2013,rst cause:2, boot mode:(3,7)
2
3
load 0x3ffe8000, len 1288, room 16 
4
tail 8
5
chksum 0x3a
6
load 0x3ffe8510, len 988, room 0 
7
tail 12
8
chksum 0xcf
9
ho 0 tail 12 room 4
10
load 0x40100000, len 26180, room 12 
11
tail 8
12
chksum 0xb7
13
csum 0xb7
14
>> 0⸮⸮RZ⸮⸮rf cal sector: 1019
15
freq trace enable 0
16
rf[112] : 00
17
rf[113] : 00
18
rf[114] : 01
19
20
SDK ver: 3.0.0(d49923c) compiled @ Aug 22 2018 13:50:05
21
phy ver: 1136_0, pp ver: 10.2
22
23
mode : softAP(a2:20:a6:02:57:2a)
24
add if1
25
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
26
bcn 100

Falls ja, ich hab mein main.c durch den Code auf dieser asiatischen 
Webseite ersetzt:

https://blog.csdn.net/yannanxiu/article/details/83550183

Sieht also jetzt so aus:
1
#include "osapi.h"
2
#include "user_interface.h"
3
4
#define EAGLE_FLASH_BIN_ADDR        (SYSTEM_PARTITION_CUSTOMER_BEGIN + 1)
5
#define EAGLE_IROM0TEXT_BIN_ADDR      (SYSTEM_PARTITION_CUSTOMER_BEGIN + 2)
6
#define SPI_FLASH_SIZE_MAP 4
7
8
#if ((SPI_FLASH_SIZE_MAP == 0) || (SPI_FLASH_SIZE_MAP == 1))
9
#error "The flash map is not supported"
10
#elif (SPI_FLASH_SIZE_MAP == 2)
11
#define SYSTEM_PARTITION_OTA_SIZE              0x6A000
12
#define SYSTEM_PARTITION_OTA_2_ADDR              0x81000
13
#define SYSTEM_PARTITION_RF_CAL_ADDR            0xfb000
14
#define SYSTEM_PARTITION_PHY_DATA_ADDR            0xfc000
15
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR        0xfd000
16
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0x7c000
17
#elif (SPI_FLASH_SIZE_MAP == 3)
18
#define SYSTEM_PARTITION_OTA_SIZE              0x6A000
19
#define SYSTEM_PARTITION_OTA_2_ADDR              0x81000
20
#define SYSTEM_PARTITION_RF_CAL_ADDR            0x1fb000
21
#define SYSTEM_PARTITION_PHY_DATA_ADDR            0x1fc000
22
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR        0x1fd000
23
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0x7c000
24
#elif (SPI_FLASH_SIZE_MAP == 4)
25
#define SYSTEM_PARTITION_OTA_SIZE              0x6A000
26
#define SYSTEM_PARTITION_OTA_2_ADDR              0x81000
27
#define SYSTEM_PARTITION_RF_CAL_ADDR            0x3fb000
28
#define SYSTEM_PARTITION_PHY_DATA_ADDR            0x3fc000
29
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR        0x3fd000
30
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0x7c000
31
#elif (SPI_FLASH_SIZE_MAP == 5)
32
#define SYSTEM_PARTITION_OTA_SIZE              0x6A000
33
#define SYSTEM_PARTITION_OTA_2_ADDR              0x101000
34
#define SYSTEM_PARTITION_RF_CAL_ADDR            0x1fb000
35
#define SYSTEM_PARTITION_PHY_DATA_ADDR            0x1fc000
36
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR        0x1fd000
37
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0xfc000
38
#elif (SPI_FLASH_SIZE_MAP == 6)
39
#define SYSTEM_PARTITION_OTA_SIZE              0x6A000
40
#define SYSTEM_PARTITION_OTA_2_ADDR              0x101000
41
#define SYSTEM_PARTITION_RF_CAL_ADDR            0x3fb000
42
#define SYSTEM_PARTITION_PHY_DATA_ADDR            0x3fc000
43
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR        0x3fd000
44
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0xfc000
45
#else
46
#error "The flash map is not supported"
47
#endif
48
49
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM                SYSTEM_PARTITION_CUSTOMER_BEGIN
50
51
uint32 priv_param_start_sec;
52
53
static const partition_item_t at_partition_table[] = {
54
    { SYSTEM_PARTITION_BOOTLOADER,             0x0,                         0x1000},
55
    { SYSTEM_PARTITION_OTA_1,               0x1000,                       SYSTEM_PARTITION_OTA_SIZE},
56
    { SYSTEM_PARTITION_OTA_2,               SYSTEM_PARTITION_OTA_2_ADDR,             SYSTEM_PARTITION_OTA_SIZE},
57
    { SYSTEM_PARTITION_RF_CAL,              SYSTEM_PARTITION_RF_CAL_ADDR,             0x1000},
58
    { SYSTEM_PARTITION_PHY_DATA,             SYSTEM_PARTITION_PHY_DATA_ADDR,           0x1000},
59
    { SYSTEM_PARTITION_SYSTEM_PARAMETER,         SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR,       0x3000},
60
    { SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM,             SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR,          0x1000},
61
};
62
63
void ICACHE_FLASH_ATTR user_pre_init(void)
64
{
65
    if(!system_partition_table_regist(at_partition_table, sizeof(at_partition_table)/sizeof(at_partition_table[0]),SPI_FLASH_SIZE_MAP)) {
66
    os_printf("system_partition_table_regist fail\r\n");
67
    while(1);
68
  }
69
}
70
71
void ICACHE_FLASH_ATTR user_init(void) {
72
73
}

Cmd:
1
esptool.py --port /dev/ttyS5 write_flash 0x00000 firmware/0x00000.bin 0x10000 firmware/0x10000.bin 0x3FC000 firmware/esp_init_data_default.bin

von Franz (Gast)


Lesenswert?

Du bringst aber Non-OTA und OTA durcheinander. Kompilierst für Non-OTA, 
aber deine Partitionstabelle enthält zwei Firmwarepartitionen und den 
Bootloader. Kann funktionieren, aber hat eventuell Nebenwirkungen, wenn 
das SDK irgendwas schreibt.

von Max M. (maxmicr)


Lesenswert?

Franz schrieb:
> Du bringst aber Non-OTA und OTA durcheinander.

Wie müsste die Tabelle denn umgeschrieben werden, damit sie kompatibel 
mit Non-OTA ist?

Franz schrieb:
> Kompilierst für Non-OTA

Woran machst du das fest?

von Stefan F. (Gast)


Lesenswert?

Während Villariba schon feiert, wird in Villabacho noch geschrubbt.
https://www.youtube.com/watch?v=B37JGubAcSU

Villariba ist in diesem Fall Italien/Arduino.
Villabacho ist Max in Deutschland.

von Franz (Gast)


Lesenswert?

Naja, du benutzt als Linkerscript eagle.app.v6.ld und Adresse 0.

Für OTA musst du zwei Mal kompilieren, einmal für Adresse 0x01000 und 
nochmal für 0x81000, mit jeweils dem passenden Linkerschript für dein 
Flashlayout:
https://github.com/espressif/ESP8266_NONOS_SDK/tree/master/ld

An 0x00000 käme der Bootloader:
https://github.com/espressif/ESP8266_NONOS_SDK/tree/master/bin


Eventuell wärst du bei Arduino wirklich besser aufgehoben. Du müsstest 
halt damit leben, dass Bugfixes und neuere Features nicht immer sofort 
verfügbar sind.

von Max M. (maxmicr)


Lesenswert?

D.h. so wäre es richtig für Non-OTA?
1
static const partition_item_t at_partition_table[] = {
2
    { SYSTEM_PARTITION_RF_CAL,              SYSTEM_PARTITION_RF_CAL_ADDR,             0x1000},
3
    { SYSTEM_PARTITION_PHY_DATA,             SYSTEM_PARTITION_PHY_DATA_ADDR,           0x1000},
4
    { SYSTEM_PARTITION_SYSTEM_PARAMETER,         SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR,       0x3000},
5
    { SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM,             SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR,          0x1000},
6
};

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.