Commit Graph

12104 Commits

Author SHA1 Message Date
Ivan Grokhotkov
02a99e84c8 esp32s2: move trace memory reservation to soc_memory_layout.c 2020-01-24 10:48:38 +01:00
Ivan Grokhotkov
110f3c9ff5 esp32s2: put static .data and .bss directly after .iram.text
This results in a single large heap section instead of two smaller
ones.

Closes IDF-1354
2020-01-24 10:48:38 +01:00
Ivan Grokhotkov
27bff3517f esp32s2: fix "loadable ELF" build
Closes IDF-1346
2020-01-24 10:48:20 +01:00
Ivan Grokhotkov
fd15acb50f esp32s2: bootloader: move iram_loader segment higher
This gives extra 16kB for the application's static .data/.bss
2020-01-24 10:48:20 +01:00
Ivan Grokhotkov
354ce68dce soc: move reserved regions out of memory_layout_utils.c
These definitions have ended up being chip specific. Moving them into
respective soc_memory_layout.c makes the whole picture of memory
regions easier to see, and also makes adding support for new chips
easier.
2020-01-24 10:48:20 +01:00
Ivan Grokhotkov
81f0e7d90f Merge branch 'bugfix/esp32s2_freertos_tls' into 'master'
esp32s2: fix THREADPTR calculation, re-enable FreeRTOS TLS tests

Closes IDF-1239

See merge request espressif/esp-idf!7403
2020-01-24 17:47:43 +08:00
Ivan Grokhotkov
9fafdb7e6d Merge branch 'bugfix/esp32s2_newlib_nano' into 'master'
esp32s2: esp_rom: separate nano formatting functions, fix newlib tests

See merge request espressif/esp-idf!7447
2020-01-24 17:46:54 +08:00
Anton Maklakov
a92a922b51 Merge branch 'bugfix/esp32s2_nostdlib' into 'master'
esp32s2: remove -nostdlib accidentally added

See merge request espressif/esp-idf!7446
2020-01-24 12:25:56 +08:00
Angus Gratton
c9e35ccf41 Merge branch 'bugfix/esp32s2_disable_hw_crypto' into 'master'
mbedtls: temporary disable HW crypto for ESP32-S2

See merge request espressif/esp-idf!7448
2020-01-24 07:43:25 +08:00
Ivan Grokhotkov
6e527fb763 mbedtls: temporary disable HW crypto for ESP32S2
To be re-enabled once HW crypto accelerators support is merged:
IDF-714, IDF-716, IDF-803.
2020-01-23 18:14:10 +01:00
Ivan Grokhotkov
16e63f6a3f esp32s2: esp_rom: separate nano formatting functions, fix newlib tests 2020-01-23 18:07:37 +01:00
Ivan Grokhotkov
cbb6beccd9 ci: add build system tests for bootloader flash mode/freq/size 2020-01-23 17:03:52 +01:00
Ivan Grokhotkov
90af8531d8 esp32s2: remove -nostdlib accidentally added
-nostdlib was removed in 9a2af7a and then accidentally added
in 1c2cc54.

The issue manifested itself as a failure to link some symbols from
libgcc, even though libgcc should implicitly appear at the end of the
linker command line when -nostdlib is not given.
2020-01-23 17:00:31 +01:00
Ivan Grokhotkov
caef7ad9f2 esp32, esp32s2beta: move brownout.c to esp_common 2020-01-23 13:44:19 +01:00
Ivan Grokhotkov
70752baba4 esp32s2: add brownout detector support
1. add brownout detector HAL for esp32 and esp32s2
2. enable brownout reset for esp32 rev. 1 and above
3. add approximate brownout detector levels for esp32s2
2020-01-23 13:44:19 +01:00
Ivan Grokhotkov
09950797cb esptool_py: pass flash mode/frequency/size to elf2image
Otherwise the image gets generated with wrong parameters, and the
binary does not boot unless it has been "fixed" by esptool during the
upload.
2020-01-23 12:19:15 +01:00
Ivan Grokhotkov
46035032cf esp32s2: fix inconsistency between reg and struct headers
test_mux register doesn't exist in RTCCNTL anymore, remove it from
struct header. Also remove adc_ll_vref_output implementation, which
depends on that register.
2020-01-23 11:30:11 +01:00
Ivan Grokhotkov
cbb84e8f5e esp32s2: fix THREADPTR calculation, re-enable FreeRTOS TLS tests
1. Clarify THREADPTR calculation in FreeRTOS code, explaining where
the constant 0x10 offset comes from.

