Commit Graph
100 Commits
Author SHA1 Message Date
Guillaume Souchere ce4e689be0 fix(system): fixed warnings related to ununsed var in spinlock.h 2024-09-12 08:34:44 +02:00
Guillaume Souchere 2a24cc206e fix(console): USB Serial JTAG freezes when input received before init
When data was sent through USB Serial JTAG before the
driver was installed, the bus was malfunctioning. This
was because the interrupt bit for data reception was cleared
regardless of whether data was received or not. Consequently,
usb_serial_jtag_isr_handler_default was not triggered and the
data was never read causing the bus to malfunction.

This commit is modifying usb_serial_jtag_driver_install to
prevent clearing USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT and
USB_SERIAL_JTAG_INTR_SERIAL_IN_EMPTY thus allowing the callback
usb_serial_jtag_isr_handler_default to trigger for possible data
exchanged prior to the call to usb_serial_jtag_driver_install.

This commit also modified the while logic in linenoiseProbe to
discard any data that doesn't match the expected chaaracter sequences
to prevent random input from interfering with evaluating whether the
terminal supports escape sequences or not.

See https://github.com/espressif/esp-idf/issues/13940
2024-07-15 10:17:00 +02:00
Guillaume Souchere 32c6ee8532 change(heap): Remove todo of closed ticket in memory_layout.c files
Leftover closed ticket removed from memory_layout.c on
the following targets:
- esp32c5
- esp32c6
- esp32h2
2024-06-14 08:20:02 +02:00
Guillaume Souchere 2ac0fc1f6a change(heap): Update soc_memory_regions on esp32c5
The array of memory regions is simplyfied by using the
macro defined in soc.h (for beta3 and mp respectively).
2024-06-14 08:20:02 +02:00
Guillaume Souchere 79b7e2cd97 fix(soc): Fix ROM stack start for esp32c5-mp
Update the value SOC_ROM_STACK_START to the expected
value from bootloader.ld memory map.
2024-06-14 08:20:02 +02:00
Guillaume Souchere 0440d582dc docs(performance): Add esp32p4/c5 relevant information to the performance guides
in speed.rst:
- add startup time increase info when spiram test is enabled
- add startup time increase info when spiram is enabled and
  poisoning comprehensive is enabled
- add L2 cache variable size info to optimize IRAM space / cache misses
- update sections refencing bluetooth/wifi built-in tasks to not show
  related info for p4 targets.
- Add IDF_TARGET_RF_TYPE for esp32c5

in ram-usage.rst:
- add L2 cache variable size info to maximize RAM space

Remove the files from esp32c5.txt and esp32p4.txt
that are no longer in need of update.
2024-04-25 08:05:46 +02:00
Guillaume Souchere 1b452481b8 Merge branch 'fix/prompt-erased-by-backspace-in-dumbmode' into 'master'
fix(console): bug where backspace erases the prompt in dumb mode

Closes IDFGH-12508

See merge request espressif/esp-idf!30313
2024-04-19 17:30:58 +08:00
Guillaume Souchere ada38e8d5e fix(linenoise): Skip 0x00 to 0x1F character in dump mode
Skipping through the non printable character assures that
in dumb mode, any special keys will not lead to the cursor
movement.
2024-04-17 13:13:58 +02:00
Guillaume Souchere aa61062584 fix(console): bug where backspace erases the prompt in dumb mode 2024-04-17 12:03:42 +02:00
Guillaume Souchere 3554fd5665 Merge branch 'fix/fsync-call-propagation-to-secondary-console' into 'master'
fix(console): Fsync not propagated to secondary output

Closes IDFGH-12104

See merge request espressif/esp-idf!30195
2024-04-16 13:50:51 +08:00
Guillaume Souchere 3cca8ff905 Merge branch 'fix/heap-trace-on-all-functions' into 'master'
fix(heap): Tracing of all heap_caps API functions

Closes IDF-9385

