Commit Graph

375 Commits

Author SHA1 Message Date
Guillaume Souchere
7fcd964b1d heap: add selective placement of function in IRAM
This commit aims to place in the IRAM section only the functions that
are relevent for performance instead of placing the entire content of
multi_heap.c, mullti_heap_poisoning.c and tlsf.c in the IRAM.
2022-11-24 10:31:14 +01:00
Cao Sen Miao
86aa4df5b5 ESP32-H2: Introduce new target for ESP32H2 2022-11-23 14:38:05 +08:00
Omar Chebib
cd21058097 C/Cxx: unify static assertions with the macro ESP_STATIC_ASSERT
Closes https://github.com/espressif/esp-idf/issues/9938
2022-11-21 16:18:08 +08:00
laokaiyao
8677216576 esp32h2: renaming esp32h2 to esp32h4 2022-11-08 17:05:33 +08:00
Song Ruo Jing
be0fdfa176 soc: Add a soc cap, SOC_CLK_RC_FAST_D256_SUPPORTED, for whether the target has the RC_FAST_D256 clock 2022-11-01 11:23:26 +08:00
Laukik Hase
d0b1b5a8aa
heap: Added note to increase INT_WDT timeout for integrity-check APIs
- When PSRAM is enabled, the heap integrity check APIs
  (`heap_caps_check_integrity` and `heap_caps_check_integrity_all`)
  take more time to execute and keep the interrupts disabled for a
  longer time.
2022-10-30 10:36:01 +05:30
Guillaume Souchere
ce895b87ab Merge branch 'feature/tlsf-dynamic-control-size' into 'master'
heap: Update to the new tlsf implementation of dynamic metadata size

See merge request espressif/esp-idf!20584
2022-10-27 13:54:45 +08:00
Guillaume Souchere
508194be50 heap: Remove size check in multi_heap.c when registering a new heap
The tlsf now checks for size validity when creating a new heap.

The check previously done in multi_heap_register_impl() is no longer
valid since the tlsf_size() is not known at this time (as the metadata
size is linked ot the size of the memory region passed as parameter
when calling tlsf_create_with_pool())

The tlsf_create_with_pool() will return a null pointer if the size
of the memory is not big enough to hold the metadata overhead and
at least a small block.

Update the test according to the changes in TLSF API
2022-10-26 18:15:42 +02:00
Guillaume Souchere
6f11d0f297 heap: Update target and host tests after incorporation of the new TLSF implementation
- update the target and host tests to consider the new TLSF api and the metadata size
  only when the target is not using the rom implementation of the TLSF
2022-10-26 18:15:40 +02:00
Guillaume Souchere
7de6565722 heap: fix comment and return condition in heap_caps_check_add_region_allowed()
(See  cd805a5ab1)
2022-10-26 09:49:43 +02:00
Guillaume Souchere
90ac786cf4 heap: Update the component to incorporate the new TLSF implementation
- remove tlsf_platform.h from esp-idf since the fl_index is now calculated
  based on the size of the requested heap
- update CMakeLists.txt accordingly

* based on the changes made to the TLSF in https://github.com/espressif/esp-idf/pull/7829
* contributes to fix https://github.com/espressif/esp-idf/issues/7822
2022-10-26 09:47:45 +02:00
jiangguangming
932045c980 esp_rom: add rom tlsf function prototype instead of void * 2022-10-19 17:54:50 +08:00
Ivan Grokhotkov
7e2f261a58
freertos, app_trace, heap: use esp_cpu_get_cycle_count to get ccount
portGET_RUN_TIME_COUNTER_VALUE should only be used in the kernel.
2022-10-12 11:20:55 +02:00
Guillaume Souchere
cd805a5ab1 heap: Fix memory boundary condition checks when adding new region
Previously, condition_4 was making impossible the valid scenario
start > heap_start && end == heap_end.

Now, the end == heap_end and start == heap_start case is handled
separately allowing the case start > heap_start && ned == heap_end
to be considered a valid scenario
2022-10-07 13:22:30 +02:00
Guillaume Souchere
2b5a844640 heap: fix the boundary checks when adding a new region 2022-10-05 15:08:21 +02:00
Guillaume Souchere
2cce5e98b1 heap: add dynamic poisoning threshold in pytest env to allow test with known memory leak to pass 2022-10-05 15:07:37 +02:00
Guillaume Souchere
a29627f59d heap: fix the size of buffers in ignored tests
the ignored tests are updated with the minimum required buffer size to create
a new heap using the tlsf heap callocator.
2022-10-05 15:07:06 +02:00
wuzhenghui
357490267a heap: update esp32c6 memory layout 2022-09-29 11:13:06 +08:00
Marius Vikhammer
1327a82b65 heap: fix random alloc test timing out in CI 2022-09-27 16:51:54 +08:00
wuzhenghui
4a86a6a258 esp32c6: add heap support 2022-09-26 20:32:13 +08:00
Guillaume Souchere
bf18a05a5f unit-tests: Move the leak related tests from the heap component to test_utils 2022-09-23 09:49:09 +02:00
Guillaume Souchere
82c98c7f48 heap: Add test_apps configs 2022-09-23 09:49:09 +02:00
Guillaume Souchere
405c26da6d heap: migrate unit tests to pytest 2022-09-23 09:49:07 +02:00
Zim Kalinowski
889b5fbea3 Merge branch 'bugfix/fix_tlsf_patch_esp32c2' into 'master'
TLSF: fix the patch for tlsf_check function in ROM

