1. 22 3月, 2021 2 次提交
  2. 21 3月, 2021 2 次提交
    • D
      rename ClientContext::wait_until_sent() to wait_until_acked() (#7896) · 3b1e8eab
      david gauchard 提交于
      * rename ClientContext::wait_until_sent() to wait_until_acked()
      
      While looking at #6348 and #6369, and after checking into lwIP sources, it
      appears that the tests in ClientContext::wait_until_sent() effectively wait
      for all acks on current output buffer. Comments are added.
      
      * host tests counterpart
      3b1e8eab
    • M
      WString: direct operator overloads instead of StringSumHelper (#7781) · 0894b514
      Max Prokhorov 提交于
      * wip
      
      * huh, turns out String = 'c' did some weird stuff
      
      * style
      
      * allow "blah" + String, 'c' + String and F("...") + String
      
      also, simplify const char* vs. __FlashStringHelper, and just always use _P functions
      
      * shuffle things into .cpp
      
      * trying to fix arduinojson
      
      based on the implementation, we only need to specify that this symbol is a class
      
      * fix accidental realloc, add test for operator+
      
      basic chaining should work just like with master
      comparing std::move() buffers won't work though, because we never allow
      anything but `const StringSumHelper&` references
      
      * fixup! fix accidental realloc, add test for operator+
      
      * don't need another branch
      
      * template +=(String / char* / numbers) and +(String, numbers / char*)
      
      * nul after moving (isnt mem always zeroed tho?)
      
      * check if lhs cant keep before switching to rhs
      
      * fix String used to store struct data
      
      `cannot bind bit-field '...' to 'signed char&'
      `cannot bind bit-field '...' to 'unssigned char&'
      
      noticed in both tasmota and espeasy, where this generates a webpage
      content from some status struct containing bitfields
      
      * style once more
      
      * typo
      
      * recover 44400218
      0894b514
  3. 16 3月, 2021 3 次提交
  4. 15 3月, 2021 12 次提交
    • E
      Clean up ICACHE_RAM_ATTR in VM PR (#7924) · dcdd4313
      Earle F. Philhower, III 提交于
      dcdd4313
    • D
    • D
      48e1ccbf
    • M
      9d82ebe6
    • T
      ESP8266WebServer: Add variadic template version of collectHeaders() (#7296) · 47b8947e
      Takayuki 'January June' Suwa 提交于
      * More user-friendly, less RODATA usage.
      
      eg. `webServer.collectHeaders(F("Content-Type"), F("Origin"));`
      
      In this example, less about 20 bytes than the traditional way.
      47b8947e
    • E
      Enable 128K virtual memory via external SPI SRAM (#6994) · 8ffe41b7
      Earle F. Philhower, III 提交于
      Provides a transparently accessible additional block of RAM of 128K to
      8MB by using an external SPI SRAM.  This memory is managed using the UMM
      memory manager and can be used by the core as if it were internal RAM
      (albeit much slower to read or write).
      
      The use case would be for things which are quite large but not
      particularly frequently used or compute intensive.  For example, the SSL
      buffers of 16K++ are a good fit for this, as are the contents of Strings
      (both to avoid main heap fragmentation as well as allowing Strings of
      >30KB).
      
      A fully associative LRU cache is used to limit the SPI bus bottleneck,
      and background writeback is supported.
      
      Uses a define in boards.txt to enable.  If this value is not defined,
      then the entire VM routines should not be linked in to user apps
      so there should be no space penalty w/o it.
      
      UMM `malloc` and `new` are modified to support internal and external
      heap regions.  By default, everything comes from the standard heap, but
      a call to `ESP.setExternalHeap()` before the allocation (followed by a
      call to `ESP.resetHeap()` will make the allocation come from external
      RAM.  See the `virtualmem.ino` example for use.
      
      If there is no external RAM installed, the `setExternalHeap` call is a
      no-op.
      
      The String and BearSSL libraries have been modified to use this external
      RAM automatically.
      
      Theory of Operation:
      
      The Xtensa core generates a hardware exception (unrelated to C++
      exceptions) when an address that's defined as invalid for load or store.
      The XTOS ROM routines capture the machine state and call a standard C
      exception handler routine (or the default one which resets the system).
      
      We hook into this exception callback and decode the EXCVADDR (the
      address being accessed) and use the exception PC to read out the
      faulting instruction. We decode that instruction and simulate it's
      behavior (i.e. either loading or storing some data to a
      register/external memory) and then return to the calling application.
      
      We use the hardware SPI interface to talk to an external SRAM/PSRAM,
      and implement a simple cache to minimize the amount of times we need
      to go out over the (slow) SPI bus. The SPI is set up in a DIO mode
      which uses no more pins than normal SPI, but provides for ~2X faster
      transfers.  SIO mode is also supported.
      
      NOTE: This works fine for processor accesses, but cannot be used by
      any of the peripherals' DMA. For that, we'd need a real MMU.
      
      Hardware Configuration (only use 3.3V compatible SRAMs!):
      
        SPI byte-addressible SRAM/PSRAM: 23LC1024 or smaller
          CS   -> GPIO15
          SCK  -> GPIO14
          MOSI -> GPIO13
          MISO -> GPIO12
       (note these are GPIO numbers, not the Arduino Dxx pin names.  Refer
        to your ESP8266 board schematic for the mapping of GPIO to pin.)
      
      Higher density PSRAM (ESP-PSRAM64H/etc.) should work as well, but
      I'm still waiting on my chips so haven't done any testing.  Biggest
      concern is their command set and functionality in DIO mode.  If DIO
      mode isn't supported, then a fallback to SIO is possible.
      
      This PR originated with code from @pvvx's esp8266web server at
      https://github.com/pvvx/esp8266web (licensed in the public domain)
      but doesn't resemble it much any more.  Thanks, @pvvx!
      
      Keep a list of the last 8 lines in RAM (~.5KB of RAM) and use that to
      speed up things like memcpys and other operations where the source and
      destination addresses are inside VM RAM.
      
      A custom set of SPI routines is used in the VM system for speed and code
      size (and because the core cannot be dependent on a library).
      
      Because UMM manages RAM in 8 byte chunks, attempting to manage the
      entire 1M available space on a 1M PSRAM causes the block IDs to
      overflow, crashing things at some point.  Limit the UMM allocation to
      only 256K in this case.  The remaining space can manually be assigned to
      buffers/etc. managed by the application, not malloc()/free().
      8ffe41b7
    • D
      Stream::send() (#6979) · c720c0d9
      david gauchard 提交于
      c720c0d9
    • D
    • E
      BREAKING - Use IRAM_ATTR in place of ICACHE_RAM_ATTR (#7921) · 656a33e6
      Earle F. Philhower, III 提交于
      Update the core to use the define that the ESP32 uses, IRAM_ATTR, for
      placing code in DRAM.
      656a33e6
    • D
      Minor EspSoftwareSerial release 6.11.7, for deprecated ICACHE_RAM_ATTR in... · 6743a659
      Dirk O. Kaar 提交于
      Minor EspSoftwareSerial release 6.11.7, for deprecated ICACHE_RAM_ATTR in upcoming ESP8266 Arduino core 3.0.0. (#7922)
      
      6743a659
    • D
      Merge pull request #6280 from aerlon/wifi_mesh_update_2.2 · 49a09279
      Develo 提交于
      WiFi Mesh Update 2.2
      49a09279
    • D
      Merge branch 'master' into wifi_mesh_update_2.2 · 7fbf620a
      Develo 提交于
      7fbf620a
  5. 14 3月, 2021 1 次提交
  6. 11 3月, 2021 1 次提交
  7. 08 3月, 2021 1 次提交
    • E
      Add I2S class support (#7874) · e99df4fe
      Earle F. Philhower, III 提交于
      Fixes #427
      
      Adds a basic I2S class based off of the Arduino-SAMD core.  The raw
      i2s_xxx functions are still a better  way to use I2S due to their
      flexibility, but this will allow basic Arduino sketches to work.
      e99df4fe
  8. 05 3月, 2021 1 次提交
  9. 04 3月, 2021 1 次提交
  10. 03 3月, 2021 3 次提交
  11. 22 2月, 2021 2 次提交
  12. 20 2月, 2021 2 次提交
  13. 18 2月, 2021 1 次提交
  14. 16 2月, 2021 1 次提交
  15. 14 2月, 2021 2 次提交
  16. 09 2月, 2021 1 次提交
  17. 08 2月, 2021 1 次提交
    • E
      eboot: .RODATA, upstream uzlib, move CRC, save 112 bytes (#7844) · 07b4c09b
      Earle F. Philhower, III 提交于
      RODATA can be copied automatically by the bootrom, so no reason not to
      allow its use for strings and constants in eboot.c
      
      Revert to pfalcon's original uzlib since the single patch to remove
      RODATA is not required.
      
      Rationalize eboot.ld linker script, clean up BSS and init it in code.
      
      Saves 112 bytes of space in the bootloader sector by removing the
      extra code associated with literal loads.
      
      * Move CRC out of bootload sector
      
      We added protection to only erase the bootload sector when flashing an
      image when the new sector != the old sector.  This was intended to
      minimize the chance of bricking (i.e. if there was a powerfail during
      flashing of the boot sector the chip would be dead).
      
      Unfortunately, by placing the CRC inside the eboot sector *every*
      application will have a unique eboot sector (due to the crc/len), so
      this protection doesn't work.
      
      Move the CRC into the first 8 bytes of IROM itself.  This frees up extra
      space in the boot sector and ensures that eboot won't be reflashed
      unless there really is an eboot change.
      07b4c09b
  18. 07 2月, 2021 1 次提交
  19. 04 2月, 2021 1 次提交
  20. 30 1月, 2021 1 次提交