See merge request espressif/esp-idf!29536
2024-04-15 15:12:12 +08:00
Guillaume Souchere 429d72fcb8 Merge branch 'fix/heap-init-iteration-on-failed-alloc' into 'master'
fix(heap): Loop shouldn't break on failed allocation in heap_caps_init()

See merge request espressif/esp-idf!30218
2024-04-13 01:46:33 +08:00
Guillaume Souchere 52ebac9c62 fix(heap): Loop break on failed alloc
don't check for heaps_array != NULL in the loop.
The check is done after the loop since it is allowed
for the allocation to fail until finding aa ssuitable
heap.
2024-04-12 12:21:13 +02:00
Guillaume Souchere 7639933eeb Merge branch 'fix/missing-block-owner-in-heap-init-alloc' into 'master'
fix(heap): Add block owner to allocs in heap_caps_init()

Closes IDFGH-12450

See merge request espressif/esp-idf!30139
2024-04-12 15:23:16 +08:00
Guillaume Souchere 6e628a341a fix(console): Fsync not propagated to secondary output
Calls to fsync need to also be propagated to secondary
output when CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG
is enabled.

Closes https://github.com/espressif/esp-idf/issues/13162
2024-04-11 13:01:34 +02:00
Guillaume Souchere bd0dbbe767 test(heap): Extend task tracking test with task handle check
Add a test to make sure that the task handles returned in the
task tracking information are valid task handles.

To verify that, feed the task name returned by pcTaskGetName()
using the task handle under test to xTaskGetHandle() and make
sure the task handle returned matches the one under test.
2024-04-10 11:23:07 +02:00
Guillaume Souchere 6351771733 fix(heap): Add block owner to allocs in heap_caps_init
Add the block owner field in the  memory allocated in
heap_caps_init() to avoid parsing error wheen using
the task tracking feature.

Closes https://github.com/espressif/esp-idf/issues/13467
2024-04-10 08:20:09 +02:00
Guillaume Souchere dd1dde5fb9 fix(heap): Tracing of all heap_caps API
This commit fixes the missing tracing on all
heap_caps_xx_prefer and heap_caps_xx_aligned
functions.
2024-04-09 13:27:45 +02:00
Guillaume Souchere 497c840172 fix(heap): Wrong size propagated in alloc fail callback
Propagate `n * size` as the size of the failed allocation
instead of just `size` when heap_caps_calloc() fails since
`n * size` is the actual number of bytes that the heap
component tried to allocate.
2024-03-26 06:48:33 +01:00
Guillaume Souchere 573bd1bcc9 Merge branch 'feat/add-heap-walker-api' into 'master'
feat(heap): Add walker to the heap component

Closes IDF-9189

See merge request espressif/esp-idf!29047
2024-03-22 15:58:34 +08:00
Guillaume Souchere 39f789df93 feat(esp_rom): patch heap walker to the ROM implementation
modify existing patch of TLSF rom and add multi heap patch
to add the walker feature to the ROM implementation of the
heap component.
2024-03-21 07:41:04 +01:00
Guillaume Souchere 34fb83ffbc feat(heap): Add return value to walker callback
This return value is used by the tlsf_walk_pool
function to be notified of the need to interrupt
the ongoing traversal of the currently traversed
heap.
2024-03-20 08:33:48 +01:00
Guillaume Souchere 5cc69ce12b feat(heap): Add walker to the heap component
Introduce new APIs in essp_heap_caps.h:
- heap_caps_walk()
- heap_caps_walk_all()

Those functions are triggering a callback for all blocks
(allocated or free) of memory present in heaps meeting
the set of capabilities passed as parameter (or all heaps
for heap_caps_walk_all() function)

test_walker.c added to test the new functionality in
test_apps/heap_test/
2024-03-20 08:33:48 +01:00
Guillaume Souchere a62b13e3d7 Merge branch 'feat/add-c5-ringbuffer-support' into 'master'
feat(esp_ringbuf): Add support on esp32c5 target

Closes IDF-8659