Closes IDFCI-1442 and IDFCI-1441

See merge request espressif/esp-idf!19839
2022-09-13 18:32:40 +08:00
Marius Vikhammer
e1f27cf31b heap: remove misleading info about malloc being equivalent to heap_caps_malloc(p, MALLOC_CAP_8BIT)
The actual memory allocated for malloc() depends on a lot of factors, see heap_caps_malloc_default()

Closes https://github.com/espressif/esp-idf/issues/7659
2022-09-01 11:39:34 +08:00
Omar Chebib
0b5ab940ae TLSF: fix the patch for tlsf_check function in ROM
tlsf_check in the patch was not called because the the TLSF functions
table in ROM was still pointing to the ROM implementation.
2022-08-31 13:30:10 +08:00
Guillaume Souchere
4571e19387 heap: Add test to check that the corruption of free memory is detected
This commit extends the heap test set by adding a test to check corruption
detection in free memory block.

For each byte of the free block memory, the test changes the value of the byte,
call multi_heap_check(), make sure that the function returns 'corruption detected'
only when comprehensive poisoning is set, restore the good value of the byte, calls
multi_heap_check() again and make sure that it returns 'OK'.
2022-08-26 08:25:39 +02:00
Guillaume Souchere
b9abad7a89 esp-rom: create a patch of tlsf_check() for target(s) supporting ROM implementation of TLSF
The tlsf implementation in the ROM does not provide a mechanism
to register a callback to be called in by tlsf_check().

This commit is creating a patch of the tlsf implementation to provide
a definition of the function allowing to register the callback called
in tlsf_check() and add the call of this callback in tlsf_check().

This patch is only compiled for target(s) with ESP_ROM_HAS_HEAP_TLSF
set and ESP_ROM_TLSF_CHECK_PATCH set. For all the other configurations
the environment remains unchanged by those modifications.
2022-08-26 08:25:38 +02:00
Guillaume Souchere
f051da86e2 heap: Provide definition of the tlsf_check_hook() declared in the tlsf submodule
Add the definition of tlsf_check_hook() in multi_heap if MULTI_HEAP_POISONING
is set. This definition calls the multi_heap_internal_check_block_poisoning()
to check the memory of a free block for corruption. If the light poisoinng is
set this function returns true. If the comprehensive poisoning is set, this
function will check that all byte of memory in the memory chunk passed as parameter
are set to the right FILL pattern.
2022-08-26 08:20:50 +02:00
songruojing
304a8f142d esp32c6: introduce the target
Add esp32c6 target to tools and Kconfig
Create directories and files that are essential for `idf.py --preview set-target esp32c6`
2022-08-19 11:13:02 +08:00
Omar Chebib
d622bcfd46 Merge branch 'contrib/github_pr_9517' into 'master'
fix malloc(0) and heap_caps_alloc_failed() (GitHub PR)

Closes IDFGH-8007

See merge request espressif/esp-idf!19421
2022-08-09 15:49:27 +08:00
Omar Chebib
c6ddf7288c heap: add a unit test for malloc(0) and slightly optimize heap_caps_malloc_prefer 2022-08-09 10:30:36 +08:00
Guillaume Souchere
16c2cb3f1b Merge branch 'feature/replace-heap-tlsf-with-submodule' into 'master'
heap: Remove TLSF related files and replace them with the TLSF submodule

Closes IDF-4967

See merge request espressif/esp-idf!19220
2022-08-08 12:36:02 +08:00
tgotic
ee4d15d02f fix malloc(0) and heap_caps_alloc_failed()
Don't call heap_caps_alloc_failed() for malloc(0) and calloc(0), because it is not an error.
Improve handling of malloc(0) and calloc(0).

Merges https://github.com/espressif/esp-idf/pull/9517
2022-08-08 02:55:50 +00:00
Wu Zheng Hui
4c3322ed60 Merge branch 'bugfix/fix_esp32s3_cache_data_memory_wrong_attr' into 'master'
bugfix: esp32s3 DCache data memory is  retention dma inaccessible

Closes IDFCI-1409, IDFCI-1410, IDFCI-1411, IDFCI-1412, and IDFCI-1413