2. On the ESP32-S2, .flash.rodata section had different default
alignment (8 bytes instead of 16), which resulted in different offset
of the TLS sections. Unfortunately I haven’t found a way to query
section alignment from C code, or to use a constant value to define
section alignment in the linker script. The linker scripts are
modified to force a fixed 16 byte alignment for .flash.rodata on the
ESP32 and ESP32-S2beta. Note that the base address of .flash.rodata
was already 16 byte aligned, so this has not changed the actual
memory layout of the application.

Full explanation of the calculation below.

Assume we have the TLS template section base address
(tls_section_vma), the address of a TLS variable in the template
(address), and the final relocation value (offset). The linker
calculates:
offset = address - tls_section_vma + align_up(TCB_SIZE, alignment).

At run time, the TLS section gets copied from _thread_local_start
(in .rodata) to task_thread_local_start. Let’s assume that an address
of a variable in the runtime TLS section is runtime_address.
Access to this address will happen by calculating THREADPTR + offset.
So, by a series of substitutions:

THREADPTR + offset = runtime_address THREADPTR = runtime_address - offset
THREADPTR = runtime_address - (address - tls_section_vma + align_up(TCB_SIZE, alignment)) THREADPTR = (runtime_address - address) + tls_section_vma - align_up(TCB_SIZE, alignment)

The difference between runtime_address and address is same as the
difference between task_thread_local_start and _thread_local_start.
And tls_section_vma is the address of .rodata section, i.e.
_rodata_start. So we arrive to

THREADPTR = task_thread_local_start - _thread_local_start + _rodata_start - align_up(TCB_SIZE, alignment).

The idea with TCB_SIZE being added to the THREADPTR when computing
the relocation was to let the OS save TCB pointer in the TREADPTR
register. The location of the run-time TLS section was assumed to be
immediately after the TCB, aligned to whatever the section alignment
was. However in our case the problem is that the run-time TLS section
is stored not next to the TCB, but at the top of the stack. Plus,
even if it was stored next to the TCB, the size of a FreeRTOS TCB is
not equal to 8 bytes (TCB_SIZE hardcoded in the linker). So we have
to calculate THREADPTR in a slightly obscure way, to compensate for
these differences.

Closes IDF-1239
2020-01-23 11:29:22 +01:00
Angus Gratton
c1ab87b580 Merge branch 'bugfix/fix_broken_example_link' into 'master'
doc:fix icmp initialization and broken example links

Closes IDFGH-2563

See merge request espressif/esp-idf!7402
2020-01-23 14:32:55 +08:00
Angus Gratton
4e4bfb4348 Merge branch 'bugfix/ci_handle_retried_jobs' into 'master'
CI: fix CI fail when have retried build jobs

See merge request espressif/esp-idf!7435
2020-01-23 09:30:07 +08:00
Angus Gratton
d672809080 Merge branch 'refactor/rename_esp32s2beta_to_esp32s2' into 'master'
global: rename esp32s2beta to esp32s2

See merge request espressif/esp-idf!7369
2020-01-23 09:16:30 +08:00
Angus Gratton
fbb5844151 Merge branch 'bugfix/esp_timer_stucks_into_esp_timer_impl_set_alarm' into 'master'
esp_timer/esp32: Fix esp_timer_impl_set_alarm() when CPU and APB freqs are changed

Closes WIFI-1576

See merge request espressif/esp-idf!7303
2020-01-23 09:14:53 +08:00
Mahavir Jain
7be7839690 Merge branch 'nimble/dynamic_buffers' into 'master'
NimBLE: Use dynamic buffers instead of static memory.