See merge request espressif/esp-idf!29602
2024-03-18 15:02:30 +08:00
Guillaume Souchere fe2e1b05ac change(esp_ringbuf): Format pytest_esp_ringbuf.py 2024-03-15 11:22:00 +01:00
Guillaume Souchere 81c49583ec Merge branch 'test/enable-intr-dump-esp32p4' into 'master'
test(esp_intr_dump): Enable test for esp32p4

Closes IDF-8991

See merge request espressif/esp-idf!29620
2024-03-15 18:01:12 +08:00
Guillaume Souchere 85c2daee5b test(esp_intr_dump): Enable test for esp32p4
Added back intr_dump test on esp32p4 target.
Added esp32p4.txt expected output file containing
the list of interrupts.
2024-03-14 11:35:24 +01:00
Guillaume Souchere d0b97fbd6b Merge branch 'refactor/decouple-psram-init-from-essp-system' into 'master'
refactor(esp_psram): Decouple psram init from esp_system

Closes IDF-8769

See merge request espressif/esp-idf!29042
2024-03-12 21:01:59 +08:00
Guillaume Souchere 8a8ed00852 refactor(esp_psram): Decouple psram init from esp_system 2024-03-11 11:50:43 +01:00
Guillaume Souchere e6218d6fb2 Merge branch 'feat/newlib-add-aligned-alloc' into 'master'
feat(newlib): Add definition of aligned_alloc to heap.c

Closes IDF-9112

See merge request espressif/esp-idf!28815
2024-03-07 14:22:38 +08:00
Guillaume Souchere a7bd00eacc feat(newlib): Add definition of aligned_alloc to heap.c
Add the definition of aligned_alloc to the list of
definitions provided by heap.c.

Note that memalign (strictly equivalent) to aligned_alloc
is already defined in heap.c.
2024-03-06 11:06:14 +01:00
Guillaume Souchere 2ade4d3458 Merge branch 'feat/movee_heap_init_into_component' into 'master'
refactor(heap): decouple heap_init from esp_system

Closes IDF-8754

See merge request espressif/esp-idf!29024
2024-03-06 17:36:59 +08:00
Guillaume Souchere 32db5e4f6b Merge branch 'tests/esp32p4-console-support' into 'master'
test(console): add esp32p4 target support to console tests and example

Closes IDF-8105 and IDF-8078

See merge request espressif/esp-idf!28834
2024-03-06 10:09:03 +08:00
Guillaume Souchere e2144e01c1 refactor(heap): decouple heap_init from esp_system 2024-03-05 07:30:38 +01:00
Guillaume Souchere 0b9f01ac20 feat(soc): Add soc_caps macros for sleep support
- modify console example to use the new SOC_LIGHT_SLEEP_SUPPORTED
and SOC_DEEP_SLEEP_SUPPORTED macros when registering sleep commands

- remove exclusion of esp32p4 in basic and advanced example in
.build-test-rules.yml

- replace exclusion of esp32p4 for deep and light sleep tests with newly introduced macro

- remove the temporary disable check for esp32p4 and uses the
SOC_LIGHT_SLEEP_SUPPORTED maccro instead.
2024-03-05 07:05:40 +01:00
Guillaume Souchere 3fa2450b2c Merge branch 'fix/esp32c2-rom-patch-kconfig' into 'master'
fix(heap): Hide check patch config if no tlsf rom used

Closes IDF-9196

See merge request espressif/esp-idf!29071
2024-02-21 21:30:11 +08:00
Guillaume Souchere 7938ac4104 fix(heap): Hide check patch config if no tlsf rom used
HEAP_TLSF_CHECK_PATCH needs to be hiden in menuconfig if
HEAP_TLSF_USE_ROM_IMPL is not enabled.
2024-02-20 06:47:42 +01:00
Guillaume Souchere 7bb236254e Merge branch 'doc/update-esp-event-instance-register-descrition' into 'master'
docs(esp-event): Update description of esp_event_handler_instance_x

Closes IDFGH-11711

See merge request espressif/esp-idf!28063
2024-01-23 13:48:31 +08:00
Guillaume Souchere 8f407949c6 docs(esp-event): Update description of esp_event_handler_instance_x
Add a note to esp_event_handler_instance_register_with and
esp_event_handler_instance_register to specify that calling those
functions with the instance parameter set to NULL is equivalent to
calling esp_event_handler_register_with and esp_event_handler_register.

