Skip to content

Commit eb66c94

Browse files
committed
Merge branch 'ficeto-esp8266' into esp8266
* ficeto-esp8266: (31 commits) leftovers Update to the latest SPIFFS git and cleanup add Exception Causes (EXCCAUSE) docu fix possible null ptr in EEPROM.cpp Align the start of functions to the next power-of-two greater than 4, skipping up to 3 bytes. improve os_printf handling when buffer full. - wait for free buffer in hw fifo force all os_malloc calls to request a aligned size. - this fix Fatal exception (9) by unaligned class memory add some __attribute__ for compiler to get better optimizations and warning handle fix possible problems in EEPROM regarding interrupt handling and SPI flash blocking spiffs fixes improve includes add ssid and ip to debug out add examples/WiFiMulti/WiFiMulti.ino add support for list of AP connections - auto select ssid with best signal - for debugging enable DEBUG_WIFI_MULTI macro and call Serial.setDebugOutput(true); fix start address so erase works disable all interrupts when reading from spiffs printf to print instead of write fix uart triggering reset when spi has been read/written ESP8266WiFiClass::waitForConnectResult() add Print::printf fix data types ...
2 parents c4a4276 + 049fe1d commit eb66c94

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1500
-830
lines changed

docs/exception_causes.md

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
Exception Causes (EXCCAUSE)
2+
===========================================
3+
4+
| EXC-CAUSE Code | Cause Name | Cause Description | Required Option | EXC-VADDR Loaded |
5+
|:--------------:|:---------------------------|:------------------------------------------------------------------------------------------------------------|:-------------------------|:----------------:|
6+
| 0 | IllegalInstructionCause | Illegal instruction | Exception | No |
7+
| 1 | SyscallCause | SYSCALL instruction | Exception | No |
8+
| 2 | InstructionFetchErrorCause | Processor internal physical address or data error during instruction fetch | Exception | Yes |
9+
| 3 | LoadStoreErrorCause | Processor internal physical address or data error during load or store | Exception | Yes |
10+
| 4 | Level1InterruptCause | Level-1 interrupt as indicated by set level-1 bits in the INTERRUPT register | Interrupt | No |
11+
| 5 | AllocaCause | MOVSP instruction, if caller’s registers are not in the register file | Windowed Register | No |
12+
| 6 | IntegerDivideByZeroCause | QUOS, QUOU, REMS, or REMU divisor operand is zero | 32-bit Integer Divide | No |
13+
| 7 | Reserved for Tensilica | | | |
14+
| 8 | PrivilegedCause | Attempt to execute a privileged operation when CRING ? 0 | MMU | No |
15+
| 9 | LoadStoreAlignmentCause | Load or store to an unaligned address | Unaligned Exception | Yes |
16+
| 10..11 | Reserved for Tensilica | | | |
17+
| 12 | InstrPIFDataErrorCause | PIF data error during instruction fetch | Processor Interface | Yes |
18+
| 13 | LoadStorePIFDataErrorCause | Synchronous PIF data error during LoadStore access | Processor Interface | Yes |
19+
| 14 | InstrPIFAddrErrorCause | PIF address error during instruction fetch | Processor Interface | Yes |
20+
| 15 | LoadStorePIFAddrErrorCause | Synchronous PIF address error during LoadStore access | Processor Interface | Yes |
21+
| 16 | InstTLBMissCause | Error during Instruction TLB refill | MMU | Yes |
22+
| 17 | InstTLBMultiHitCause | Multiple instruction TLB entries matched | MMU | Yes |
23+
| 18 | InstFetchPrivilegeCause | An instruction fetch referenced a virtual address at a ring level less than CRING | MMU | Yes |
24+
| 19 | Reserved for Tensilica | | | |
25+
| 20 | InstFetchProhibitedCause | An instruction fetch referenced a page mapped with an attribute that does not permit instruction fetch | Region Protection or MMU | Yes |
26+
| 21..23 | Reserved for Tensilica | | | |
27+
| 24 | LoadStoreTLBMissCause | Error during TLB refill for a load or store | MMU | Yes |
28+
| 25 | LoadStoreTLBMultiHitCause | Multiple TLB entries matched for a load or store | MMU | Yes |
29+
| 26 | LoadStorePrivilegeCause | A load or store referenced a virtual address at a ring level less than CRING | MMU | Yes |
30+
| 27 | Reserved for Tensilica | | | |
31+
| 28 | LoadProhibitedCause | A load referenced a page mapped with an attribute that does not permit loads | Region Protection or MMU | Yes |
32+
| 29 | StoreProhibitedCause | A store referenced a page mapped with an attribute that does not permit stores | Region Protection or MMU | Yes |
33+
| 30..31 | Reserved for Tensilica | | | |
34+
| 32..39 | CoprocessornDisabled | Coprocessor n instruction when cpn disabled. n varies 0..7 as the cause varies 32..39 | Coprocessor | No |
35+
| 40..63 | Reserved | | | |
36+
37+
38+
Infos from Xtensa Instruction Set Architecture (ISA) Reference Manual