See merge request espressif/esp-idf!7337
2020-01-23 00:55:51 +08:00
Hrishikesh Dhayagude
91c8f324a9 NimBLE: Use dynamic buffers instead of static memory.
The NimBLE host buffers that consume a significant amount of memory are
now allocated dynamically.
The advantage is that, the memory can be reclaimed in cases where BLE
is turned off and not required for the current boot cycle
2020-01-23 00:55:51 +08:00
morris
405b0e7f06 esp_rom: splict libgcc and libc outof rom.ld bundle file 2020-01-23 00:27:47 +08:00
KonstantinKondrashov
6061d5d65a esp_timer/esp32: Fix case when alarm_reg > counter_reg but FRC_TIMER_INT_STATUS is not set
Closes: WIFI-1576
Closes: https://github.com/espressif/esp-idf/issues/2954
2020-01-22 14:30:34 +08:00
michael
1f43f33567 sdio: update the host example to support working with a slave without DAT1
The interrupt line (DAT1) is an extra pin comparing to SD memory,
allowing the slave to actively inform the host some events.

It's possible for two ESP32 chips to communicate with each other in
1-bit mode or SPI mode without the DAT1 line by polling the slave's
interrupt registers. But this will increase the CPU load of the host,
and do harm to the response speed to slave events.
2020-01-22 05:34:21 +00:00
morris
e30cd361a8 global: rename esp32s2beta to esp32s2 2020-01-22 12:14:38 +08:00
Michael (XIAO Xufeng)
cff1815177 idf_py: fix the ESPPORT environ variable type issue
Python 2 expect the environ variables are all of type 'str', but
sometimes wrong 'unicode' type is given.

Here we force all variables that are not str to become str.
2020-01-22 12:05:08 +08:00
morris
95743f4ee6 update rtc_sleep_init for esp32s2 2020-01-22 10:19:05 +08:00
He Yin Ling
739affb5b0 ci: add find job id argument job status:
if we retry failed job, we will have 2 jobs with same name in one pipeline. we need to use status to find the retried job instead of failed job.
2020-01-22 10:04:54 +08:00
Angus Gratton
3c44ab4192 Merge branch 'bugfix/idf_tools_pylauncher' into 'master'
idf_tools.py: fix typo in __PYVENV_LAUNCHER__ env variable name

See merge request espressif/esp-idf!7421
2020-01-22 06:42:20 +08:00
Angus Gratton
e787cb1730 Merge branch 'feature/mux_to_spinlock' into 'master'
soc/spinlock:  initial implementation of spinlock refactor

Closes IDF-967

See merge request espressif/esp-idf!6251
2020-01-22 06:20:34 +08:00
Felipe Neves
73592d9bc4 spin_lock: added new spinlock interface and decoupled it from RTOS
spin_lock: cleaned-up port files and removed portmux files

components/soc: decoupled compare and set operations from FreeRTOS

soc/spinlock: filled initial implementation of spinlock refactor

It will decouple the spinlocks into separated components with not depencences of freertos
an similar interface was provided focusing the readabillity and maintenance, also
naming to spinlocks were adopted. On FreeRTOS side the legacy portMUX macros
gained a form of wrapper functions that calls the spinlocks component thus
minimizing the impact on RTOS side.

This feature aims to close IDF-967

soc/spinlock: spinlocks passed on unit test, missing test corner cases

components/compare_set: added better function namings plus minor performance optimization on spinlocks

soc/spinlock: code reordering to remove ISC C90 mix error

freertos/portmacro: gor rid of critical sections multiline macros, placed inline functions instead

soc/spinlock: improved spinlock performance from internal RAM

For cases where the spinlock is executed from IRAM, there is no
need to check where the spinlock object is placed on memory,
removing this checks caused a great improvement on performance.
2020-01-22 06:20:34 +08:00
Ivan Grokhotkov
a7bbc74a20 Merge branch 'bugfix/rom_opi_flash_cpp_guards' into 'master'
rom: add header guards in rom/opi_flash.h

