Skip to content

Commit ad5b303

Browse files
committed
Merge pull request #6 from esp8266/esp8266
pull master
2 parents a852c00 + 2c37445 commit ad5b303

Some content is hidden

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

61 files changed

+2800
-358
lines changed

build/build_board_manager_package.sh

+52
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ cp -R ../libraries/SD $outdir/libraries/
1717
cp -R ../libraries/Adafruit_ILI9341 $outdir/libraries/
1818
cp -R ../libraries/OneWire $outdir/libraries/
1919

20+
wget -O SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/38259afcab9c291dbb6216f827d9a3738abf1868.zip
21+
unzip SoftwareSerial.zip
22+
rm -rf SoftwareSerial.zip
23+
mv espsoftwareserial-* SoftwareSerial
24+
mv SoftwareSerial $outdir/libraries
25+
2026
cat $srcdir/platform.txt | \
2127
gsed 's/runtime.tools.xtensa-lx106-elf-gcc.path={runtime.platform.path}\/tools\/xtensa-lx106-elf//g' | \
2228
gsed 's/runtime.tools.esptool.path={runtime.platform.path}\/tools//g' | \
@@ -93,6 +99,11 @@ cat << EOF > package_esp8266com_index.json
9399
"packager":"esp8266",
94100
"name":"xtensa-lx106-elf-gcc",
95101
"version":"1.20.0-26-gb404fb9-2"
102+
},
103+
{
104+
"packager":"esp8266",
105+
"name":"mkspiffs",
106+
"version":"0.1.1"
96107
} ]
97108
} ],
98109
@@ -177,6 +188,47 @@ cat << EOF > package_esp8266com_index.json
177188
"size":"32734156"
178189
}
179190
]
191+
},
192+
{
193+
"name":"mkspiffs",
194+
"version":"0.1.1",
195+
"systems": [
196+
{
197+
"host":"i686-mingw32",
198+
"url":"https://github.com/igrr/mkspiffs/releases/download/0.1.1/mkspiffs-0.1.1-windows.zip",
199+
"archiveFileName":"mkspiffs-0.1.1-windows.zip",
200+
"checksum":"SHA-256:421532b415f2227c15ea8b7c633b50a15bdcb40b61d1d223b155b9b5cff886a7",
201+
"size":"228989"
202+
},
203+
{
204+
"host":"x86_64-apple-darwin",
205+
"url":"https://github.com/igrr/mkspiffs/releases/download/0.1.1/mkspiffs-0.1.1-osx.tar.gz",
206+
"archiveFileName":"mkspiffs-0.1.1-osx.tar.gz",
207+
"checksum":"SHA-256:673cbc3027ca461f6b928bb910953b4e78cec2d4b638c872410461296c54aeaf",
208+
"size":"123544"
209+
},
210+
{
211+
"host":"i386-apple-darwin",
212+
"url":"https://github.com/igrr/mkspiffs/releases/download/0.1.1/mkspiffs-0.1.1-osx.tar.gz",
213+
"archiveFileName":"mkspiffs-0.1.1-osx.tar.gz",
214+
"checksum":"SHA-256:673cbc3027ca461f6b928bb910953b4e78cec2d4b638c872410461296c54aeaf",
215+
"size":"123544"
216+
},
217+
{
218+
"host":"x86_64-pc-linux-gnu",
219+
"url":"https://github.com/igrr/mkspiffs/releases/download/0.1.1/mkspiffs-0.1.1-linux64.tar.gz",
220+
"archiveFileName":"mkspiffs-0.1.1-linux64.tar.gz",
221+
"checksum":"SHA-256:afea5786cf60c8cfdae5d2665323ce281c05c0516590ba2bf6282e396e3fa76a",
222+
"size":"44373"
223+
},
224+
{
225+
"host":"i686-pc-linux-gnu",
226+
"url":"https://github.com/igrr/mkspiffs/releases/download/0.1.1/mkspiffs-0.1.1-linux32.tar.gz",
227+
"archiveFileName":"mkspiffs-0.1.1-linux32.tar.gz",
228+
"checksum":"SHA-256:46a646a9e9070912234c9a7d5618d9787047b07b44a4aef5e05f16f9100d37ce",
229+
"size":"43304"
230+
}
231+
]
180232
} ]
181233
} ]
182234
}

build/shared/tools/ESP8266FS/make.sh

+6-3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ mkdir -p $INSTALLDIR/tools/ESP8266FS/tool
2525
zip -r $INSTALLDIR/tools/ESP8266FS/tool/esp8266fs.jar *
2626
popd
2727