hardware/esp8266com/esp8266/boards.txt

+41-30
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ menu.UploadSpeed=Upload Speed
22
menu.CpuFrequency=CPU Frequency
33
menu.FlashSize=Flash Size
44
menu.FlashFreq=Flash Frequency
5-
menu.FlashMode=Flash Mode
65

76
##############################################################
87
generic.name=Generic ESP8266 Module
@@ -24,6 +23,8 @@ generic.build.flash_mode=qio
2423
generic.build.flash_size=512K
2524
generic.build.flash_freq=40
2625
generic.build.flash_ld=eagle.flash.512k.ld
26+
generic.build.spiffs_start=0x6B000
27+
generic.build.spiffs_end=0x7B000
2728

2829
generic.menu.CpuFrequency.80=80 MHz
2930
generic.menu.CpuFrequency.80.build.f_cpu=80000000L
@@ -49,39 +50,46 @@ generic.menu.UploadSpeed.512000.upload.speed=512000
4950
generic.menu.UploadSpeed.921600=921600
5051
generic.menu.UploadSpeed.921600.upload.speed=921600
5152

52-
generic.menu.FlashSize.512K=512K
53+
generic.menu.FlashSize.512K=512K (64K SPIFFS)
5354
generic.menu.FlashSize.512K.build.flash_size=512K
5455
generic.menu.FlashSize.512K.build.flash_ld=eagle.flash.512k.ld
55-
generic.menu.FlashSize.256K=256K
56-
generic.menu.FlashSize.256K.build.flash_size=256K
57-
generic.menu.FlashSize.256K.build.flash_ld=eagle.flash.256k.ld
58-
generic.menu.FlashSize.1M=1M
59-
generic.menu.FlashSize.1M.build.flash_size=1M
60-
generic.menu.FlashSize.1M.build.flash_ld=eagle.flash.1m.ld
61-
generic.menu.FlashSize.2M=2M
56+
generic.menu.FlashSize.512K.build.spiffs_start=0x6B000
57+
generic.menu.FlashSize.512K.build.spiffs_end=0x7B000
58+
generic.menu.FlashSize.1M512=1M (512K SPIFFS)
59+
generic.menu.FlashSize.1M512.build.flash_size=1M
60+
generic.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld
61+
generic.menu.FlashSize.1M512.build.spiffs_start=0x6B000
62+
generic.menu.FlashSize.1M512.build.spiffs_end=0xFB000
63+
generic.menu.FlashSize.1M256=1M (256K SPIFFS)
64+
generic.menu.FlashSize.1M256.build.flash_size=1M
65+
generic.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld
66+
generic.menu.FlashSize.1M256.build.spiffs_start=0xAB000
67+
generic.menu.FlashSize.1M256.build.spiffs_end=0xFB000
68+
generic.menu.FlashSize.1M128=1M (128K SPIFFS)
69+
generic.menu.FlashSize.1M128.build.flash_size=1M
70+
generic.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld
71+
generic.menu.FlashSize.1M128.build.spiffs_start=0xCB000
72+
generic.menu.FlashSize.1M128.build.spiffs_end=0xFB000
73+
generic.menu.FlashSize.1M64=1M (64K SPIFFS)
74+
generic.menu.FlashSize.1M64.build.flash_size=1M
75+
generic.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld
76+
generic.menu.FlashSize.1M64.build.spiffs_start=0xEB000
77+
generic.menu.FlashSize.1M64.build.spiffs_end=0xFB000
78+
generic.menu.FlashSize.2M=2M (1M SPIFFS)
6279
generic.menu.FlashSize.2M.build.flash_size=2M
6380
generic.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld
64-
generic.menu.FlashSize.4M=4M
81+
generic.menu.FlashSize.2M.build.spiffs_start=0x100000
82+
generic.menu.FlashSize.2M.build.spiffs_end=0x1FB000
83+
generic.menu.FlashSize.4M=4M (3M SPIFFS)
6584
generic.menu.FlashSize.4M.build.flash_size=4M
6685
generic.menu.FlashSize.4M.build.flash_ld=eagle.flash.4m.ld
86+
generic.menu.FlashSize.4M.build.spiffs_start=0x100000
87+
generic.menu.FlashSize.4M.build.spiffs_end=0x3FB000
6788

