1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-05-15 17:35:24 +03:00

932 Commits

Author SHA1 Message Date
geoffday67
ec7644227e
Hold transmitter in reset during rate change (#7248) 2020-04-27 13:58:47 -04:00
Dirk O. Kaar
36e047e908
Allow stopWaveform to stop timed-out waveforms (#7236)
Fixes #7230.
2020-04-23 16:00:17 -07:00
Mike Nix
9b41d9ac5e
XMC flash support - WIP (#6725)
* Move the spi vendor list from Esp.h to its own header in eboot.

* Fix ifdef issue with spi_vendors.h

* Add initFlashQuirks() for any chip specific flash initialization.

Called from user_init().

* namespace experimental for initFlashQuirks()

* Slow down flash access during eboot firmware copy

Part 1 - still some work to do

* Slow down flash access during eboot firmware copy on XMC chips

Part 2 - Identify the chip type.

Note: there may still be issues with the access speed change.
This is very much experimental.

* Commit eboot.elf

Co-authored-by: Develo <deveyes@gmail.com>
Co-authored-by: Earle F. Philhower, III <earlephilhower@yahoo.com>
2020-04-23 12:15:21 -04:00
kugelkopf123
b02643e7fa
Tz update (#7234)
* TZ update

Added the possibility to set the timezone without using NTP. This is helpful to have the timezone advantages when using an external RTC.

* Update time.cpp
2020-04-20 20:09:54 -04:00
Dirk O. Kaar
ea1fdb210f
Fixup 7122, new startWaveformCycles more aptly named startWaveformClockCycles (like in rest of core API for this type of use). (#7218)
Fix/clarify comments.
Fix redundancies in Tone, end Tone waveform on exact period limit for proper sound.
Fix redundancies in wiring_pwmExtend Servo to map in-use pins, Tone already has this.
2020-04-19 14:57:46 +02:00
david gauchard
ce0e63f629
fix style checking: (#7222)
- (some) core files are astyled
- ci was only checking libraries
=> now everything is checked
2020-04-17 21:37:12 -04:00
Earle F. Philhower, III
1af4ea661f
Allow waveforms to be specified in clock cycles (#7211)
* Allow waveforms to be specified in clock cycles

Allow the PWM to specify sub-microsecond waveform edges, as have been
proposed by @dok-net and me.  No other changes intended.

This will increase the linearity at 30 and 40 kHZ PWM rates, but leave
most other things unaffected.

* Cycle-accurate wafveform to specify Tone periods

Co-authored-by: Develo <deveyes@gmail.com>
2020-04-16 14:40:20 -07:00
Dirk O. Kaar
6cb16997d8
Use F_CPU if (?) CPU frequency switch is compile-time only (#6833)
* At least the F_CPU define in host mock.h is needed by host Arduino.h - need to include Arduino.h further down in mock.h for this to work.

* Geting the include order right

* Prepare for runtime CPU clock rate selection

* Fix compile for not defined F_CPU

If defined F_CPU, make getCpuFreqMHz() a constexpr

* Use defines for register CPU2X instead of hex value

* Fix build for host - getCpuFreqMHz there was also in conflict with getCycleCount, using F_CPU:

tests/host/common/mock.h:#define F_CPU 80000000 (!)

* Asymmetrical includes and defines on host

* Support restart switch from 160MHz to 80MHz, e.g for OTA. Fixes #579
2020-04-15 16:15:35 -04:00
Luigi Rodorigo
e1789ddf0c
MD5 Builder: Rework for unqiue_ptr instead of malloc, get only member functions marked as const (#7208)
Co-authored-by: Luiss <luiss@mind.cc>
2020-04-11 14:02:38 -04:00
Luigi Rodorigo
41d271d972
Fix for MD5 leak bug, issue #7195 (#7197)
Co-authored-by: Luiss <luiss@mind.cc>
Co-authored-by: david gauchard <gauchard@laas.fr>
Co-authored-by: Develo <deveyes@gmail.com>
Co-authored-by: Earle F. Philhower, III <earlephilhower@yahoo.com>
2020-04-09 10:36:57 -07:00
StanJ
c548958f6e
Tone limit 20KHz (#7179)
Set Tone maximum frequency to 20KHz (was 5KHz)
2020-04-04 09:47:54 -07:00
david gauchard
a04c3244d5
esp8285: properly initialize free gpio as input (#7165) 2020-03-27 11:39:12 +01:00
Takayuki 'January June' Suwa
631f66bd08
Attribute __real_system_restart_local() as (noreturn) (#7167)
* Attribute `__real_system_restart_local()` as `(noreturn)`
* As well as `abort()`.
* Aggragate two decls into `coredecls.h`.
2020-03-26 22:28:09 +01:00
Clemens Kirchgatterer
e64cb619f7
Pull GPIO initialization into its own 'weak' function. (#7044)
* Pull GPIO initialization into its own 'weak' function.

By pulling GPIO init into its own weak function, it can be overridden by the user. This is important in cases when GPIOs should not toggle during reboot, exceptions or other crashes. Fixes #7041.

* Add prototype for resetPins()
2020-03-22 13:16:39 +01:00
Earle F. Philhower, III
db75d2c448
Abort if BearSSL stack allocation fails (#7152)
As found by @d-a-v, if the malloc() used to get the BearSSL stack does
not succeed, abort() immediately.
2020-03-15 11:56:23 -07:00
Earle F. Philhower, III
e252873263
Use 2nd stack for update signature verification (#7149)
* Use 2nd stack for update signature verification

Fixes #7145

When doing a signed update, the signature calculation can use a lot of
stack, so move it silently to the BearSSL second stack.

Also fix a memory leak of signature-bytes found by @JiriBilek

* Reset state on any error condition in Updater::end
2020-03-14 16:10:40 -07:00
david gauchard
abdd2bdbb6
simple TZ api: bypass sprintf/sscanf: + 7KB (#7109)
* simple TZ api: bypass sprintf/sscanf: + 7KB
2020-02-25 11:16:10 +01:00
Earle F. Philhower, III
bea64dfa69
Add fileCreation/getCreation create-time accessors (#7000)
* Add fileCreation/getCreation create-time accessors

For SDFS and LittleFS, enable a creation time accessor for files and Dir
iterators, similar to the existing fileTime/getLastWrite calls.

Remove spurious Dir::getLastWrite method (the proper and only documented
way is really Dir::fileTime).

Update json to point to new mklittlefs which copies the creation date of
files to the image.

Fixes #6992

* Remove malloc(), use stack vars for temp names

LFS filenames are limited in size and generally very small.  Use a stack
variable instead of a dynamic allocation when performing full-path
computations.

* Replace "Creation" w/"CreationTime" in FS accessor

Per review, `getCreation` -> `getCreationTime`, `fileCreation` ->
`fileCreationTime`.

The names `fileTime()` and `getLastWrite()` are inherited from ESP32
implementation and unchanged.

* Add creation time to listfiles SD example

* Enable SdFat's sateTime callback for timestamping

SdFat requries the dateTimeCallback call (global for everything) to
update dates and times on created files.

Because the callback signature doesn't have space for us to provide
any parameters, we cannot get the the File, Dir, or FS object's
dateTimeCB member.  Instead, just go with `time(null)` as the callback
function which is right in all but the most esoteric cases.

* Correct DOS year/month offset in dateTime callback

* Fix docs to match new xxxCreationTime() API names

Co-authored-by: Develo <deveyes@gmail.com>
2020-02-22 12:49:08 -08:00
david gauchard
f69e404c87
SNTP: backport espressif sntp api for lwip2 (#7097) 2020-02-22 11:55:01 +01:00
david gauchard
cd56dc0901
restore dtostrf when floats are disabled in printf/scanf + round fix (#7093)
* restore dtostrf+fix when float printing is disabled at link time

* fix include file

* fix with proposal per review

* always use dtostrf
2020-02-21 22:34:09 -03:00
Earle F. Philhower, III
5100beec2c
Merge branch 'master' into optimistic_yield_recurrency 2020-02-20 12:30:05 -08:00
Dirk O. Kaar
afe40211ef Corrections after review remarks; thanks @earlephilhower 2020-02-20 19:41:08 +01:00
david gauchard
f066ed2495
configTime(tzsec,dstsec,): fix UTC/local management (#6993)
* configTime(tzsec,dstsec,): fix UTC/local management
This PR also remove dead code since probably newlib updates
The NTP-TZ-DST example is also updated
* restore sntp_set_timezone_in_seconds()
fixes #6678
* +configTzTime()
2020-02-18 16:39:38 +01:00
M Hightower
c07a1fd1b7 Corrected stack start and end in stack_thunk_dump_stack(). 2020-02-14 11:05:04 -08:00
Earle F. Philhower, III
f762721603 Use sprintf to output floats in Print/dtostrf
Fixes #7043

Two slightly different custom routines were implemented by hand in
dtostrf (an AVR-lib non-ISO function) and Print.  This resulted in
inconsistent output of float/double vars when rounding was needed.

Replace them all with a call to sprintf(), removing the duplicated, not
quite correct code.

Print(String(float)) and Print(float) now generate the same output.
2020-02-09 09:11:41 -08:00
Earle F. Philhower, III
cd5cbae1f6
Merge branch 'master' into wmath_map 2020-02-08 13:51:48 -08:00
M Hightower
f45da1cf25 Updated stack offsets for postmortem stack dump.
Changed ets_putc to ets_uart_putc1 to better newline handling.
2020-02-07 10:02:14 -08:00
Dirk O. Kaar
50fab5162f No need for preprocessor undefinition of optimistic_yield, after all. 2020-02-05 14:31:42 +01:00
Dirk O. Kaar
8d2eca5684 Remove long-since disused define. 2020-02-05 14:31:42 +01:00
Dirk O. Kaar
554435780b Due to 3rd party use of symbol optimistic_yield without #include <Arduino>, have to resort to preprocessor definition for inlining. 2020-02-05 14:31:42 +01:00
Dirk O. Kaar
3767791fbc Allow constexpr evalution to occur. optimistic_yield is always called with a literal parameter value. 2020-02-05 14:31:42 +01:00
Dirk O. Kaar
3d7423bdde Move yield start time set to esp_yield_within_cont 2020-02-05 14:31:42 +01:00
Dirk O. Kaar
598361f3aa Substitute micros() by CPU cycles - faster, but large values for interval_us can overflow - 26s at 160MHz CPU clock. 2020-02-05 14:31:42 +01:00
Dirk O. Kaar
d6e603f397 Fix optimistic_yield to not yield on every call after a loop runs for x us, but yield only every x us between optimistic_yield calls. 2020-02-05 14:31:42 +01:00
Dirk O. Kaar
58829022ed Fix "improved_map" from Servo.cpp and use this is in core implementation.
Greatly reduces error rate (half, or 0 zero errors, depends on in/out ranges) for round-trip mapping at the same performance.
2020-02-05 07:28:04 +01:00
Dirk Mueller
a2141803f1
Code size optimisation of ESP.getResetReason() (#7029)
* Code size optimisation of ESP.getResetReason()

doing if/else snakes for something that is a switch/case
is wasteful, as it repeatedly evaluates the same if() condition.
Also repeating strcpy_P is adding code bloat.

This simplification reduces size from 111 to 41 bytes.

* add break statement also to default case
2020-01-30 13:07:34 -08:00
Dirk Mueller
158039e414 Reduce mem footprint of ESP.getResetInfo() (#7030)
This function has excessively long datastrings that can
better be stored in flash, reducing runtime memory footprint.

Also detailed formatting only makes sense when there is an
exception or a watchdog. In other cases instead of printing
an unhelpful "flag: 0" we can just return the ResetReason, which
is much more readable.

Saves about 120 bytes of (data) memory.
2020-01-22 06:00:11 -08:00
Earle F. Philhower, III
5bc3079217
Fix Updater potential overflow, add host tests (#6954)
* Fix Updater potential overflow, add host tests

Fixes #4674

The Updater class could, when exactly 4K bytes were in the buffer but
not yet written to flash, allow overwriting data written to it beyond
the passed-in size parameter.

Fix per @jason-but's suggestion, and add a host test (plus minor changes
to Updater code to support host testing).

* Add missed mock file

* Remove most testing ifdefs fro updater

Per @mcspr's suggestion, we can pass in fake link symbols allowing
Updater to take the address of `_FS_start`/etc. even when building on
the host for testing.

There is still a single remaining wifi_set_power_mode ifdef'd and a
duplication of the digitalWrite/pinMode for testing vs. host building.

Co-authored-by: Develo <deveyes@gmail.com>
2020-01-08 17:38:28 -08:00
Earle F. Philhower, III
b62d8c7633
Update BearSSL, increase SSL stack (#6980)
Only minor updates to headers and no functionality change on the
portions that we use in the ESP8266.

@Teddyz reported random crashes while running against a local MQTT
server and was able to report stack usages of up to 6136 bytes.
Increase the SSL stack to a little more than that, once again.
2020-01-04 08:18:14 -08:00
StanJ
3197d2ac4e Issue2524 allow clocks below 100KHz (#6934)
* change bus clock (busywait) to be programmable [issue 2524], remove unused slave STOP function

* change bus clock (busywait) to be programmable [issue 2524], remove unused slave STOP function

* change bus clock (busywait) to be programmable [issue 2524], remove unused slave STOP function

* correct for underflow < 233Hz

* change bus clock (busywait) to be programmable [issue 2524], convert tabs to spaces

* updated minimum I2C speed for calculated bus clock
2019-12-28 19:07:38 -03:00
Dirk Mueller
698ffc3498 Various String handling cleanups (#6945)
Use the proper api (::clear(), isEmpty()) instead of doing
comparisons/assignments of empty strings. Also fix mixture
of tabs and spaces in the source code.
2019-12-26 17:03:18 -03:00
Dirk Mueller
6c2ab25087 Code size optimisations for ESP.getFullVersion() (#6936)
This saves about ~ 60 bytes of flash usage (50% reduction of
the total function size)
2019-12-23 17:52:16 -08:00
M Hightower
30bfdad458 Added missing "if (umm_heap == NULL) {..." to umm_free_heap_size_lw (#6929)
also called through xPortGetFreeHeapSize, umm_free_heap_size, ...

Co-authored-by: Earle F. Philhower, III <earlephilhower@yahoo.com>
2019-12-20 15:45:16 -08:00
Earle F. Philhower, III
52d84b1ead
Add a CRC32 over progmem and ESP.checkFlashCRC (#6566)
* Add a CRC32 over progmem and ESP.checkFlashCRC

Automatically embed a CRC32 of the program memory (including bootloader
but excluding any filesystems) in all images in unused space in the
bootloader block.

Add a call, ESP.checkFlashCRC() which returns false if the calculated
CRC doesn't match the one stored in the image (i.e. flash corruption).

Fixes #4165

* Add example that corrupts itself, comments

Show CRC checking catch a 1-bit error in program code by corrupting a
large array, and then return it to clean and verify the CRC matches once
again.

Add comments to the CRC check routine

Clean up pylint complaints on crc32bin.py

* Check linker script for CRC space in bootsector

Add an assertion in the eboot linker file to guarantee that we have at
least 8 bytes of unused space at the end of the boot sector to patch in
the CRC.  If not, the eboot link will fail.

* Add note about what to do if CRC check fails

Per discussion with @d-a-v.

When the CRC check fails, you could *try* to do certain things (but may
not succeed since there is known flash corruption at that point).  List
a few ideas for application authors.

* Only single, flash/ram friendly crc32() function

* Combine the CRC calc and bin generation in 1 step

Per discussion w/@mcspr, combine the CRC calculation with the binary
generation, removing the additional build step.
2019-12-20 14:38:35 -08:00
Earle F. Philhower, III
1d0bc5efdf
Allow GZIP compressed flash updates (#6820)
* Allow GZIP compressed flash updates

Modified the bootloader to be able to take stored updates in compressed
GZIP format (i.e. the output of "gzip -9 xxx.bin") and decompress them
on-the-fly to their final destination.  This can work for apps and for
filesystems (when used with the 2-step update option).

Allow eboot to be built using -Os/2 optimizations by fixing some portions
which failed when any optimizations were used.  Add -Wall and use data
and function sections to reduce size.  Use -Os to minimize size.

Remove obsolete esptool-ck calls to build a .ROM image, we don't use it.

Move all uninitted variables to RAM from IRAM, allowing 8-bit access.

Hook in @d-a-v and @pfalcon's uzlib port to actually do the
decompression.  Do not use any CRC checking which saves space.  Since we
have overwritten all of flash by the time we know id the CRC matches,
there's nothing we could have done anyway.

Adjust the Updater class to support GZIP files and not attempt to patch
them.

Bootloader builds to 0xd90 out of 0xfff bytes.

* Add @d-a-v's patch for httpupdate

https://github.com/esp8266/Arduino/pull/6820#pullrequestreview-326541014

* Update uzlib to point to pfalcon++

For now, because there are some self-test failures with @d-a-v's esp8266
branch (whose cool new features we don't actually use in eboot now)
start with pfalcon's 2.9 release and add the 2 patches (clcidx to code
from IRAM/RODATA, and the Windows test file renaming) needed to build
and run successfully.

* Add (c) notice for uzlib to README
2019-12-18 09:17:38 -08:00
david gauchard
3d128e5c78
release 2.6.3 (#6916) 2019-12-16 14:42:16 +01:00
StanJ
5612738636 change to make inline helpers truly inline [issue 6875] (#6898)
* change to make inline helpers truly inline [issue 6875]

* pulled the inline helpers out of the TWI class [issue 6875]

* removed some inlines causing issues [issue 6875]

* removed 2 more inlines from slave timeout section [issue 6875]

* removed 2 more inline attributes on public functions, moved twi_scl_valley up into the master section [issue 6875]
2019-12-15 14:38:33 -03:00
david gauchard
72a4dde64f
sntp callback: use a recurrent schedule function (#6888) 2019-12-10 11:41:42 +01:00
Earle F. Philhower, III
759ba27b62 Use 128B chunks instead of 1B writes in Print::print(FlashStringHelper) (#6893)
Fixes #6524

Should help with speed of output when printing large flash strings to
things like a file or a TCP connection.

Use a 128 byte chunk in a temp buffer to send data using write(),
reducing the # of write calls by ~128x.
2019-12-09 23:04:49 -03:00
Earle F. Philhower, III
7605dc1643
Only set flashmode byte when uploading an executable (#6891)
Fixes #6880

The updater was patching in the proper flashmode configuration byte for
all uploads, apps and filesystems.  This ended up corrupting one byte on
every FS upload.

Change updated to only patch theflashmode if it is doing an app.
2019-12-08 19:34:04 -07:00