Closes https://github.com/espressif/esp-idf/issues/12818
2023-12-21 13:35:42 +01:00
Guillaume Souchere 7f64b4203b Merge branch 'feat/heap-reset-heap-info' into 'master'
feat(heap): Allow tracking of minimum free size for a given time frame

Closes IDF-8782

See merge request espressif/esp-idf!27577
2023-12-21 19:22:40 +08:00
Guillaume Souchere bb9d5a8d51 feat(heap): Allow tracking of minimum free size for a given time frame
Implement a function to start tracking the minimum free size from the
moment the function is called.
Implement a function to stop tracking the minimum free size and restore
the minimum free size value calculated since startup.
Implement the tests related to this new feature.
2023-12-21 08:07:01 +01:00
Guillaume Souchere 0d6b84c939 Merge branch 'fix/heap-trace-hash-map-remove' into 'master'
fix(heap): prevent double traversal of hashmap in map_find_and_remove

Closes IDFGH-11713

See merge request espressif/esp-idf!27985
2023-12-20 18:53:39 +08:00
Guillaume Souchere eb3507a5a2 fix(heap): prevent double traversal of hashmap in map_find_and_remove
Remove the use of SLIST_REMOVE in map_find_and_remove to prevent the hashmap
list to be traversed twice in the function.

Closes https://github.com/espressif/esp-idf/issues/12820
2023-12-19 18:02:08 +01:00
Guillaume Souchere b2cc934b94 fix(heap): Fix the use of block owner macro
In heap_caps_get_info, update the use of block owner
macros to use MULTI_HEAP_BLOCK_OWNER_SIZE() instead of
MULTI_HEAP_ADD_BLOCK_OWNER_SIZE(0).
2023-12-19 07:10:37 +01:00
Guillaume Souchere fd2b8b5eb3 fix(heap): Update the heap memory layout on esp32p4 target
- fix the value of SOC_ROM_STACK_START in soc.h
- Update the memory usage of ROM bootloader appendix in bootloader.ld
- Update the soc_memory_regions table to minimize the number of regions
  created after the startup stack is added back as a heap.
2023-11-10 07:29:22 +01:00
Guillaume Souchere 6ab440168a Merge branch 'fix/heap-task-tracking' into 'master'
fix(heap): Fix bugs in heap task tracking

Closes IDFGH-11348 and IDFGH-11345

See merge request espressif/esp-idf!26730
2023-11-09 23:51:00 +08:00
Guillaume Souchere e8f046358d fix(heap): Add missing test for heap task tracking config
- Add sdkconfig.ci.task_tracking that runs generic tests
with heap task tracking enabled.
- Add task_tracking.c that includes a test checking that
a created task that allocates memory is added to the list
of task tracked by the heap task tracking feature.
2023-11-09 09:20:45 +01:00
Guillaume Souchere 872bc74954 fix(heap): Fix bugs in heap task tracking
Update task tracking feature to fix bugs introduced when
decoupling task tracking from heap poisoning.

Closes https://github.com/espressif/esp-idf/issues/12498
Closes https://github.com/espressif/esp-idf/issues/12493
2023-11-09 09:20:45 +01:00
Guillaume Souchere 4cdb2f3f93 Merge branch 'fix/patch-heap-rom-integrity-check' into 'master'
fix(heap): Patch tlsf_check_pool in ROM heap

See merge request espressif/esp-idf!26615
2023-11-02 19:21:43 +08:00
Guillaume Souchere 3ac6eeb7b6 change(docs): Remove heap_caps_check_integrity wrong behavior warning in ROM heap
A patch will fix the behavior of heap_caps_check_integrity in the ROM implementation
of the heap component so the warning is not longer needed.
2023-11-01 09:47:41 +01:00
Guillaume Souchere 93d4b0b38c fix(heap): Patch tlsf_check_pool in ROM heap
The integrity_walker now calls the integrity check hook to control
free AND used blocks of memory in the TLSF pool. This integrity walker
function is called from tlsf_check_pool.