See merge request espressif/esp-idf!19365
2022-08-05 10:42:52 +08:00
Ivan Grokhotkov
401c10ecfb build system: re-add -Wno-format as private flag for some components 2022-08-03 16:42:47 +04:00
wuzhenghui
65f0b1a821 bugfix: DCache data memory is dma accessible but not retention dma accessible 2022-08-03 20:07:39 +08:00
Guillaume Souchere
2a29cdcb71 heap: Move the declaration of tlsf_poison_fill_pfunc_set() in esp_rom component
- The declaration is moved to esp_rom/include/esp32c2/rom/tlsf.h.
- multi_heap_poisoning.h now includes rom/tlsf.h instead of declaring
tlsf_poison_fill_pfunc_set().

Note: If more targets will support an implementation of the TLSF in ROM,
esp_rom will be extended with new headers in the respective target directories
but multi_heap_poisoning.h will remain unchanged.
2022-08-03 08:28:10 +02:00
Guillaume Souchere
d98bfe1b42 heap: Fix compilation error when CONFIG_SPIRAM is set on esp32s3 target
When CONFIG_SPIRAM is set, the TLSF_MAX_POOL_SIZE is set to SOC_EXTRAM_DATA_SIZE
which caused the TLSF_MAX_POOL_SIZE to be bigger than 16MB.

