1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-07 16:23:38 +03:00

68 Commits

Author SHA1 Message Date
Dirk O. Kaar
f5a882d03d Put InterruptLock (from interrupts.h) into namespace esp8266 to fix now and future (#6225)
collisions with 3rd party Arduino libraries (currently Adafruit DHT has this issue)
2019-06-25 11:14:45 +02:00
Earle F. Philhower, III
a389a995fb Add LittleFS as an optional filesystem, API compatible w/SPIFFS (but not on-flash-format compatible) (#5511)
* Add LittleFS as internal flash filesystem

Adds a LittleFS object which uses the ARMmbed littlefs embedded filesystem,
https://github.com/ARMmbed/littlefs, to enable a new filesystem for onboard
flash utilizing the exact same API as the existing SPIFFS filesystem.

LittleFS is built for low memory systems that are subject to random power
losses, is actively supported by the ARMmbed community, supports directories,
and seems to be much faster in the large-ish read-mostly applications I use.

LittleFS, however, has a larger minimum file allocation unit and does not do
static wear levelling.  This means that for systems that need many little
files (<4K), have small SPIFFS areas (64K), or which have a large static
set of files covering the majority of flash coupled with a frequently
updated set of other files, it may not perform as well.

Simply replace SPIFFS.begin() with LittleFS.begin() in your sketch,
use LittleFS.open in place of SPIFFS.open to open files, and everything
else just works thanks to the magic of @igrr's File base class.

**LITTLEFS FLASH LAYOUT IS INCOMPATIBLE WITH SPIFFS**
Since it is a completely different filesystem, you will need to reformat
your flash (and lose any data therein) to use it. Tools to build the
flash filesystem and upload are at
https://github.com/earlephilhower/arduino-esp8266littlefs-plugin and
https://github.com/earlephilhower/mklittlefs/ .  The mklittlefs tool
is installed as part of the Arduino platform installation, automatically.

The included example shows a contrived read-mostly example and
demonstrates how the same calls work on either SPIFFS.* or LittleFS.*
Host tests are also included as part of CI.

Directories are fully supported in LittleFS. This means that LittleFS
will have a slight difference vs. SPIFFS when you use
LittleFS.openDir()/Dir.next().  On SPIFFS dir.next()
will return all filesystem entries, including ones in "subdirs"
(because in SPIFFS there are no subdirs and "/" is the same as any
other character in a filename).

On LittleFS, dir.next() will only return entries in the directory
specified, not subdirs.  So to list files in "/subdir/..." you need
to actually openDir("/subdir") and use Dir.next() to parse through
just those elements.  The returned filenames also only have the
filename returned, not full paths.  So on a FS with "/a/1", "/a/2"
when you do openDir("/a"); dir.next().getName(); you get "1" and "2"
and not "/a/1" and "/a/2" like in SPIFFS.  This is consistent with
POSIX ideas about reading directories and more natural for a FS.

Most code will not be affected by this, but if you depend on
openDir/Dir.next() you need to be aware of it.

Corresponding ::mkdir, ::rmdir, ::isDirectory, ::isFile,
::openNextFile, and ::rewind methods added to Filesystem objects.
Documentation has been updated with this and other LittleFS information.

Subdirectories are made silently when they do not exist when you
try and create a file in a subdir.  They are silently removed when
the last file in them is deleted.  This is consistent with what
SPIFFS does but is obviously not normal POSIX behavior.  Since there
has never been a "FS.mkdir()" method this is the only way to be
compatible with legacy SPIFFS code.

SPIFFS code has been refactored to pull out common flash_hal_* ops
and placed in its own namespace, like LittleFS.

* Fix up merge blank line issue

* Merge in the FSConfig changs from SDFS PR

Enable setConfig for LittleFS as well plys merge the SPIFFS changes
done in the SDFS PR.

* Fix merge errors

* Update to use v2-alpha branch

The V2-alpha branch supports small file optimizations which can help
increase the utilization of flash when small files are prevalent.
It also adds support for metadata, which means we can start adding
things like file creation times, if desired (not yet).

* V2 of littlefs is now in upstream/master

* Update test to support non-creation-ordered files

In a directory, the order in which "readNextFile()" will return a name
is undefined.  SPIFFS may return it in order, but LittleFS does not as
of V2.  Update the test to look for files by name when doing
readNextFile() testing.

* Fix LittleFS.truncate implementation

* Fix SDFS tests

SDFS, SPIFFS, and LittleFS now all share the same common set of tests,
greatly increasing the SDFS test coverage.

* Update to point to mklittlefs v2

Upgrade mklittlefs to V2 format support

* Remove extra FS::write(const char *s) method

This was removed in #5861 and erroneously re-introduced here.

* Minimize spurious differences from master

* Dramatically reduce memory usage

Reduce the program and read chunk sizes which impacts performance
minimally but reduces per-file RAM usage of 16KB to <1KB.

* Add @d-a-v's host emulation for LittleFS

* Fix SW Serial library version

* Fix free space reporting

Thanks to @TD-er for discovering the issue

* Update littlefs to latest upstream

* Remove sdfat version included by accident

* Update SDFAT to include MOCK changes required

* Update to include SD.h test of file append
2019-05-25 09:53:24 +02:00
Allman-astyler
eea9999dc5 Revert "Allman now (#6080)" (#6090)
This reverts commit 98125f88605cd7e46e9be4e1b3ad0600dd5d2b51.
2019-05-14 00:09:54 +02:00
Allman-astyler
98125f8860 Allman now (#6080)
* switch restyle script for CI

* remove confirmation

* restyle with allman
2019-05-13 16:41:34 +02:00
Earle F. Philhower, III
9515f46684
Remove interrupt disable around flash operations (#5577)
All interrupt service routines are supposed to be in IRAM now, so there
is no need to keep interrupts disabled while doing flash operations.
Remove the IRQ disable/enable from the ESP.flash* methods.

Related to #5568
2019-01-09 15:03:58 -08:00
Gijs Noorlander
4c04c63c2a Rewrite PUYA patch to be more universal and mem friendly. (#5504)
* [PUYA] Applied ESPeasy puya_v3.patch

Applied the patch to get the starting point as described in https://github.com/esp8266/Arduino/issues/5493

* [PUYA] Only allocate memory when PUYA detected

core 2.5.0 PUYA patch, no puya:

Description	Function	#calls	call/sec	min (ms)	Avg (ms)	max (ms)
Save File		4	0.25	34.755	45.264	67.620
Free Mem:	16168

core 2.5.0 PUYA patch, Faked Puya detect:

Description	Function	#calls	call/sec	min (ms)	Avg (ms)	max (ms)
Save File		2	0.04	41.332	57.544	73.756
Free Mem:	11560

* [PUYA] Check for PUYA chip as soon as possible at boot

Check for PUYA chip in call for `getFlashChipId()`
This will only be done once and the result of the get function is also cached.

* [PUYA] Use limited buffer (512 byte) allocated at first write

No need to allocate a buffer when not writing to flash.
The default buffer size is 512 bytes, which is 2 pages in the flash chip.

* [PUYA] Lower PUYA flash buffer to 1 page (256 B)

As discussed here: https://github.com/esp8266/Arduino/issues/5493#issuecomment-447543279

* [PUYA] Fix indents naming and return conditions

* [PUYA] Move Puya write code to spi_flash_write_puya

* [PUYA] Make spi_flash_write_puya static and define PUYA_SUPPORT

* [PUYA] Add some SPI flash vendor IDs

As requested by @igrr https://github.com/esp8266/Arduino/pull/5504#discussion_r242016184

* [PUYA] All suggested changes.

See: https://github.com/esp8266/Arduino/pull/5504#pullrequestreview-186145820
2018-12-19 00:59:25 -03:00
Develo
72ad9353fc
Fix rtc mem bounds check (#5372) 2018-11-24 16:14:54 -03:00
david gauchard
74ca42f829 Sketch emulation on host (#5342)
* WIP compile examples on host with 'make examples'

* WIP bufferize tcp input

* WIP Makefile

* WIP network to rework, tcp/udp to factorize, udp addresses broken

* minor changes to the core

* WIP basic udp working

* WIP mdns

* WIP mcast receiving, not sending

* WIP mdns OK

* beta version

* SSL + doc

* update travis host test command

* licenses

* typo

* doc: arduino builder is not around: declare functions before calling them

* fix with latest SSL PR, compile in 32 bits mode

* fix make clean

* make -m32 optional

* 32bits compiler ability tester

* WIP

* WIP (fix 1 vtable error, still another one to hunt with using spiffs)

* example astyle

* fix os_printf_plus

* load / save mock spiffs

* fix style

* fix using spiffs/mock

* don't mess ram

* update doc

* remove leftover

* optimization -Os except for CI, rename ARCH32 to FORCE32

* revert useless cast (not even compiled)

* remove unused function

* use proper type for pointer arithmetics

* makefile: sketch object and cpp file moved to bin/ directories
easier to clean, and IDE don't like them

* changes for review

* make use of %zd

* less verbose makefile by default (option)

* update readme
2018-11-20 18:51:45 -02:00
Earle F. Philhower, III
1b1b0a28a8
Add stack repainting call to ESP class (#5221)
Allow the unused stack to be reset to the check value at any time in
the application, allowing for delta-stack calculations to be done.

Add ESP.resetFreeContStack() class method for general use.

Add in some dumping in the BearSSL_Validation example to show the
usage for those that care.
2018-10-11 08:55:30 -07:00
Develo
0e0e34c614
implement EspClass::getFreeContStack method (#5133)
* implement EspClass::getFreeContStack method

* Remove unneeded extern

* Really remove unneeded extern
2018-09-13 16:02:53 -03:00
david gauchard
ce28a76a24 metric for heap fragmentation (#5090)
* +Esp.getHeapUnfragness()

* only in debug mode

* default value

* always enable, 64->32, light 32 integer square root, comments

* fix when debugging is disabled

* give credits

* cosmetics

* fragmentation metric updates (doc, better api, added getMaxFreeBlockSize())

* api reworked, +example

* fixe types, fix names

* coding style fix

* use astyle for example
2018-09-10 01:50:01 -03:00
Anthony Elder
5c7dbf4e4b Add instantly option to deepSleep (#5052)
* Add instantly option to deepSleep

* Move system_deep_sleep_instant to a new deepSleepInstant function
2018-08-19 05:46:33 -03:00
devyte
8da1d78cb4 Change argument to Esp.deepSleep from uint32 to uint64 to match SDK, add deepSleepMax based on the cali_proc function per SDK 2018-01-28 19:12:12 +08:00
liebman
3b0c395837 cleanup warnings (#3934) 2017-12-08 02:08:54 -03:00
Ivan Grokhotkov
80aeacfb80 Fix erase size in ESP.eraseConfig
SDK uses final 4 sectors of flash for configuration data.
ESP.eraseConfig would only erase 2 sectors, so in some cases of
corrupted data ("system param error"), users could not fix the issue
using ESP.eraseConfig, and had to use esptool instead.

Thanks @HugoML for reporting this.
2017-10-15 02:02:05 -05:00
Rodion Kvashnin
2126146e20 Fix warnings (#2881)
* Suppressed -Wunused-parameter and -Wunused-function by casting to void unused identifiers.

* Explicit initialization of all fields to suppress -Wmissing-field-initializers.

* Fixed signed/unsigned integer comparison.

* memset initialization of structs.

* More -Wunused-parameter fixes.
2017-01-31 10:07:59 +03:00
Me No Dev
f50a6c0a8a Add support for 8 and 16 MB Flash (#2351)
Add to core dev config initially
2016-08-01 11:20:53 +08:00
Ivan Grokhotkov
1640cc302d Fix ESP.getSketchSize, add ESP.getSketchMD5 (#2158)
* return true sketch size using ESP.getSketchSize() https://github.com/esp8266/Arduino/issues/2153
add MD5 for current binary ESP.getSketchMD5()

* Simplify ESP.getSketchSize, fix ESP.getSketchMD5
2016-06-16 21:05:43 +08:00
Ivan Grokhotkov
32bd42b028 Store git version of the core in the compiled binary (#2099)
* Store git version of the core in the compiled binary

* Don't update version number when using boards manager package
2016-06-06 14:37:39 +08:00
Ivan Grokhotkov
4b43860276 Add offset parameter to rtcUserMemoryRead/Write, expose RTC_USER_MEM in esp8266_peri.h 2016-06-02 13:39:53 +08:00
Macro Yau
2a4081b079 Added support for RTC user memory in ESP-specific APIs. (#1836) 2016-06-01 11:13:33 +08:00
Ivan Grokhotkov
0a320b9fb5 Revert "Update interrupts to be masked when accessing flash (#1388)"
This reverts commit 6c37fee7a189371401e384834ab98ec1da226ff8.
2016-03-11 08:45:39 +03:00
Ivan Grokhotkov
6c37fee7a1 Update interrupts to be masked when accessing flash (#1388) 2016-03-10 14:13:09 +03:00
Charles
d9a51f9fa1 Added getResetReason in human readable form 2016-01-25 00:43:57 +01:00
Markus Sattler
898737422e ESP class - move interpretation of magic bytes in function 2015-12-19 14:30:13 +01:00
Markus Sattler
f57ab609ec move flash size check to a function in ESP class,
allow real size bigger the IDE for Update
2015-12-17 13:02:14 +01:00
Martin Ayotte
5d7a3e939c add BergMicro Flash IDs 2015-11-24 15:11:20 -05:00
Martin Ayotte
348efba5b2 Merge remote-tracking branch 'upstream/esp8266' into esp8266 2015-09-09 10:54:30 -04:00
chaeplin
4b07256802 adding resetInfo.reason 6
enum rst_reason {
	REASON_DEFAULT_RST		= 0,
	REASON_WDT_RST			= 1,
	REASON_EXCEPTION_RST	= 2,
	REASON_SOFT_WDT_RST   	= 3,
	REASON_SOFT_RESTART 	= 4,
	REASON_DEEP_SLEEP_AWAKE	= 5,
	REASON_EXT_SYS_RST      = 6
};
2015-09-06 14:36:56 +09:00
Martin Ayotte
fe1cc18ddb add W25Q40 chipid 2015-09-04 09:52:27 -04:00
Ivan Grokhotkov
c355f626f2 Add flash read/write/erase APIs to ESPClass 2015-08-18 23:38:23 +03:00
Markus Sattler
4ad894683e add system_soft_wdt_feed to ESP.wdtFeed(); 2015-08-10 17:35:15 +02:00
Ivan Grokhotkov
3a3f25997c Disable interrupts inside Esp.getVcc (#567) 2015-08-05 08:54:45 -04:00
Ivan Grokhotkov
cc152de907 Return to scheduler context from ESP::deepSleep (#609) 2015-08-05 08:42:29 -04:00
Markus Sattler
d4ddb66fc4 update SDK to v1.2.0_15_07_03 2015-07-07 18:09:23 +03:00
Ivan Grokhotkov
5763dbba3b Code review 2015-07-06 21:04:08 +03:00
John Doe
0d969e9760 Fixes and HTTP Post update example
Because eboot first erases the space required for the new sketch, and
if the new sketch is larger then the old one, with the old way, part of
the beginning of new sketch will be deleted. Therefore for now I opted
to keep the max update size either half the available space for
sketches or what's left from the first one, whichever is smaller.
To be able to create a simple post mechanism for updates, I needed to
have a way to write the new binary, without knowing it's final size, so
I added an option to the end() method. Example in the WebServer
examples.
2015-07-06 12:32:28 +03:00
John Doe
6f2069deac New Update library, example, upload and more
Proper error handling in the uploading python script
Much faster OTA example sketch with better results
New Update class that simplifies updating the firmware from any source
Updated Esp.updateSketch() to use the new class
2015-07-06 12:31:24 +03:00
John Doe
d828312299 fix fail on slow streams 2015-07-06 12:27:54 +03:00
John Doe
2e08c5d797 Add an option to reboot on failed update 2015-07-06 12:27:44 +03:00
Markus Sattler
3a34aa61e0 Merge remote-tracking branch 'remotes/esp8266/esp8266' into esp8266
Conflicts:
	hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp
2015-06-25 20:02:37 +02:00
Ivan Grokhotkov
788095c66e Remove implementations of WDT-related functions
which were not correct since 0.9.3 anyway
2015-06-25 00:13:06 +03:00
Markus Sattler
f11c65e9a7 add basic check for valid data for in updateSketch (first byte of bin is always 0xE9)
send SDK version by HTTP Update
2015-06-22 10:23:33 +02:00
Markus Sattler
93f215cb2e add wait time after reset 2015-06-21 21:38:19 +02:00
Markus Sattler
fe1b39fa0e update AVR src
* java code not tested *

Merge remote-tracking branch 'remotes/arduino/master' into esp8266

Conflicts:
	README.md
	app/src/processing/app/AbstractMonitor.java
	arduino-core/src/processing/app/Serial.java
	libraries/WiFi/examples/WiFiWebClientRepeating/WiFiWebClientRepeating.ino
	libraries/WiFi/library.properties
2015-06-17 14:24:25 +02:00
Markus Sattler
e856053254 update getResetInfo 2015-06-17 12:08:52 +02:00
Ivan Grokhotkov
26eede862f Add function to update sketch from Stream 2015-06-05 14:07:55 +03:00
Ivan Grokhotkov
becc1d32ed rename EspClass::eraseESPconfig to eraseConfig 2015-06-05 14:07:42 +03:00
Markus Sattler
5a19cc24bf correct addr 2015-05-25 13:13:05 +02:00
Markus Sattler
5852c484ca add ESP.eraseESPconfig() to erase the ESP SDK configuration (including wifi)
improve WiFiMulti
2015-05-25 12:29:26 +02:00