This commit creates a patch of integrity_walker function to update the
outdated implementation in the ROM.
2023-11-01 09:47:41 +01:00
Guillaume Souchere 787a4ad6c9 Merge branch 'feat/use-singly-linked-hashmap' into 'master'
feat(heap): update hash map to use singly linked list

Closes IDFGH-9846

See merge request espressif/esp-idf!26441
2023-10-23 13:12:37 +08:00
Guillaume Souchere 07165308f6 feat(heap): update hash map to use singly linked list
Previously, the hash map was a doubly linked list but was never
using the characteristics of it.

This commit switches the hash map to a singly linked list instead

This commit also fixes memory leak in heap trace tests by setting
hashmap size to 10 for the tests (instead of the default value of 250)

See https://github.com/espressif/esp-idf/issues/11173
2023-10-19 14:50:05 +02:00
Guillaume Souchere 63952fe2f6 Merge branch 'feat/make-task-tracking-independant-from-poisoning' into 'master'
feat(heap): Dissociate heap poisoning from task tracking functionalities

Closes IDF-8332

See merge request espressif/esp-idf!26311
2023-10-18 20:18:22 +08:00
Guillaume Souchere d6def6c06e Merge branch 'fix/check_integrity_on_used_blocks' into 'master'
heap: fix integrity check on used blocks by the tlsf component

Closes IDFGH-11050

See merge request espressif/esp-idf!26289
2023-10-18 15:47:25 +08:00
Guillaume Souchere 7492c862af feat(heap): Dissociate heap poisoning from task tracking
In order to enable CONFIG_HEAP_TASK_TRACKING, some kind
of poisoning had to be enabled (!HEAP_POISONING_DISABLED).
However since those functionalities don't seem to be related
in any way, this commit decouple them by removing
MULTI_HEAP_BLOCK_OWNER from poison_head_t in multi_heap_poisoning.c
and handling the block ownership in heap_caps.c instead.

Note that handling task tracking in multi_heap.c would necessitate
updating the ROM implementation of multi_heap.c as well. For this
reason, the task tracking feature has to be handled in heap_caps.c.
2023-10-18 06:43:22 +02:00
Guillaume Souchere f00234fb13 fix(doc): Add warning that canary check not supported for TLSF in ROM
The function heap_caps_check_integrity does not perform canary check on used block
as documented. The problem is fixed in the heap component but no patch is provided
for the ROM implementation.

Update the documentation with a warning for the targets supporting the TLSF implementation
in ROM feature.
2023-10-16 12:29:38 +02:00
Guillaume Souchere 84c5d3e52f fix(heap): Fixed integrity check on used blocks by the tlsf component
This commit updates the tlsf submodule to include the modification made in the component
aiming to perform integrity check on all blocks (not only the free ones).
Added test to test the fix in test_apps/heap_tests.

Fixes https://github.com/espressif/esp-idf/issues/12231
2023-10-16 12:29:38 +02:00
Guillaume Souchere 54f0517724 Merge branch 'feat/add_runtime_hint_for_corrupted_tlsf' into 'master'
feat(heap): Add runtime hint on tlsf assert trigger

Closes IDF-8222

See merge request espressif/esp-idf!26301
2023-10-09 13:30:43 +08:00
Guillaume Souchere cb9868e82d feat(heap): Add runtime hint on tlsf assert trigger
Catch all tlsf assertion failure and display a hint for out of bound writing since
all assertion failure are triggered when the tlsf metadata structure has been corrupted.
2023-10-05 11:57:37 +02:00
Guillaume Souchere c84f0b25ac console: Fix building issue when serial JTAG is set
Closes https://github.com/espressif/esp-idf/issues/10707
2023-04-27 15:28:23 +08:00
Guillaume Souchere 6ce1ccd964 heap: Add trace configuration to allow hash map placement in external RAM bss section when possible
- Remove the size limit for the hash_map array from the CONFIG_HEAP_TRACE_HASH_MAP_SIZE
- Add test case for heap tracing using hashmap
- Update heap_debug.rst to document the newly added configurations in the heap component