28-
#pushd $INSTALLDIR/tools
29-
#zip -r ESP8266FS-$(git describe --tags).zip ESP8266FS/
30-
#popd
28+
dist=$PWD/dist
29+
rev=$(git describe --tags)
30+
mkdir -p $dist
31+
pushd $INSTALLDIR/tools
32+
zip -r $dist/ESP8266FS-$rev.zip ESP8266FS/
33+
popd

build/shared/tools/ESP8266FS/src/ESP8266FS.java

+34-27
Original file line numberDiff line numberDiff line change
@@ -60,26 +60,27 @@ public String getMenuTitle() {
6060
}
6161

6262
private int listenOnProcess(String[] arguments){
63-
try {
64-
final Process p = ProcessUtils.exec(arguments);
65-
Thread thread = new Thread() {
66-
public void run() {
67-
try {
68-
String line;
69-
BufferedReader input = new BufferedReader (new InputStreamReader(p.getInputStream()));
70-
while ((line = input.readLine()) != null) System.out.println(line);
71-
input.close();
72-
} catch (Exception e){}
73-
}
74-
};
75-
thread.start();
76-
int res = p.waitFor();
77-
thread.join();
78-
return res;
79-
} catch (Exception e){
80-
return -1;
63+
try {
64+
final Process p = ProcessUtils.exec(arguments);
65+
Thread thread = new Thread() {
66+
public void run() {
67+
try {
68+
InputStreamReader reader = new InputStreamReader(p.getInputStream());
69+
int c;
70+
while ((c = reader.read()) != -1)
71+
System.out.print((char) c);
72+
reader.close();
73+
} catch (Exception e){}
74+
}
75+
};
76+
thread.start();
77+
int res = p.waitFor();
78+
thread.join();
79+
return res;
80+
} catch (Exception e){
81+
return -1;
82+
}
8183
}
82-
}
8384