See merge request espressif/esp-idf!7423
2020-01-22 00:13:16 +08:00
Ivan Grokhotkov
cc3df01f8f rom: add header guards in rom/opi_flash.h, fix error in rom/spi_flash.h 2020-01-21 11:58:10 +01:00
Ivan Grokhotkov
9746dbe643 idf_tools.py: fix typo in __PYVENV_LAUNCHER__ env variable name
Fixes the workaround added in 9279b72a6.
2020-01-21 10:48:24 +01:00
Ivan Grokhotkov
2c3e6481bb Merge branch 'feature/ci_check_cpp_guards' into 'master'
ci: add job to check for C++ guards in header files

Closes IDF-288

See merge request espressif/esp-idf!7050
2020-01-21 17:18:23 +08:00
Ivan Grokhotkov
f619a3174b Merge branch 'bugfix/nvs_new_nothrow' into 'master'
NVS: Change all new to new (nothrow)

See merge request espressif/esp-idf!6930
2020-01-21 17:06:19 +08:00
Ivan Grokhotkov
c11f77cb1a Merge branch 'feature/use_underlying_cmake_targets_for_idf_py' into 'master'
CMake: Use underlying flash targets for idf.py

See merge request espressif/esp-idf!7067
2020-01-21 17:05:47 +08:00
Jiang Jiang Jian
95f9db79d2 Merge branch 'feature/lwip_netinet_tcp_pr4637' into 'master'
lw_ip: Add netinet compatibility headers (PR 4637)

Closes IDFGH-2551

See merge request espressif/esp-idf!7408
2020-01-21 15:00:03 +08:00
morris
f2cb6bd4b6 doc: fix broken example links 2020-01-21 12:11:24 +08:00
morris
1c710a1b31 doc: fix incomplete ping session initialization
Thanks @nopnop2002 for reporting this issue.
Closes https://github.com/espressif/esp-idf/issues/4648
2020-01-21 12:07:38 +08:00
Angus Gratton
e0fe136bf9 Merge branch 'bugfix/select_driver_not_installed' into 'master'
VFS: Check in select() if the UART driver is installed or not

Closes IDFGH-2540

See merge request espressif/esp-idf!7331
2020-01-21 11:08:38 +08:00
Angus Gratton
78e219bbe2 Merge branch 'bugfix/eth_int_allocate' into 'master'
PSRAM related fix

Closes IDFGH-2263 and IDFGH-2549

See merge request espressif/esp-idf!7310
2020-01-21 07:31:26 +08:00
Francesco Giancane
e48fe540be include/sys/socket.h: ensure SOMAXCONN symbol is defined
SOMAXCONN is expected to be defined in this header, but for the esp32
port is found in net/if.h from newlib.

Avoid the issue by including the net/if.h header in sys/socket.h so that
compatibility is preserved.

Signed-off-by: Francesco Giancane <francesco.giancane@accenture.com>

Merges https://github.com/espressif/esp-idf/pull/4637
2020-01-21 10:11:33 +11:00
Francesco Giancane
64377b54d1 include/netinet/tcp.h: wrap lwip/tcp.h header for compatibility
Some applications (i.e. Azure IoT SDK) are expecting this header to
exist and to contain the tcp constants and description.

The esp32 did not wrap the lwip/tcp.h header, thus this commit adds a
compatibility layer.

Signed-off-by: Francesco Giancane <francesco.giancane@accenture.com>

Merges https://github.com/espressif/esp-idf/pull/4637
2020-01-21 10:11:29 +11:00
Jiang Jiang Jian
10c426e5ef Merge branch 'bugfix/fix_sniffer_bug_caused_by_mode_switch' into 'master'
FIx sniffer bug caused by mode switch

Closes WIFI-466

See merge request espressif/esp-idf!5846
2020-01-20 21:08:31 +08:00
Jiang Jiang Jian
34e5f664be Merge branch 'bugfix/btdm_hci_timeout' into 'master'
Bugfix/btdm hci timeout

See merge request espressif/esp-idf!7338
2020-01-20 21:03:07 +08:00
baohongde
097777ed66 components/bt: Fix error EIR type in config eir event 2020-01-20 20:46:05 +08:00