Closes https://github.com/espressif/esp-idf/issues/11172
2023-04-19 10:30:59 +02:00
Guillaume Souchere 48932ce910 Merge branch 'feature/heap-in-flash' into 'master'
heap: Add a configuration that places all the heap component in flash

Closes IDF-7143 and IDF-2853

See merge request espressif/esp-idf!23050
2023-04-13 14:38:15 +08:00
Guillaume Souchere 110aac240d heap: Add a configuration that places all the heap component and related functionalities in flash when enabled
Add test configuration to run all tests with heap component in the flash.
Add reference to this new configuration in performance section of the documentation.
2023-04-12 08:11:24 +02:00
Guillaume Souchere f94bbe1eff Merge branch 'feature/heap-trace-hash-map' into 'master'
heap: Add hash map mechanism to lower the access time to trace records

Closes IDFGH-9425

See merge request espressif/esp-idf!22564
2023-04-05 16:46:23 +08:00
Guillaume Souchere c42c93758f heap: remove exclusion of esp32h2 as a target for no/light/comprehensive_poisoning tests 2023-04-05 09:19:39 +02:00
Guillaume Souchere 14fa303bbc heap: Use linked list in hashmap table to reduce collision, RAM usage and speed up the code 2023-04-05 07:44:29 +02:00
Guillaume Souchere bdfc348ab3 heap: Add trace hash map config
- and place all added functions and vairables related to the hashmap in RAM
when the config is enabled only.

- add number of hash map entry as a Kconfig value and remove the hash map init function.
This prevents the user from allocating the hash map in flash and pass the pointer to the
init function (as the heap trace manipulate the hash map from functions placed in IRAM).

- add max linear value to the KConfig to make it configurable by the users.

- protect access to static variable "tracing"

- remove unecessary field in heap_trace_hashmap_entry_t
2023-04-05 07:44:29 +02:00
Guillaume Souchere 2f982107dc heap: Wrap the function hook feature under a configuration
also update heap_debug.rst and mem_alloc.rst to provide information about the feature
2023-03-23 04:50:49 +00:00
Guillaume Souchere 5a1f0cd63c heap: Make weak declaration for the alloc and free callbacks
- Fix "test get allocated size"
- Add tests for the free / alloc hooks
- Call alloc function hook on malloc/realloc/calloc base functions
- Add caps parameter to the allocation hook function
2023-03-23 04:50:49 +00:00
Guillaume Souchere b1f9d7a8ee Merge branch 'feature/use-linked-list-for-heap-trace-records' into 'master'
heap: fix Leaks perf on large records by using doubly linked list

Closes IDFGH-9121 and IDF-1244

See merge request espressif/esp-idf!22009
2023-02-15 15:14:19 +08:00
Guillaume Souchere 2cf9236f6c heap trace standalone: Fix initialization of the unused linked list, update tests
- Call TAILQ_INSERT_TAIL in linked_list_setup to add unused records from the tail of the list
- Fix test "heap trace leak check" to expect that after a free, the record is zeroed instead of checking that
  the whole list of records is moved by one index in the array.
- Use esp_rom_printf() under lock instead of printf() since it does not rely on interrupts.
2023-02-14 09:48:14 +01:00
Guillaume Souchere a630f06132 Merge branch 'feature/verbose-alloc-failure-abort' into 'master'
heap: print size and caps when malloc fails before calling system abort

Closes IDFGH-9267

See merge request espressif/esp-idf!22192
2023-02-13 15:26:24 +08:00
Guillaume Souchere 65c946f1f2 heap: Fix priority in shex() bit shift 2023-02-10 07:43:32 +01:00
Guillaume Souchere ba1d7f8d1c heap: Fix erroneous value returned by heap_caps_get_allocated_size() when poisoning is enabled
When light (or comprehensive) poisoning is enabled, the size requested by the user for allocation
is extended by a few bytes to store the canary header and footer. heap_caps_get_allocated_size() should
return the original size asked by the user (without the additional canary bytes).