8485
private void sysExec(final String[] arguments){
8586
Thread thread = new Thread() {
@@ -144,14 +145,20 @@ private void createAndUpload(){
144145
return;
145146
}
146147
}
147-
148-
File tool;
149-
if(!PreferencesData.get("runtime.os").contentEquals("windows")) tool = new File(platform.getFolder()+"/tools", "mkspiffs");
150-
else tool = new File(platform.getFolder()+"/tools", "mkspiffs.exe");
151-
if(!tool.exists()){
152-
System.err.println();
153-
editor.statusError("SPIFFS Error: mkspiffs not found!");
154-
return;
148+
String mkspiffsCmd;
149+
if(PreferencesData.get("runtime.os").contentEquals("windows"))
150+
mkspiffsCmd = "mkspiffs.exe";
151+
else
152+
mkspiffsCmd = "mkspiffs";
153+
154+
File tool = new File(platform.getFolder() + "/tools", mkspiffsCmd);
155+
if (!tool.exists()) {
156+
tool = new File(PreferencesData.get("runtime.tools.mkspiffs.path"), mkspiffsCmd);
157+
if (!tool.exists()) {
158+
System.err.println();
159+
editor.statusError("SPIFFS Error: mkspiffs not found!");
160+
return;
161+
}
155162
}
156163

157164
int fileCount = 0;

hardware/esp8266com/esp8266/boards.txt

+82-27
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,22 @@ generic.menu.FlashSize.2M.build.spiffs_end=0x1FB000
112112
generic.menu.FlashSize.2M.build.spiffs_blocksize=8192
113113
generic.menu.FlashSize.2M.upload.maximum_size=1044464
114114

115-
generic.menu.FlashSize.4M=4M (3M SPIFFS)
116-
generic.menu.FlashSize.4M.build.flash_size=4M
117-
generic.menu.FlashSize.4M.build.flash_ld=eagle.flash.4m.ld
118-
generic.menu.FlashSize.4M.build.spiffs_start=0x100000
119-
generic.menu.FlashSize.4M.build.spiffs_end=0x3FB000
120-
generic.menu.FlashSize.4M.build.spiffs_blocksize=8192
121-
generic.menu.FlashSize.4M.upload.maximum_size=1044464
115+
generic.menu.FlashSize.4M1M=4M (1M SPIFFS)
116+
generic.menu.FlashSize.4M1M.build.flash_size=4M
117+
generic.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld
118+
generic.menu.FlashSize.4M1M.build.spiffs_start=0x300000
119+
generic.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000
120+
generic.menu.FlashSize.4M1M.build.spiffs_blocksize=8192
121+
generic.menu.FlashSize.4M1M.build.spiffs_pagesize=256
122+
generic.menu.FlashSize.4M1M.upload.maximum_size=1044464
123+
124+
generic.menu.FlashSize.4M3M=4M (3M SPIFFS)
125+
generic.menu.FlashSize.4M3M.build.flash_size=4M
126+
generic.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld
127+
generic.menu.FlashSize.4M3M.build.spiffs_start=0x100000
128+
generic.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000
129+
generic.menu.FlashSize.4M3M.build.spiffs_blocksize=8192
130+
generic.menu.FlashSize.4M3M.upload.maximum_size=1044464
122131

123132
# disabled because espressif's bootloader refuses to write above 4M
124133
# generic.menu.FlashSize.8M=8M (7M SPIFFS)
@@ -154,11 +163,6 @@ huzzah.build.variant=adafruit
154163
huzzah.build.flash_mode=qio
155164
huzzah.build.flash_size=4M
156165
huzzah.build.flash_freq=40
157-
huzzah.build.flash_ld=eagle.flash.4m.ld
158-
huzzah.build.spiffs_start=0x100000
159-
huzzah.build.spiffs_end=0x3FB000
160-
huzzah.build.spiffs_pagesize=256
161-
huzzah.build.spiffs_blocksize=8192
162166

163167
huzzah.menu.CpuFrequency.80=80 MHz
164168
huzzah.menu.CpuFrequency.80.build.f_cpu=80000000L
@@ -176,6 +180,22 @@ huzzah.menu.UploadSpeed.256000.upload.speed=256000
176180
huzzah.menu.UploadSpeed.921600=921600
177181
huzzah.menu.UploadSpeed.921600.upload.speed=921600
178182

183+
huzzah.menu.FlashSize.4M3M=4M (3M SPIFFS)
184+
huzzah.menu.FlashSize.4M3M.build.flash_size=4M
185+
huzzah.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld
186+
huzzah.menu.FlashSize.4M3M.build.spiffs_start=0x100000
187+
huzzah.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000
188+
huzzah.menu.FlashSize.4M3M.build.spiffs_blocksize=8192
189+
huzzah.menu.FlashSize.4M3M.build.spiffs_pagesize=256
190+
191+
huzzah.menu.FlashSize.4M1M=4M (1M SPIFFS)
192+
huzzah.menu.FlashSize.4M1M.build.flash_size=4M
193+
huzzah.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld
194+
huzzah.menu.FlashSize.4M1M.build.spiffs_start=0x300000
195+
huzzah.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000
196+
huzzah.menu.FlashSize.4M1M.build.spiffs_blocksize=8192
197+
huzzah.menu.FlashSize.4M1M.build.spiffs_pagesize=256
198+
179199
##############################################################
180200
nodemcu.name=NodeMCU 0.9 (ESP-12 Module)
181201

@@ -196,11 +216,6 @@ nodemcu.build.variant=nodemcu
196216
nodemcu.build.flash_mode=qio
197217
nodemcu.build.flash_size=4M
198218
nodemcu.build.flash_freq=40
199-
nodemcu.build.flash_ld=eagle.flash.4m.ld
200-
nodemcu.build.spiffs_start=0x100000
201-
nodemcu.build.spiffs_end=0x3FB000
202-
nodemcu.build.spiffs_pagesize=256
203-
nodemcu.build.spiffs_blocksize=8192
204219

205220
nodemcu.menu.CpuFrequency.80=80 MHz
206221
nodemcu.menu.CpuFrequency.80.build.f_cpu=80000000L
@@ -227,6 +242,22 @@ nodemcu.menu.UploadSpeed.512000.upload.speed=512000
227242
nodemcu.menu.UploadSpeed.921600=921600
228243
nodemcu.menu.UploadSpeed.921600.upload.speed=921600
229244

245+
nodemcu.menu.FlashSize.4M3M=4M (3M SPIFFS)
246+
nodemcu.menu.FlashSize.4M3M.build.flash_size=4M
247+
nodemcu.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld
248+
nodemcu.menu.FlashSize.4M3M.build.spiffs_start=0x100000
249+
nodemcu.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000
250+
nodemcu.menu.FlashSize.4M3M.build.spiffs_blocksize=8192
251+
nodemcu.menu.FlashSize.4M3M.build.spiffs_pagesize=256
252+
253+
nodemcu.menu.FlashSize.4M1M=4M (1M SPIFFS)
254+
nodemcu.menu.FlashSize.4M1M.build.flash_size=4M
255+
nodemcu.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld
256+
nodemcu.menu.FlashSize.4M1M.build.spiffs_start=0x300000
257+
nodemcu.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000
258+
nodemcu.menu.FlashSize.4M1M.build.spiffs_blocksize=8192
259+
nodemcu.menu.FlashSize.4M1M.build.spiffs_pagesize=256
260+
230261
##############################################################
231262
nodemcuv2.name=NodeMCU 1.0 (ESP-12E Module)
232263

@@ -247,11 +278,6 @@ nodemcuv2.build.variant=nodemcu
247278
nodemcuv2.build.flash_mode=dio
248279
nodemcuv2.build.flash_size=4M
249280
nodemcuv2.build.flash_freq=40
250-
nodemcuv2.build.flash_ld=eagle.flash.4m.ld
251-
nodemcuv2.build.spiffs_start=0x100000
252-
nodemcuv2.build.spiffs_end=0x3FB000
253-
nodemcuv2.build.spiffs_pagesize=256
254-
nodemcuv2.build.spiffs_blocksize=8192
255281

256282
nodemcuv2.menu.CpuFrequency.80=80 MHz
257283
nodemcuv2.menu.CpuFrequency.80.build.f_cpu=80000000L
@@ -278,6 +304,23 @@ nodemcuv2.menu.UploadSpeed.512000.upload.speed=512000
278304
nodemcuv2.menu.UploadSpeed.921600=921600
279305
nodemcuv2.menu.UploadSpeed.921600.upload.speed=921600
280306

307+
nodemcuv2.menu.FlashSize.4M3M=4M (3M SPIFFS)
308+
nodemcuv2.menu.FlashSize.4M3M.build.flash_size=4M
309+
nodemcuv2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld
310+
nodemcuv2.menu.FlashSize.4M3M.build.spiffs_start=0x100000
311+
nodemcuv2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000
312+
nodemcuv2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192
313+
nodemcuv2.menu.FlashSize.4M3M.build.spiffs_pagesize=256
314+
315+
nodemcuv2.menu.FlashSize.4M1M=4M (1M SPIFFS)
316+
nodemcuv2.menu.FlashSize.4M1M.build.flash_size=4M
317+
nodemcuv2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld
318+
nodemcuv2.menu.FlashSize.4M1M.build.spiffs_start=0x300000
319+
nodemcuv2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000
320+
nodemcuv2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192
321+
nodemcuv2.menu.FlashSize.4M1M.build.spiffs_pagesize=256
322+
323+
281324
##############################################################
282325
modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV)
283326

@@ -355,6 +398,7 @@ thing.build.flash_freq=40
355398
thing.build.spiffs_start=0x6B000
356399
thing.build.spiffs_end=0x7B000
357400
thing.build.spiffs_blocksize=4096
401+
thing.build.spiffs_pagesize=256
358402

359403
thing.menu.CpuFrequency.80=80 MHz
360404
thing.menu.CpuFrequency.80.build.f_cpu=80000000L
@@ -400,11 +444,6 @@ esp210.build.variant=generic
400444
esp210.build.flash_mode=qio
401445
esp210.build.flash_size=4M
402446
esp210.build.flash_freq=40
403-
esp210.build.flash_ld=eagle.flash.4m.ld
404-
esp210.build.spiffs_start=0x100000
405-
esp210.build.spiffs_end=0x3FB000
406-
esp210.build.spiffs_pagesize=256
407-
esp210.build.spiffs_blocksize=8192
408447

409448
esp210.menu.CpuFrequency.80=80 MHz
410449
esp210.menu.CpuFrequency.80.build.f_cpu=80000000L
@@ -429,6 +468,22 @@ esp210.menu.UploadSpeed.512000.upload.speed=512000
429468
esp210.menu.UploadSpeed.921600=921600
430469
esp210.menu.UploadSpeed.921600.upload.speed=921600
431470

471+
esp210.menu.FlashSize.4M3M=4M (3M SPIFFS)
472+
esp210.menu.FlashSize.4M3M.build.flash_size=4M
473+
esp210.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld
474+
esp210.menu.FlashSize.4M3M.build.spiffs_start=0x100000
475+
esp210.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000
476+
esp210.menu.FlashSize.4M3M.build.spiffs_blocksize=8192
477+
esp210.menu.FlashSize.4M3M.build.spiffs_pagesize=256
478+
479+
esp210.menu.FlashSize.4M1M=4M (1M SPIFFS)
480+
esp210.menu.FlashSize.4M1M.build.flash_size=4M
481+
esp210.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld
482+
esp210.menu.FlashSize.4M1M.build.spiffs_start=0x300000
483+
esp210.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000
484+
esp210.menu.FlashSize.4M1M.build.spiffs_blocksize=8192
485+
esp210.menu.FlashSize.4M1M.build.spiffs_pagesize=256
486+
432487
##############################################################
433488
# wifio.name=Wifio
434489
#

hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp

+26-1
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,8 @@ uint32_t EspClass::getFlashChipSizeByChipId(void) {
280280
return (2_MB);
281281
case 0x1440EF: // W25Q80
282282
return (1_MB);
283+
case 0x1340EF: // W25Q40
284+
return (512_kB);
283285

284286
default:
285287
return 0;
@@ -289,7 +291,7 @@ uint32_t EspClass::getFlashChipSizeByChipId(void) {
289291
String EspClass::getResetInfo(void) {
290292
if(resetInfo.reason != 0) {
291293
char buff[200];
292-
sprintf(&buff[0], "Fatal exception:%d flag:%d (%s) epc1:0x%08x epc2:0x%08x epc3:0x%08x excvaddr:0x%08x depc:0x%08x", resetInfo.exccause, resetInfo.reason, (resetInfo.reason == 0 ? "DEFAULT" : resetInfo.reason == 1 ? "WDT" : resetInfo.reason == 2 ? "EXCEPTION" : resetInfo.reason == 3 ? "SOFT_WDT" : resetInfo.reason == 4 ? "SOFT_RESTART" : resetInfo.reason == 5 ? "DEEP_SLEEP_AWAKE" : "???"), resetInfo.epc1, resetInfo.epc2, resetInfo.epc3, resetInfo.excvaddr, resetInfo.depc);
294+
sprintf(&buff[0], "Fatal exception:%d flag:%d (%s) epc1:0x%08x epc2:0x%08x epc3:0x%08x excvaddr:0x%08x depc:0x%08x", resetInfo.exccause, resetInfo.reason, (resetInfo.reason == 0 ? "DEFAULT" : resetInfo.reason == 1 ? "WDT" : resetInfo.reason == 2 ? "EXCEPTION" : resetInfo.reason == 3 ? "SOFT_WDT" : resetInfo.reason == 4 ? "SOFT_RESTART" : resetInfo.reason == 5 ? "DEEP_SLEEP_AWAKE" : resetInfo.reason == 6 ? "EXT_SYS_RST" : "???"), resetInfo.epc1, resetInfo.epc2, resetInfo.epc3, resetInfo.excvaddr, resetInfo.depc);
293295
return String(buff);
294296
}
295297
return String("flag: 0");
@@ -400,3 +402,26 @@ bool EspClass::updateSketch(Stream& in, uint32_t size, bool restartOnFail, bool
400402
if(restartOnSuccess) ESP.restart();
401403
return true;
402404
}
405+
406+
static const int FLASH_INT_MASK = ((B10 << 8) | B00111010);
407+
408+
bool EspClass::flashEraseSector(uint32_t sector) {
409+
ets_isr_mask(FLASH_INT_MASK);
410+
int rc = spi_flash_erase_sector(sector);
411+
ets_isr_unmask(FLASH_INT_MASK);
412+
return rc == 0;
413+
}
414+
415+
bool EspClass::flashWrite(uint32_t offset, uint32_t *data, size_t size) {
416+
ets_isr_mask(FLASH_INT_MASK);
417+
int rc = spi_flash_write(offset, (uint32_t*) data, size);
418+
ets_isr_unmask(FLASH_INT_MASK);
419+
return rc == 0;
420+
}
421+
422+
bool EspClass::flashRead(uint32_t offset, uint32_t *data, size_t size) {
423+
ets_isr_mask(FLASH_INT_MASK);
424+
int rc = spi_flash_read(offset, (uint32_t*) data, size);
425+
ets_isr_unmask(FLASH_INT_MASK);
426+
return rc == 0;
427+
}

hardware/esp8266com/esp8266/cores/esp8266/Esp.h

+4
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ class EspClass {
117117
FlashMode_t getFlashChipMode();
118118
uint32_t getFlashChipSizeByChipId();
119119

120+
bool flashEraseSector(uint32_t sector);
121+
bool flashWrite(uint32_t offset, uint32_t *data, size_t size);
122+
bool flashRead(uint32_t offset, uint32_t *data, size_t size);
123+
120124
uint32_t getSketchSize();
121125
uint32_t getFreeSketchSpace();
122126
bool updateSketch(Stream& in, uint32_t size, bool restartOnFail = false, bool restartOnSuccess = true);

0 commit comments

Comments
 (0)