This commit fixes the issue by adding an extra else if case to cover this configuration.
2022-08-03 08:28:10 +02:00
Guillaume Souchere
594e58e65a heap: Fix compilation errors when CONFIG_HEAP_TLSF_USE_ROM_IMPL is set
- include headers from the tlsf submodule only when CONFIG_HEAP_TLSF_USE_ROM_IMPL is not set
- remove usage of the tlsf_t type in the multi_heap.c
- add missing declaration of tlsf_poison_fill_pfunc_set() in multi_heap_poisoning.c
- define headers from tlsf submodule as private
- update the linker file in the heap component to the new naming of the tlsf file
- update the copyright docuementation to reference the submodule in github (https://github.com/espressif/tlsf)
- remove deleted files from the check_copyright_ignore.txt
2022-08-03 08:28:01 +02:00
Guillaume Souchere
3737bf8322 heap: Remove TLSF related files and replace them with the tlsf submodule
As the tlsf implementation is a fork from https://github.com/mattconte/tlsf,
the sources are moved to a separate repository and used as a submodule in the esp-idf instead.

In this commit:
- Removing TLSF related files and using tlsf submodule instead.

- Adding components/heap/tlsf_platform.h header gathering all IDF specifics.

- The multi_heap_poisoning.c provides the declaration of the
function block_absorb_post_hook() definied weak in the TLSF repository.

- The tlsf_platform.h includes the tlsf_common.h file after the definition
of FL_INDEX_MAX_PLATFORM macro to make sure that this macro will be available
in tlsf_common.h without having to include tlaf_platform.h from IDF in the
tlsf_common.h header from the TLSF repository.

- Add missing include from tlsf_block_functions.h in the multi_heap.c file.
Change related to the changes made in TLSF repository (tlsf_block_functions.h
no longer included in tlsf.h)
2022-08-02 12:55:31 +02:00
wuzhenghui
5e8ba9cea8 use enum and designated initializers in soc_memory_type define 2022-07-29 17:07:41 +08:00
wuzhenghui
70eabb5492 ci: fix ci 2022-07-29 17:07:41 +08:00
wuzhenghui
7cb9304b65 Clean IRAM and DRAM address space conversion macros 2022-07-29 17:07:39 +08:00
wuzhenghui
65aea5d177 stack/dram is also IRAM0 accessible 2022-07-29 10:51:48 +08:00
wuzhenghui
21a4eda4d4 Use the entire sharedbuffer space as the heap of the D/IRAM attribute 2022-07-29 10:51:47 +08:00
Mahavir Jain
c0e096d5b2 Merge branch 'contrib/github_pr_9446' into 'master'
Add missing comma (GitHub PR)

Closes IDFGH-7928

See merge request espressif/esp-idf!19271
2022-07-28 12:36:30 +08:00
FanhuaCloud
a1c04ad6fd
Add missing comma
Add missing comma when CONFIG_ESP32S3_DATA_CACHE_16KB is enabled
2022-07-27 17:12:17 +08:00
Darian
c8ee369a7c Merge branch 'feature/deprecate-old-cpu-api' into 'master'
HAL: Deprecate old CPU/SoC/Interrupt Controller HAL API

Closes IDF-4919 and IDF-5032

See merge request espressif/esp-idf!18987
2022-07-23 00:37:33 +08:00
morris
c4e84751a5 driver: fix public header exceptions for driver 2022-07-22 00:12:36 +00:00
Guillaume Souchere
6005cc9163 hal: Deprecate interrupt_controller_hal.h, cpu_hal.h and cpu_ll.h interfaces
This commit marks all functions in interrupt_controller_hal.h, cpu_ll.h and cpu_hal.h as deprecated.
Users should use functions from esp_cpu.h instead.
2022-07-22 00:06:06 +08:00
Omar Chebib
a0ca353cda Heap: heap_caps_*_prefer functions now properly call alloc_failed callback
heap_caps_*_prefer functions will now only call heaps_caps_alloc_failed
callback if all attempts to allocation memory fail (and not after each attempt
anymore).

* Closes https://github.com/espressif/esp-idf/issues/9086
2022-07-05 05:57:04 +00:00
Cao Sen Miao
a690a87829 spi_flash: Remove legacy spi_flash drivers 2022-07-01 11:01:34 +08:00
Michael (XIAO Xufeng)
6a8aed12ee ci: partially enable ut tests for esp32c2
Disabled test cases are tracked in:

 IDF-4465, IDF-5045, IDF-5057, IDF-5058, IDF-5059, IDF-5060, IDF-5061, IDF-5131

- test_fatfs: IDF-5136

- test_pm: IDF-5053

- test_cache_mmu: IDF-5138

- test_partitions: IDF-5137

- test_vfs: IDF-5139

- test_freertos: IDF-5140

- test_wpa_supplicant: IDF-5046

- test_mbedtls: IDF-5141

- test_pthread: IDF-5142

- test_protocomm: IDF-5143

- test_lightsleep: IDF-5053

- test_taskwdt: IDF-5055

- test_tcp_transport: IDF-5144

- test_app_update: IDF-5145

- test_timer: IDF-5052

- test_spi: IDF-5146

- test_rtc_clk: IDF-5060

- test_heap: IDF-5167

ci: fixed issues for tests of libgcc, ets_timer, newlib

test_pm: support on C2
2022-06-02 14:23:35 +08:00
morris
068adfba70 heap: use ROM implementation for heap tlsf on esp32c2 2022-05-12 05:18:57 +00:00
wuzhenghui
d8de64bff8 Kconfig: add depends 2022-05-06 15:26:43 +08:00
jiangguangming
6ec373daf5 heap_tlsf: use tlsf IMPL in ESP32C2 ROM 2022-05-05 17:41:11 +08:00
morris
4280164be4 rmt: add more clock source caps 2022-04-21 13:59:47 +00:00
Armando (Dou Yiwen)
5bb59b00e7 Merge branch 'feature/support_bss_on_psram' into 'master'
psram: support .bss on psram on esp32s3

Closes IDF-4814, IDF-4396, IDFGH-7148, and IDFGH-7153

See merge request espressif/esp-idf!17557
2022-04-20 11:16:28 +08:00
Armando
f8249550f8 psram: support .bss on psram on esp32s3 2022-04-19 19:48:00 +08:00
Omar Chebib
e7cb672624 Heap: fix typos in test and component 2022-04-11 11:36:52 +08:00
Armando
c4bcf1117c esp_hw_support: move soc_memory_types.h helper functions into esp_hw_support 2022-04-08 11:46:10 +08:00
wuzhenghui
4652f77a7c esp32h2beta2:update rom layout table 2022-03-29 14:13:06 +08:00
Mahavir Jain
98b8ca6475
heap: add test case for region overlap check condition 2022-03-25 09:36:48 +05:30
Mahavir Jain
f13e25d156
heap: Fix regression in heap_caps_add_region API related to address range checks
Regression was introduced in 32408b718f, which disallowed
addition of heap region with following condition:

`new_start < start && new_end == start`

This caused issues in Bluetooth APIs `esp_bt_mem_release` or `esp_bt_controller_mem_release`.

This commit fixes the problem and also adds API documentation for supported memory address
ranges in heap add region APIs.
2022-03-25 09:36:48 +05:30
Anton Maklakov
118d39c8fe Merge branch 'bugfix/remove-IRAM_ATTR-from-decls' into 'master'
Remove IRAM_ATTR from any function declarations

Closes GCC-223

See merge request espressif/esp-idf!17440
2022-03-23 11:49:22 +08:00
Armando
32408b718f heap: fix wrong memory region check
A memory region starts from REGION_START and ends at
(REGION_START+SIZE-1).

Prior to this change, the check assumes a to-be-added region starting from REGION_START is invalid. Let's take an easy example:

A memory region:  0x1000~0x10ff
new added region: 0x1000~0x1020

This will be valid.

Valid conditions and invalid conditions are illustrated in the code comment
2022-03-22 18:51:40 +08:00
Anton Maklakov
68e5d9d585 Remove IRAM_ATTR from any function declarations
IRAM_ATTR expands to a unique section attribute. Applying it to both
declaration and definition results in a section conflict.
2022-03-22 09:58:50 +00:00
Marius Vikhammer
934a3951b8 Merge branch 'feature/s2_s3_support_ext_mem_stack' into 'master'
soc: support placing task stacks in external memory for S2 and S3

Closes IDF-2797 and IDF-1805

See merge request espressif/esp-idf!16186
2022-03-09 11:57:31 +08:00
Omar Chebib
4ce4c5a68a Heap: fix free bytes calculation for TLSF heap
* Closes https://github.com/espressif/esp-idf/issues/8270
2022-03-08 11:42:23 +08:00
Marius Vikhammer
374712921a CI: add configs for running S2, S3 unit tests with PSRAM
Fixed various minor failures detected with these configs.
2022-03-04 15:29:17 +08:00
jingli
6c25dd4ec1 fix param passed to assert_valid_block, should be block not ptr 2022-02-24 13:50:16 +08:00
morris
ef00bd59dc esp_rom: extract int matrix route and cpu ticks getter 2022-02-09 13:52:20 +08:00
Kevin (Lao Kaiyao)
bf8d4d55d0 Merge branch 'refactor/rename_esp8684_to_esp32c2' into 'master'
esp8684: rename esp8684 to esp32c2

Closes IDF-4530

See merge request espressif/esp-idf!16745
2022-01-19 09:08:58 +00:00
Wang Qi Xiang
41640e2e03 heap_init: Adjust the stack/DRAM region size for ESP8684 2022-01-19 08:57:54 +00:00
laokaiyao
cf049e15ed esp8684: rename target to esp32c2 2022-01-19 11:08:57 +08:00
morris
869bed1bb5 soc: don't expose unstable soc header files in public api 2022-01-06 23:10:22 +08:00
Jing Li
a0e794b2ca heap: adjust the order of RTC memory heap caps and regions 2021-12-29 08:49:42 +00:00
Omar Chebib
95d0514c57 Heap: Add a target test to check that TLFS allocates the requested size 2021-12-20 11:10:16 +08:00
Omar Chebib
9516fd09c2 Heap: Fix a possible bug in the TLSF allocator
Fix a bug that could return a chunk of memory smaller than requested,
easily leading to a memory corruption, when the required memory alignment
passed to the allocator is 4.
2021-12-20 10:57:43 +08:00
Sudeep Mohanty
722a6b7cf4 docs: update programming guide for esp32s3 chip independent system chapters
This commit updates the chip independent system chapters of the
programming guide for esp32s3.

Signed-off-by: Sudeep Mohanty <sudeep.mohanty@espressif.com>
2021-11-23 12:48:10 +05:30
Darian Leung
9b3796d2f1 freertos: Add portTRY_ENTRY_CRITICAL() and deprecate legacy spinlock fucntions
Add TRY_ENTRY_CRITICAL() API to all for timeouts when entering critical sections.
The following port API were added:
- portTRY_ENTER_CRITICAL()
- portTRY_ENTER_CRITICAL_ISR()
- portTRY_ENTER_CRITICAL_SAFE()

Deprecated legacy spinlock API in favor of spinlock.h. The following API were deprecated:
- vPortCPUInitializeMutex()
- vPortCPUAcquireMutex()
- vPortCPUAcquireMutexTimeout()
- vPortCPUReleaseMutex()

Other Changes:
- Added portMUX_INITIALIZE() to replace vPortCPUInitializeMutex()
- The assembly of the critical section functions ends up being about 50 instructions longer,
  thus the spinlock test pass threshold had to be increased to account for the extra runtime.

Closes https://github.com/espressif/esp-idf/issues/5301
2021-11-22 13:28:39 +08:00
Roland Dobai
766aa57084 Build & config: Remove leftover files from the unsupported "make" build system 2021-11-11 15:32:36 +01:00
Cao Sen Miao
a9f0a3531e ESP8684: add driver esp_pm heap support 2021-11-06 17:33:44 +08:00
wuzhenghui
ca1c4114bc heap: update esp32&s2&c3&h2 soc caps 2021-11-04 10:40:57 +08:00
Zim Kalinowski
13ab2cd9f9 Merge branch 'bugfix/spiram_abort_allocation_failure' into 'master'
SPIRAM: 'Abort on allocation failure' should not trigger when there is available SPI ram

Closes IDFGH-5870

See merge request espressif/esp-idf!15454
2021-11-02 05:36:18 +00:00
Omar Chebib
96391ef62b SPIRAM: 'Abort on allocation failure' should not trigger when there is available SPI ram 2021-11-02 05:36:18 +00:00
gaoxiaojie
0028e2c23c heap: fix multi_heap_get_info_impl 2021-11-01 16:08:07 +00:00
Alexey Gerenkov
111ba5bbe6 trax: Adds ESP32-S3 support 2021-10-22 23:36:28 +03:00
Alexey Gerenkov
5911eb3f3e apptrace: Adds ESP32-S3 support 2021-10-22 23:24:00 +03:00
Li Shuai
e8188e5d8f ci: replacing old header with new SPDX header style 2021-10-20 11:36:23 +08:00
Li Shuai
44da7d27ef heap: add a new heap caps attribute for RTC fast memory 2021-10-20 11:36:22 +08:00
Li Shuai
9298db641e deep sleep: fix some rtc fast memory definition errors in esp32s3 2021-10-19 21:47:27 +08:00
gaoxiaojie
191a494e08 support dcache 64Byte and 16k 2021-09-02 02:27:40 +08:00
Michael (XIAO Xufeng)
064f12cb90 idf_size.py: fixed diram counted twice issue, and improve display
Currently static RAM usage are listed under corresponding physical
memory.

ld: fix linker script for C3 and S3
2021-08-11 17:51:50 +02:00
Omar Chebib
a7b6ec85b8 Merge branch 'feature/move_memory_layout_to_heap' into 'master'
G0: Memory layouts are now part of heap components

Closes IDF-1264

See merge request espressif/esp-idf!14028
2021-07-19 06:23:19 +00:00
Omar Chebib
c4f57af6c9 G0: Memory layouts are now part of heap components 2021-07-15 11:38:23 +10:00
Mahavir Jain
9ac9b69087 heap: use hal specific API to get cpu cycles count
This fixes compilation issue of heap tracing feature for RISC-V
architecture.
2021-06-22 14:14:10 +08:00
Angus Gratton
d6f4d99d93 core system: Fix warnings in compilation when assertions are disabled
Adds a CI config for hello world that sets this, to catch future regressions
2021-03-03 10:26:57 +11:00
Omar Chebib
c4dc3acba9 heap: add light poisoning configuration to the tests.
Relates to IDF-2653
2021-02-01 11:58:42 +08:00
Omar Chebib
d902b4e7db heap: fix unaligned memory bug when poisoning is enabled.
Poisoned memory is now aligned as requested by the user.
Closes IDF-2653
2021-02-01 11:58:42 +08:00
Martin Vychodil
69096ddce5 Security: ESP32C3 memory protection feature (IRAM0/DRAM0)
Software support for PMS module.
Allows controlled memory access to IRAM (R/W/X) and DRAM0 (R/W)
On/locked by default, configurable in Kconfig (esp_system)

Closes https://jira.espressif.com:8443/browse/IDF-2092
2021-01-27 08:44:03 +01:00
Renz Bagaporo
d1c800fbbb components: fix ldgen check errors 2021-01-19 11:17:18 +08:00
jiangguangming
47f469b238 heap: support aligned_alloc for retention memory on ESP32-C3 2021-01-13 14:41:22 +08:00
morris
753a929525 global: fix sign-compare warnings 2021-01-12 14:05:08 +08:00
Marius Vikhammer
9c8e4fd4c5 C3: build and run unit tests
Enable building and running of unit tests in CI for C3 as well as fix
related compile errors

Also enables building of C3 test apps
2021-01-11 11:34:37 +08:00
Felipe Neves
89d461df2a heap: increase the sl to reduce the fragmentation to acceptable level. 2020-12-17 12:52:56 -03:00
Angus Gratton
5228d9f9ce esp32c3: Apply one-liner/small changes for ESP32-C3 2020-12-01 10:58:50 +11:00
Angus Gratton
935e4b4d62 Merge branch 'feature/riscv_arch' into 'master'
Add RISC-V support

Closes IDF-2359

See merge request espressif/esp-idf!11140
2020-11-13 07:50:31 +08:00
Angus Gratton
420aef1ffe Updates for riscv support
* Target components pull in xtensa component directly
* Use CPU HAL where applicable
* Remove unnecessary xtensa headers
* Compilation changes necessary to support non-xtensa gcc types (ie int32_t/uint32_t is no
  longer signed/unsigned int).

Changes come from internal branch commit a6723fc
2020-11-13 07:49:11 +11:00
Felipe Neves
35ef4ffa99 heap: add tlsf config specific to the host test 2020-11-12 11:07:46 +11:00
Felipe Neves
60f79705a3 heap: tune the tlsf control structure to reduce per-pool overhead 2020-11-12 11:06:29 +11:00
Angus Gratton
66fb5a29bb Whitespace: Automated whitespace fixes (large commit)
Apply the pre-commit hook whitespace fixes to all files in the repo.

(Line endings, blank lines at end of file, trailing whitespace)
2020-11-11 07:36:35 +00:00
Michael (XIAO Xufeng)
1966f00f0b soc: updates caps usage
We should define caps as 1 if true. When use the caps macros, #if and
 #if ! should be used instead of #ifdef/#ifndef.
2020-10-17 16:10:17 +08:00
Angus Gratton
bf85348034 tlsf: Enable asserts 2020-10-14 16:11:49 +11:00
Felipe Neves
3057b76a7e tests: re-add all disabled tests and all disabled configurations 2020-10-14 16:11:49 +11:00
Felipe Neves
f3783ba258 app_trace/sysview: fixed freertos tracing calling plus sync apptrace component with the master branch version
docs: remove reference to backported features in freertos 10 api-reference.
2020-10-13 23:52:03 +00:00
Felipe Neves
bd9b921713 heap_tlsf: added implementation of TLSF allocator
heap: ported tlsf allocator into multi heap

heap_host_tests: added tlsf allocator into host test

heap_host_test: update freebytes after using free

heap_tests: tlsf now passing on host tests without poisoning

multi_heap: added support for memalign using tlsf implementation

heap_caps: removed heap_caps_aligned_free

heap/test: fixed broken aligned alloc test build

heap: added poisoning pattern when blocks are being merged

heap/tests: added timing tests for memory allocation

heap: reduced tlsf structure overhead

heap/tlsf: made all short functions inside of tlsf  module as inline to improve timings

heap: moved tlsf heap routines outside of flash memory

newlib: linked multiheap memalign with newlib memalign function

heap: moved block member functions to a separate file so multi_heap can use the functions

heap/test: improved the tlsf timing test

heap/test: added memalign on aligned alloc tests

heap: moved tlsf configuration constants to a separated file

heap: added random allocations test with timings

heap: modified the calculation of heap free bytes

heap: make aligned free true deprecated functions and update their documentation

heap: add extra assert after successive mallocs on small allocation host test

heap: remove legacy aligned alloc implementation.

performance: added malloc and free time performance default values
2020-10-13 23:52:03 +00:00
Jakob Hasse
20c068ef3b cmock: added cmock as component
* changing dependencies from unity->cmock
* added component.mk and Makefile.projbuild
* ignore test dir in gen_esp_err_to_name.py
* added some brief introduction of CMock in IDF
2020-09-02 16:38:37 +08:00
morris
2917651478 esp_rom: extract common ets apis into esp_rom_sys.h 2020-07-27 15:27:01 +08:00
Felipe Neves
6f5e43e26a heap: added alloc failed hook and configuration options
heap/test: added alloc failed hook tests

docs: added alloc failed hook documentation

heap: add function to register allocation failed hook

docs: allocation failed hook docs improvements
2020-05-04 10:58:38 -03:00
Angus Gratton
9300615a13 Merge branch 'bugfix/heap_psram_fill' into 'master'
heap: Only fill new heaps with FREE_FILL_PATTERN if Comprehensive poisoning is on

See merge request espressif/esp-idf!8210
2020-04-27 14:20:41 +08:00
Martin Vychodil
7491ea677a esp32s2: IRAM/DRAM memory protection
* new mem_prot API
* mem_prot on & locked by default (see Kconfig)
* feature activated in start_cpu0_default()

JIRA IDF-1355
2020-04-21 15:10:58 +02:00
Angus Gratton
100578a9e9 heap: Only fill new heaps with FREE_FILL_PATTERN if Comprehensive poisoning is on
Significantly speeds up heap initialization at startup when default "Light" heap
poisoning is enabled.

Tip via reddit user LinkeSeitentasche https://www.reddit.com/r/esp32/comments/fnj51a/a_guide_to_improving_esp32_boot_speed/
2020-04-15 07:16:08 +00:00
Ivan Grokhotkov
e94288da31 global: use '/usr/bin/env bash' instead of '/usr/bin/bash' in shebangs
Using the method from @cemeyer
(https://github.com/espressif/esp-idf/pull/3166):

find . -name \*.sh -exec sed -i "" -e 's|^#!.*bin/bash|#!/usr/bin/env bash|' {} +

Closes https://github.com/espressif/esp-idf/pull/3166.
2020-04-03 01:10:02 +02:00
Angus Gratton
dd8d1deacb Merge branch 'bugfix/malloc_zero_return_null' into 'master'
bugfix/multi_heap: fix malloc(0) returning valid pointer in some poisoning configurations

Closes IDF-1482

See merge request espressif/esp-idf!8012
2020-03-26 16:19:39 +08:00
Renz Bagaporo
3d0967a58a test: declare requirements and include dirs private 2020-03-23 10:58:50 +08:00
Felipe Neves
481379f14d multi_heap: ensure that malloc(0) return NULL pointer in any poisoning configuration 2020-03-20 14:33:49 +00:00
Felipe Neves
d495f175d5 heap: pushed down all the aligned_alloc / free implementation 2020-03-05 11:02:19 -03:00
Felipe Neves
98e561b79a heap: added aligned alloc implementation on multi_heap layer 2020-02-28 13:17:34 -03:00
Mahavir Jain
5f897fd33c Merge branch 'feat/secure_boot_v2_v41' into 'master'
feat/secure_boot_v2: Adding secure boot v2 support to ESP32-ECO3

Closes IDF-799

See merge request espressif/esp-idf!6778
2020-02-27 18:54:08 +08:00
Angus Gratton
d40c69375c bootloader: Add fault injection resistance to Secure Boot bootloader verification
Goal is that multiple faults would be required to bypass a boot-time signature check.

- Also strengthens some address range checks for safe app memory addresses
- Change pre-enable logic to also check the bootloader signature before enabling SBV2 on ESP32

Add some additional checks for invalid sections:

- Sections only partially in DRAM or IRAM are invalid
- If a section is in D/IRAM, allow the possibility only some is in D/IRAM
- Only pass sections that are entirely in the same type of RTC memory region
2020-02-27 14:37:19 +05:30
Sachin Parekh
301dacfb33 Exception handlers for LoadStoreError and LoadStoreAlignmentError
Configurable option to use IRAM as byte accessible memory (in single core mode) using
load-store (non-word aligned and non-word size IRAM access specific) exception handlers.
This allows to use IRAM for use-cases where certain performance penalty
(upto 170 cpu cycles per load or store operation) is acceptable. Additional configuration
option has been provided to redirect mbedTLS specific in-out content length buffers to
IRAM (in single core mode), allows to save 20KB per TLS connection.
2020-02-26 20:21:59 +08:00
morris
e30cd361a8 global: rename esp32s2beta to esp32s2 2020-01-22 12:14:38 +08:00
Felipe Neves
6a307ee70f heap: removed ptr check in diram area since aligned allocator does not support data allocated from IRAM 2020-01-10 10:15:32 -03:00
Felipe Neves
0d8a5ebec7 heap: added aligned calloc function plus tests 2020-01-10 10:05:28 -03:00
Felipe Neves
45766daa4f test_multi_heap_host/test_multi_heap: fix undefined reference error when testing aligned_alloc with no heap poisoning 2020-01-10 10:05:28 -03:00
Felipe Neves
a2db437c46 heap/heap_caps: Added tests for align allocation on both internal and external ram 2020-01-10 10:05:28 -03:00
Felipe Neves
7fbf4c74d7 heap/heap_caps: added initial, top level heap_caps_aligned_alloc and heap_caps_aligned_free 2020-01-10 10:05:27 -03:00
Felipe Neves
f31b8a8ab8 heap/multi_heap_poisoning: aligned alloc now working togheter with heap poisining code 2020-01-10 10:05:27 -03:00
Felipe Neves
8bd09429d3 heap/test_multi_heap_host: added initial tests for heap aligned alloc 2020-01-10 10:05:27 -03:00
Felipe Neves
d26ddaa644 heap/multi_heap: added initial implementation of aligned alloc function 2020-01-10 10:05:27 -03:00
michael
4220752aed ut: Move tests back from "esp32" subfolder
DISABLED_FOR_TARGETS macros are used

Partly revert "ci: disable unavailable tests for esp32s2beta"

This partly reverts commit 76a3a5fb48.

Partly revert "ci: disable UTs for esp32s2beta without runners"

This partly reverts commit eb158e9a22.

Partly revert "fix unit test and examples for s2beta"

This partly reverts commit 9baa7826be.

Partly revert "efuse: Add support for esp32s2beta"

This partly reverts commit db84ba868c.
2020-01-06 17:13:53 +08:00
Ivan Grokhotkov
52f8aa2adb Merge branch 'feature/heap_non_os_build' into 'master'
heap: make compatible with non-OS builds, remove target dependence

Closes IDF-1236

See merge request espressif/esp-idf!7051
2020-01-03 17:12:51 +08:00
Ivan Grokhotkov
b4aba189ab heap: recognize 0x40000000 as an address terminating the backtrace
On Xtensa, backtrace can not recover the two most significant bits of
the address, as the window call size is encoded in these bits.
Because of this, __builtin_return_address modifies these MSBs to
match those of the callee, "fixing" the address. An unfortunate side
effect is that the zero return address, which usually terminates the
backtrace, gets converted to 0x40000000. While there is a valid
instruction at this address, its occurrence in the backtrace is
highly unlikely: this is the first instruction of WindowOverflow4
vector, and IDF apps switch VECBASE to an IRAM location very early at
startup.
2020-01-02 18:42:46 +01:00
Ivan Grokhotkov
3285ed116d heap: make compatible with non-OS builds, remove target dependence 2019-12-27 12:40:06 +01:00
Felipe Neves
8795b2681c heap: added test case for realloc to verify if successive realloc in IRAM still ends there. 2019-12-20 13:48:09 -03:00
Felipe Neves
4909fdfe02 heap_caps: small fixes on comments plus cleaning 2019-12-20 13:35:56 -03:00
Felipe Neves
31145f38fa heap_caps: added special case for realloc when previous area is an diram_iram ptr, this will force a malloc/copy/free 2019-12-20 13:35:56 -03:00
Felipe Neves
ce9f84fba9 heap_caps: enable check of pointer on diram_iram for both S2 and non-S2 platform 2019-12-20 13:35:56 -03:00