test_malloc.c extended with a new test assuring that  heap_caps_get_allocated_size() returns the proper size
regardless of the degree of poisoning.
2023-02-01 10:04:38 +01:00
Guillaume Souchere 6382f28998 heap: Modify the memory type of the memory used as startup stack when memory protection is enabled
If memory protection is enabled on esp32c3 and esp32s3, we don't want to the heap component to see
the startup stack memory as D/IRAM but as DRAM only. Introduce a new type to make this possible in
the same fashion the regular D/IRAM regions are handled.
2023-01-26 10:52:34 +01:00
Guillaume Souchere a26ecafa0d Merge branch 'fix/malloc_cap_exec_on_esp32c6' into 'master'
heap: Fix allocation issue when trying to allocate in IRAM on esp32c6

Closes IDF-6306

See merge request espressif/esp-idf!22077
2023-01-26 17:45:23 +08:00
Guillaume Souchere fb9a7f36d4 heap: replace usage of bzero() with memset() across the component
See https://github.com/espressif/esp-idf/issues/5095
2023-01-25 09:28:56 +01:00
Guillaume Souchere 11f99ef649 heap: Add memory protection activation test
Check that when trying to allocate in IRAM with the system memory protection enabled,
null pointer is returned, or that an address in IRAM is returned if the memory protection
is disabled.
2023-01-25 07:20:57 +01:00
Guillaume Souchere a5d6f62e7e heap: Prevent alloc from IRAM to call dram_alloc_to_iram() on esp32c6 target
Since DRAM and IRAM are superposed on esp32c6 it is not necessary to convert a freshly allocated
DRAM addr to its IRAM equivalent when MALLOC_CAP_EXEC is passed to heap_caps_malloc(). Instead,
proceed with a default allocation since the address returned by multi_heap_malloc() already belongs
to the IRAM region.

Applies for esp32c6 and every boards with superposed DRAM and IRAM addresses.
2023-01-23 07:42:20 +01:00
Guillaume Souchere b8a4988451 soc: Update calculation of TWAI 1/2 base addresses 2023-01-06 09:30:36 +00:00
Guillaume Souchere 9b2f6f01d6 tools: Fix esp32c2_data_info.yaml memory values to match documentation 2023-01-06 09:30:36 +00:00
Guillaume Souchere 6dffac74e9 heap: Fix IRAM level 2 starting address
The IRAM level 2 address should start at the same address as DRAM level 2 and not DRAM level 3.
2023-01-06 09:30:36 +00:00
Guillaume Souchere 8fe13d53b1 Merge branch 'feature/re-enable-newlib-test-c2' into 'master'
newlib: Remove tests using RTC related features from the esp32c2 test set

Closes IDF-5057

See merge request espressif/esp-idf!21858
2023-01-04 14:46:58 +08:00
Guillaume Souchere ebbe24ac09 Merge branch 'feature/re-enable-intr-alloc-test-c2' into 'master'
esp-hw-support: Re-enable intr_alloc tests on esp32c2 target

Closes IDF-5061

See merge request espressif/esp-idf!21836
2023-01-04 14:25:05 +08:00
Guillaume Souchere ec34a0f5f5 newlib: Update the esp32c2 config default to avoid RTC related test to not run on esp32c2
Set CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT to enable to force CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER to disable
and hence prevent the following tests from being executed:

- Timestamp after abort is correct in case RTC & High-res timer have + big error
- Timestamp after restart is correct in case RTC & High-res timer have + big error
- Timestamp after restart is correct in case RTC & High-res timer have - big error
2023-01-03 08:33:38 +01:00
Guillaume Souchere 29dd3991a5 Merge branch 'feature/re-enable-heap-test-c2' into 'master'
heap: re-enable temporarily disabled test on esp32c2

Closes IDF-5167