68-
generic.menu.FlashFreq.40=40MHz
69-
generic.menu.FlashFreq.40.build.flash_freq=40
70-
generic.menu.FlashFreq.20=20MHz
71-
generic.menu.FlashFreq.20.build.flash_freq=20
72-
generic.menu.FlashFreq.26=26.7MHz
73-
generic.menu.FlashFreq.26.build.flash_freq=26.7
74-
generic.menu.FlashFreq.80=80MHz
75-
generic.menu.FlashFreq.80.build.flash_freq=80
76-
77-
generic.menu.FlashMode.qio=QIO
78-
generic.menu.FlashMode.qio.build.flash_mode=qio
79-
generic.menu.FlashMode.qout=QOUT
80-
generic.menu.FlashMode.qout.build.flash_mode=qout
81-
generic.menu.FlashMode.dio=DIO
82-
generic.menu.FlashMode.dio.build.flash_mode=dio
83-
generic.menu.FlashMode.dout=DOUT
84-
generic.menu.FlashMode.dout.build.flash_mode=dout
89+
# generic.menu.FlashFreq.40=40MHz
90+
# generic.menu.FlashFreq.40.build.flash_freq=40
91+
# generic.menu.FlashFreq.80=80MHz
92+
# generic.menu.FlashFreq.80.build.flash_freq=80
8593

8694
##############################################################
8795
modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV)
@@ -104,6 +112,8 @@ modwifi.build.flash_mode=qio
104112
modwifi.build.flash_size=2M
105113
modwifi.build.flash_freq=40
106114
modwifi.build.flash_ld=eagle.flash.2m.ld
115+
modwifi.build.spiffs_start=0x100000
116+
modwifi.build.spiffs_end=0x1FB000
107117

108118
modwifi.menu.CpuFrequency.80=80 MHz
109119
modwifi.menu.CpuFrequency.80.build.f_cpu=80000000L
@@ -150,6 +160,8 @@ nodemcu.build.flash_mode=qio
150160
nodemcu.build.flash_size=4M
151161
nodemcu.build.flash_freq=40
152162
nodemcu.build.flash_ld=eagle.flash.4m.ld
163+
nodemcu.build.spiffs_start=0x100000
164+
nodemcu.build.spiffs_end=0x3FB000
153165

154166
nodemcu.menu.CpuFrequency.80=80 MHz
155167
nodemcu.menu.CpuFrequency.80.build.f_cpu=80000000L
@@ -176,9 +188,6 @@ nodemcu.menu.UploadSpeed.512000.upload.speed=512000
176188
nodemcu.menu.UploadSpeed.921600=921600
177189
nodemcu.menu.UploadSpeed.921600.upload.speed=921600
178190

179-
nodemcu.menu.FlashSize.4M=4M
180-
nodemcu.menu.FlashSize.4M.build.flash_size=4M
181-
182191
##############################################################
183192
# wifio.name=Wifio
184193
#
@@ -197,6 +206,8 @@ nodemcu.menu.FlashSize.4M.build.flash_size=4M
197206
# wifio.build.flash_size=512K
198207
# wifio.build.flash_freq=40
199208
# wifio.build.flash_ld=eagle.flash.512k.ld
209+
# wifio.build.spiffs_start=0x6B000
210+
# wifio.build.spiffs_end=0x7B000
200211
#
201212
# wifio.menu.CpuFrequency.80=80MHz
202213
# wifio.menu.CpuFrequency.80.build.f_cpu=80000000L

hardware/esp8266com/esp8266/cores/esp8266/Arduino.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ void ets_intr_unlock();
135135
extern uint32_t interruptsState;
136136

137137
#define interrupts() xt_enable_interrupts(interruptsState)
138-
#define noInterrupts() xt_disable_interrupts(interruptsState, 15)
138+
#define noInterrupts() __asm__ __volatile__("rsil %0,15; esync; isync; dsync" : "=a" (interruptsState))
139139

140140
#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
141141
#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )

0 commit comments

Comments
 (0)