Skip to content

Commit cbcd976

Browse files
committed
Merge remote-tracking branch 'remotes/esp8266/esp8266' into esp8266
Conflicts: hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp hardware/esp8266com/esp8266/libraries/ESP8266WiFi/src/include/ClientContext.h
2 parents 070c1ee + 54f0b7f commit cbcd976

35 files changed

+1039
-413
lines changed

build/build_board_manager_package.sh

Lines changed: 65 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
#!/bin/bash
22
#
3-
# for platform in windows linux macosx; do pushd $platform; ls -l esptool-*; shasum -a 256 esptool-*; popd; done;
4-
#
5-
#
63

74
ver=`git describe --tags`
8-
outdir=esp8266-$ver
9-
srcdir=../hardware/esp8266com/esp8266/
5+
package_name=esp8266-$ver
6+
echo "Version: $ver"
7+
echo "Package name: $package_name"
8+
outdir=versions/$ver/$package_name
9+
srcdir=$PWD/../hardware/esp8266com/esp8266/
10+
11+
rm -rf versions/$ver
1012
mkdir -p $outdir
13+
1114
cp -R $srcdir/* $outdir/
1215

1316
cp -R ../libraries/SD $outdir/libraries/
@@ -20,36 +23,21 @@ gsed 's/runtime.tools.esptool.path={runtime.platform.path}\/tools//g' | \
2023
gsed 's/tools.esptool.path={runtime.platform.path}\/tools/tools.esptool.path=\{runtime.tools.esptool.path\}/g' \
2124
> $outdir/platform.txt
2225

23-
zip -r $outdir.zip $outdir
24-
rm -rf $outdir
25-
sha=`shasum -a 256 $outdir.zip | cut -f 1 -d ' '`
26-
size=`/bin/ls -l $outdir.zip | awk '{print $5}'`
26+
pushd versions/$ver
27+
echo "Making $package_name.zip"
28+
zip -qr $package_name.zip $package_name
29+
rm -rf $package_name
30+
sha=`shasum -a 256 $package_name.zip | cut -f 1 -d ' '`
31+
size=`/bin/ls -l $package_name.zip | awk '{print $5}'`
2732
echo Size: $size
2833
echo SHA-256: $sha
2934

30-
if [ "$upload" == "stable" ]; then
31-
badge_title="stable"
32-
badge_color="blue"
33-
path=""
34-
elif [ "$upload" == "staging" ]; then
35-
badge_title="staging"
36-
badge_color="yellow"
37-
path="staging/"
38-
elif [ "$upload" == "test" ]; then
39-
badge_title="test"
40-
badge_color="red"
41-
path="test/"
42-
else
43-
upload=""
44-
remote="http://localhost:8000"
45-
fi
46-
47-
if [ ! -z "$upload" ]; then
48-
remote="http://arduino.esp8266.com"
49-
release_date=$(date "+%b_%d,_%Y")
50-
wget -O badge.svg https://img.shields.io/badge/$badge_title-$release_date-$badge_color.svg
35+
if [ -z "$REMOTE_URL" ]; then
36+
REMOTE_URL="http://localhost:8000"
37+
echo "REMOTE_URL not defined, using default: $REMOTE_URL"
5138
fi
5239

40+
echo "Making package_esp8266com_index.json"
5341
cat << EOF > package_esp8266com_index.json
5442
{
5543
"packages": [ {
@@ -58,20 +46,20 @@ cat << EOF > package_esp8266com_index.json
5846
"websiteURL":"https://github.com/esp8266/Arduino",
5947
"email":"[email protected]",
6048
"help":{
61-
"online":"http://esp8266.com"
49+
"online":"$REMOTE_URL/versions/$ver/doc/reference.html"
6250
},
6351
6452
"platforms": [ {
6553
"name":"esp8266",
6654
"architecture":"esp8266",
6755
"version":"$ver",
6856
"category":"ESP8266",
69-
"url":"$remote/$path/$outdir.zip",
70-
"archiveFileName":"$outdir.zip",
57+
"url":"$REMOTE_URL/versions/$ver/$package_name.zip",
58+
"archiveFileName":"$package_name.zip",
7159
"checksum":"SHA-256:$sha",
7260
"size":"$size",
7361
"help":{
74-
"online":"http://esp8266.com"
62+
"online":"$REMOTE_URL/versions/$ver/doc/reference.html"
7563
},
7664
"boards":[
7765
{
@@ -89,66 +77,76 @@ cat << EOF > package_esp8266com_index.json
8977
{
9078
"name":"Adafruit HUZZAH ESP8266 (ESP-12)"
9179
},
80+
{
81+
"name":"SparkFun Thing"
82+
},
9283
{
9384
"name":"SweetPea ESP-210"
9485
}
9586
],
9687
"toolsDependencies":[ {
9788
"packager":"esp8266",
9889
"name":"esptool",
99-
"version":"0.4.5"
90+
"version":"0.4.6"
10091
},
10192
{
10293
"packager":"esp8266",
10394
"name":"xtensa-lx106-elf-gcc",
104-
"version":"1.20.0-26-gb404fb9"
95+
"version":"1.20.0-26-gb404fb9-2"
10596
} ]
10697
} ],
10798
10899
"tools": [ {
109100
"name":"esptool",
110-
"version":"0.4.5",
101+
"version":"0.4.6",
111102
"systems": [
112103
{
113104
"host":"i686-mingw32",
114-
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.5/esptool-0.4.5-win32.zip",
115-
"archiveFileName":"esptool-0.4.5-win32.zip",
116-
"checksum":"SHA-256:1b0a7d254e74942d820a09281aa5dc2af1c8314ae5ee1a5abb0653d0580e531b",
117-
"size":"17408"
105+
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.6/esptool-0.4.6-win32.zip",
106+
"archiveFileName":"esptool-0.4.6-win32.zip",
107+
"checksum":"SHA-256:0248bf78514a3195f583e29218ca7828a66e13c6e5545a078f1c1257033e4927",
108+
"size":"17481"
118109
},
119110
{
120111
"host":"x86_64-apple-darwin",
121-
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.5/esptool-0.4.5-osx.tar.gz",
122-
"archiveFileName":"esptool-0.4.5-osx.tar.gz",
123-
"checksum":"SHA-256:924d31c64f4bb9f748e70806dafbabb15e5eb80afcdde33715f3ec884be1652d",
124-
"size":"11359"
112+
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.6/esptool-0.4.6-osx.tar.gz",
113+
"archiveFileName":"esptool-0.4.6-osx.tar.gz",
114+
"checksum":"SHA-256:0fe87ba7e29ee90a9fc72492aada8c0796f9e8f8a1c594b6b26cee2610d09bb3",
115+
"size":"20926"
116+
},
117+
{
118+
"host":"i386-apple-darwin",
119+
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.6/esptool-0.4.6-osx.tar.gz",
120+
"archiveFileName":"esptool-0.4.6-osx.tar.gz",
121+
"checksum":"SHA-256:0fe87ba7e29ee90a9fc72492aada8c0796f9e8f8a1c594b6b26cee2610d09bb3",
122+
"size":"20926"
125123
},
126124
{
127125
"host":"x86_64-pc-linux-gnu",
128-
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.5/esptool-0.4.5-linux64.tar.gz",
129-
"archiveFileName":"esptool-0.4.5-linux64.tar.gz",
130-
"checksum":"SHA-256:4ce799e13fbd89f8a8f08a08db77dc3b1362c4486306fe1b3801dee80cfa3203",
131-
"size":"12789"
126+
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.6/esptool-0.4.6-linux64.tar.gz",
127+
"archiveFileName":"esptool-0.4.6-linux64.tar.gz",
128+
"checksum":"SHA-256:f9f456e9a42bb2597126c513cb8865f923fb978865d4838b9623d322216b74d0",
129+
"size":"12885"
132130
},
133131
{
134132
"host":"i686-pc-linux-gnu",
135-
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.5/esptool-0.4.5-linux32.tar.gz",
136-
"archiveFileName":"esptool-0.4.5-linux32.tar.gz",
137-
"checksum":"SHA-256:4aa81b97a470641771cf371e5d470ac92d3b177adbe8263c4aae66e607b67755",
138-
"size":"12044"
133+
"url":"https://github.com/igrr/esptool-ck/releases/download/0.4.6/esptool-0.4.6-linux32.tar.gz",
134+
"archiveFileName":"esptool-0.4.6-linux32.tar.gz",
135+
"checksum":"SHA-256:85275ca03a82bfc456f5a84e86962ca1e470ea2e168829c38ca29ee668831d93",
136+
"size":"13417"
139137
}
140138
]
141139
},
142140
{
143141
"name":"xtensa-lx106-elf-gcc",
144-
"version":"1.20.0-26-gb404fb9",
142+
"version":"1.20.0-26-gb404fb9-2",
145143
"systems": [
146144
{
147-
"host":"i686-mingw32",
148-
"url":"http://arduino.esp8266.com/win32-xtensa-lx106-elf-gb404fb9-2.tar.gz",
149-
"archiveFileName":"win32-xtensa-lx106-elf-gb404fb9-2.tar.gz",
150-
"checksum":"SHA-256:10476b9c11a7a90f40883413ddfb409f505b20692e316c4e597c4c175b4be09c",
151-
"size":"153527527"
145+
"host":"i686-mingw32",
146+
"url":"http://arduino.esp8266.com/win32-xtensa-lx106-elf-gb404fb9-2.tar.gz",
147+
"archiveFileName":"win32-xtensa-lx106-elf-gb404fb9-2.tar.gz",
148+
"checksum":"SHA-256:10476b9c11a7a90f40883413ddfb409f505b20692e316c4e597c4c175b4be09c",
149+
"size":"153527527"
152150
},
153151
{
154152
"host":"x86_64-apple-darwin",
@@ -157,6 +155,13 @@ cat << EOF > package_esp8266com_index.json
157155
"checksum":"SHA-256:0cf150193997bd1355e0f49d3d49711730035257bc1aee1eaaad619e56b9e4e6",
158156
"size":"35385382"
159157
},
158+
{
159+
"host":"i386-apple-darwin",
160+
"url":"http://arduino.esp8266.com/osx-xtensa-lx106-elf-gb404fb9-2.tar.gz",
161+
"archiveFileName":"osx-xtensa-lx106-elf-gb404fb9-2.tar.gz",
162+
"checksum":"SHA-256:0cf150193997bd1355e0f49d3d49711730035257bc1aee1eaaad619e56b9e4e6",
163+
"size":"35385382"
164+
},
160165
{
161166
"host":"x86_64-pc-linux-gnu",
162167
"url":"http://arduino.esp8266.com/linux64-xtensa-lx106-elf-gb404fb9.tar.gz",
@@ -177,13 +182,4 @@ cat << EOF > package_esp8266com_index.json
177182
}
178183
EOF
179184

180-
181-
if [ ! -z "$upload" ]; then
182-
remote_path=dl:apps/download_files/download/$path
183-
scp $outdir.zip $remote_path
184-
scp package_esp8266com_index.json $remote_path
185-
scp -r $srcdir/doc $remote_path
186-
scp badge.svg $remote_path
187-
else
188-
python -m SimpleHTTPServer
189-
fi
185+
popd

hardware/esp8266com/esp8266/boards.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ nodemcu.name=NodeMCU 0.9 (ESP-12 Module)
181181

182182
nodemcu.upload.tool=esptool
183183
nodemcu.upload.speed=115200
184-
nodemcu.upload.resetmethod=ck
184+
nodemcu.upload.resetmethod=nodemcu
185185
nodemcu.upload.maximum_size=1044464
186186
nodemcu.upload.maximum_data_size=81920
187187
nodemcu.upload.wait_for_upload_port=true

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,3 +400,26 @@ bool EspClass::updateSketch(Stream& in, uint32_t size, bool restartOnFail, bool
400400
if(restartOnSuccess) ESP.restart();
401401
return true;
402402
}
403+
404+
static const int FLASH_INT_MASK = ((B10 << 8) | B00111010);
405+
406+
bool EspClass::flashEraseSector(uint32_t sector) {
407+
ets_isr_mask(FLASH_INT_MASK);
408+
int rc = spi_flash_erase_sector(sector);
409+
ets_isr_unmask(FLASH_INT_MASK);
410+
return rc == 0;
411+
}
412+
413+
bool EspClass::flashWrite(uint32_t offset, uint32_t *data, size_t size) {
414+
ets_isr_mask(FLASH_INT_MASK);
415+
int rc = spi_flash_write(offset, (uint32_t*) data, size);
416+
ets_isr_unmask(FLASH_INT_MASK);
417+
return rc == 0;
418+
}
419+
420+
bool EspClass::flashRead(uint32_t offset, uint32_t *data, size_t size) {
421+
ets_isr_mask(FLASH_INT_MASK);
422+
int rc = spi_flash_read(offset, (uint32_t*) data, size);
423+
ets_isr_unmask(FLASH_INT_MASK);
424+
return rc == 0;
425+
}

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

Lines changed: 4 additions & 0 deletions
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);

hardware/esp8266com/esp8266/cores/esp8266/FS.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,14 @@ String Dir::fileName() {
144144
return _impl->fileName();
145145
}
146146

147+
size_t Dir::fileSize() {
148+
if (!_impl) {
149+
return 0;
150+
}
151+
152+
return _impl->fileSize();
153+
}
154+
147155
bool Dir::next() {
148156
if (!_impl) {
149157
return false;

hardware/esp8266com/esp8266/cores/esp8266/FS.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class Dir {
7878

7979
File openFile(const char* mode);
8080
String fileName();
81+
size_t fileSize();
8182
bool next();
8283

8384
protected:

hardware/esp8266com/esp8266/cores/esp8266/FSImpl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class DirImpl {
5656
virtual ~DirImpl() { }
5757
virtual FileImplPtr openFile(OpenMode openMode, AccessMode accessMode) = 0;
5858
virtual const char* fileName() = 0;
59+
virtual size_t fileSize() = 0;
5960
virtual bool next() = 0;
6061
};
6162

hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55

66
//#define DEBUG_UPDATER Serial
77

8+
extern "C" {
9+
#include "c_types.h"
10+
#include "spi_flash.h"
11+
}
12+
813
extern "C" uint32_t _SPIFFS_start;
914

1015
UpdaterClass::UpdaterClass()
@@ -112,28 +117,14 @@ bool UpdaterClass::end(bool evenIfRemaining){
112117
return true;
113118
}
114119

115-
bool UpdaterClass::_writeBuffer() {
116-
int rc = 0;
117-
delay(2); // give the rtos some time to handle TCP
118-
{
119-
AutoInterruptLock(15);
120-
rc = SPIEraseSector(_currentAddress / FLASH_SECTOR_SIZE);
121-
}
122-
123-
delay(2); // give the rtos some time to handle TCP
124-
125-
if(!rc) {
126-
{
127-
AutoInterruptLock(15);
128-
rc = SPIWrite(_currentAddress, _buffer, _bufferLen);
129-
}
130-
}
131-
132-
delay(2); // give the rtos some time to handle TCP
120+
bool UpdaterClass::_writeBuffer(){
121+
yield();
122+
bool result = ESP.flashEraseSector(_currentAddress/FLASH_SECTOR_SIZE) &&
123+
ESP.flashWrite(_currentAddress, (uint32_t*) _buffer, _bufferLen);
133124

134-
if(rc) {
135-
_error = UPDATE_ERROR_WRITE;
136-
_currentAddress = (_startAddress + _size);
125+
if (!result) {
126+
_error = UPDATE_ERROR_WRITE;
127+
_currentAddress = (_startAddress + _size);
137128
#ifdef DEBUG_UPDATER
138129
printError(DEBUG_UPDATER);
139130
#endif

0 commit comments

Comments
 (0)