See merge request espressif/esp-idf!21828
2023-01-02 19:07:04 +08:00
Guillaume Souchere b5bacffbd3 esp_hw_support: allow writing in IRAM when CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT is not set for esp32C2
when CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT is not set, the PMP rule for esp32c2 shoud allow write access.
Fix esp_cpu_configure_region_protection() in cpu.c accordingly.
2023-01-02 08:41:16 +01:00
Guillaume Souchere a218139d25 heap: RE-enable ESP32C2 test in test_apps 2023-01-02 08:40:59 +01:00
Guillaume Souchere 979525d0d8 esp-hw-support: fix interrupt allocation tests on esp32c2
A part of the test 'Can allocate IRAM int only with an IRAM handler' was to
allocate an intr with the handler in RTC memory which is not supported by esp32c2.
A condition was added to prevent this part of the test to execute on esp32c2 targets.
2023-01-02 08:30:20 +01:00
Guillaume Souchere a74ae7fba7 Merge branch 'feature/heap-trace-improve-spi-ram-support' into 'master'
heap_trace: improvements to formatting, code, comments of heap trace standalone

Closes IDFGH-8699

See merge request espressif/esp-idf!21506
2022-12-28 15:07:30 +08:00
Guillaume Souchere 89c0a259ee heap-trace: Add missing tests for heap_trace_summary() and heap_trace_dump_caps()
Note: the checks for the tests marked as [test-dump] are done in the pytest function
test_heap_trace_dump() since they are relying on the content of the heap_trace_dump_caps()
output.
2022-12-27 10:24:14 +01:00
Guillaume Souchere c39a9de344 heap_trace: unify API to pass caps param to heap_trace_dump() 2022-12-27 10:23:30 +01:00
Guillaume Souchere c92f2394f2 Merge branch 'fix/stack-check-fail-in-flash' into 'master'
esp_system: fix placement of __stack_chk_fail from flash to RAM

See merge request espressif/esp-idf!21465
2022-12-09 18:08:57 +08:00
Guillaume Souchere 4d16f46a88 esp_system: fix placement of __stack_chk_fail from flash to RAM
When stack check is enabled, certain functions (sometimes placed in RAM)
are being decorated with stack guards and a call to __stask_chk_fail() in
case ofr stack corruption. For this reason, __stack_chk_fail() must be
placed in RAM too.

Add stack check config in heap tests on all targets to find eventual flash to RAM
calls due to stack checks when running callgraph_check.py
2022-12-07 08:49:12 +01:00
Guillaume Souchere 1d16ca6a26 Merge branch 'feature/lower-iram-utilization-of-heap-component' into 'master'
heap: lower the utilization of IRAM by the heap component binary

Closes IDF-2282 and IDFGH-6233

See merge request espressif/esp-idf!20926
2022-11-25 15:22:05 +08:00
Guillaume Souchere b496bab0f6 heap: fix linker issues and remove spi flash dependencies 2022-11-24 10:31:14 +01:00
Guillaume Souchere e31e6d4de8 feat: remove tlsf_fls and tlsf_ffs from linker as they are inlined. 2022-11-24 10:31:14 +01:00
Guillaume Souchere ab1bd08ab9 tools: update list of references to not include symbold used by __assert_func calls
On xtensa architecture, the call to __assert_func uses a reference to __func__ that can
sometimes be placed in flash. Since the __asert_func can be called from functions in IRAM
the check_callgraph script can report an error when checking for invalid calls from IRAM
to flash sections. However, the __asert_func prevents this scenario at runtime so the
check_callgraph script reports a 'flas positive' situation. For this reasson, all references
to __func__$x found prior to a call to __assert_func are droped in the parsing of the rtl files.
2022-11-24 10:31:14 +01:00
Guillaume Souchere 0376e6ec79 heap: add check for usage of flash content from iram
this commits:
- adds build-time test to check that no call to flash regions are done from IRAM functions

- resolves problems related to IRAM function using content in flash memory

- update heap_caps_alloc_failed to use a default function name in DRAM
  when necessary instead of creating a function name variable in DRAM for
  each call of heap_caps_alloc_failed. This allows to save some extra bytes
  in RAM.
2022-11-24 10:31:14 +01:00