Commit Graph

146 Commits

Author SHA1 Message Date
Omar Chebib
e9996ebd4b espcoredump: code refactoring and add support for RISC-V implemetation
This commit includes the refactoring of the core dump feature. Thanks to
this refactoring, it is easier to integrate the support of RISC-V
architecture for this feature.

Fixes ESP-1758
2021-02-07 19:04:19 +08:00
Fu Hanxi
da73dc8195 fix(coredump): parse registers values from stack 2021-01-29 11:12:21 +08:00
Ivan Grokhotkov
88252c98b8 Merge branch 'feature/refactor_espcoredump' into 'master'
Feature: Refactor espcoredump

See merge request espressif/esp-idf!11525
2021-01-21 20:35:31 +08:00
Angus Gratton
3532f52f60 Merge branch 'bugfix/ldgen_ignore_nonexistent_archives_and_obj' into 'master'
ldgen: check mappings

Closes IDF-1624

See merge request espressif/esp-idf!8557
2021-01-21 15:59:35 +08:00
Fu Hanxi
be71f5050d core dump: modify the test according to the refactor 2021-01-21 15:14:59 +08:00
Fu Hanxi
d50f021a8c core dump: rewrite espcoredump.py with corefile package 2021-01-21 15:14:59 +08:00
Fu Hanxi
7109cda149 core dump: Add corefile package for parse/build bin/elf core files
- elf.py: elf related structs

- gdb.py: gdb related functions

- loader.py: extract elf/bin from flash to elf format core file

- xtensa.py: xtensa arch target related structs and functions
2021-01-21 15:14:59 +08:00
Renz Bagaporo
8d52b0b5e1 ci: exempt upstream libmbedtls mapping for sha256 2021-01-19 11:17:18 +08:00
Alexey Gerenkov
3b0fa33c20 coredump: Adds compile time check for target support 2021-01-18 20:51:11 +03:00
Alexey Gerenkov
589a3d9336 coredump: Switches to RTOS snapshots walking API 2021-01-18 20:51:05 +03:00
Omar Chebib
f4ac8433c1 coredump: Core dump is encrypted if the partition itself is encrypted
Core dump can now be written in plain text if the partition itself is encrypted.
So it is important to modify the partition table if the user wants an encrypted
core dump partition as by default, it is not.
Added some functions in core_dump_port.c to abstract the checksum implementation
from core_dump_flash.c file.

Closes IDF-458
2020-12-01 16:58:45 +08:00
Omar Chebib
a56a0921aa espcoredump: fix plain coredump written on an encrypted flash
The coredump is now encrypted when saved on an encrypted flash.
The cache used for saving the file onto the flash is bigger,
making the proccess more efficient.

Relates to IDF-458
Closes https://github.com/espressif/esp-idf/issues/2932
2020-11-26 16:28:32 +08:00
Roland Dobai
2ecf66eba3 tools: Wait and dump the initial messages during gdbmi initialization 2020-11-18 19:08:16 +01:00
Roland Dobai
82ee1d4683 tools: Increase the internal GDB response delay for espcoredump CI tests 2020-11-18 18:56:30 +01:00
Roland Dobai
646f3fb801 tools: Fix non-existing key in espcoredump's GDMI payload 2020-11-18 18:56:30 +01: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
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
Ivan Grokhotkov
5eebdd1de2 espcoredump: fix exception when -thread-info fails
GDB "-thread-info N" command (for a specific thread N) may fail if
GDB can not perform a backtrace. At the same time, "-thread-info"
command succeeds in this situation, returning information for all
threads.
Replace repeated calls to "-thread-info N" with a single call to
"-thread-info", also reducing the total execution time.
2020-10-02 16:54:32 +02:00
Mahavir Jain
237087a5ca espcoredump: remove ESP32 prefix from config options
- This component is applicable for ESP32 and ESP32-S2, hence the change
- Backward compatibility is maintained using `sdkconfig.rename` file
2020-09-30 20:22:27 +05:30
Ivan Grokhotkov
767235ba6d Merge branch 'bugfix/coredump_temp_files_del' into 'master'
coredump: temp-files delete fix

See merge request espressif/esp-idf!9511
2020-09-14 16:05:28 +08: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
Andrei Gramakov
48c4378a70 coredump: temp-files delete fix 2020-08-04 09:15:30 +02:00
Ivan Grokhotkov
8ac56e904b Merge branch 'bugfix/coredump_esp_panic_reason' into 'master'
Coredump ESP panic reason

See merge request espressif/esp-idf!9072
2020-07-28 23:49:10 +08:00
Alexey Gerenkov
cae41db8b8 coredump: Fixes core dump private header inclusion guard 2020-07-27 21:38:34 +03:00
Alexey Gerenkov
21091c6b0e coredump: Fixes ESP-specific panic reasons handling 2020-07-27 21:38:33 +03:00
morris
2917651478 esp_rom: extract common ets apis into esp_rom_sys.h 2020-07-27 15:27:01 +08:00
Roland Dobai
ee5e3f8b93 CI: Fix timeout in the espcoredump test 2020-07-08 11:10:43 +02:00
morris
a34409cffc esp_rom: extract common CRC apis into esp_rom_crc.h 2020-06-23 16:40:14 +08:00
Ivan Grokhotkov
c140a66d3d Merge branch 'feature/coredump_pygdbmi' into 'master'
espcoredump: use pygdbmi for interaction with GDB

Closes IDF-48

See merge request espressif/esp-idf!8841
2020-06-23 01:44:45 +08:00
Ivan Grokhotkov
3ffacb04b9 Merge branch 'bugfix/espcoredump_fix_error_reported_for_blank_partition' into 'master'
espcoredump: fix error reported for blank partition

Closes IDF-1727

See merge request espressif/esp-idf!8801
2020-06-22 15:54:19 +08:00
Alex Lisitsyn
0d85e0096c espcoredump: fix error reported for blank partition 2020-06-22 15:54:18 +08:00
Ivan Grokhotkov
cbd1a95fd0 espcoredump: simplify handling of temporary files 2020-06-18 19:08:00 +02:00
Ivan Grokhotkov
a63f44cfda espcoredump: use pygdbmi for interaction with GDB
IDF now includes pygdbmi package as a dependency, so we can use it
for core dump parsing.
2020-06-18 19:07:59 +02:00
Krzysztof Budzynski
79a0e892a0 Merge branch 'feature/coredump_allow_variable_dumping' into 'master'
Added coredump user defined variable into coredump

Closes IDF-44

See merge request espressif/esp-idf!8730
2020-06-15 02:35:38 +08:00
Alexey Gerenkov
1deeadf4c5 Added coredump user defined variable into coredump 2020-06-15 02:35:38 +08:00
Ivan Grokhotkov
8526cb577c Merge branch 'bugfix/coredump_workaround_esp32s2_sha256_support' into 'master'
Limit coredump SHA256 support for ESP32 only

See merge request espressif/esp-idf!8817
2020-06-05 22:14:46 +08:00
Sylvio Alves
1fdc7afeb8 coredump: Limit coredump SHA256 support for ESP32 only 2020-05-29 15:25:29 -03:00
Alexey Gerenkov
cfd65df78a coredump: Fixes size of memory region used by espcoredump.py 2020-05-29 20:53:15 +03:00
Alexey Gerenkov
ef1b3330c2 coredump: Fixes coredump data overwriting due to 'TaskSnapshot_t' and 'core_dump_task_header_t' difference 2020-05-06 15:04:58 +03: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
62426a6c90 Merge branch 'refactor/use_new_component_registration_functions' into 'master'
CMake: Use new component registration function

See merge request espressif/esp-idf!8068
2020-03-25 08:02:42 +08:00
aleks
b3eff24458 espcoredump: update expected test output 2020-03-23 14:40:56 +00:00
Andreas Motl
dde4d2e9eb Make espcoredump more resilient when decoding specific thread stack
Merges https://github.com/espressif/esp-idf/pull/4865
2020-03-23 14:40:56 +00:00
Renz Bagaporo
3d0967a58a test: declare requirements and include dirs private 2020-03-23 10:58:50 +08:00
Ivan Grokhotkov
80f50471bf Merge branch 'bugfix/coredump_no_ext_stacks' into 'master'
core dump: don't allow core dumps to Flash if PSRAM is used for stacks

See merge request espressif/esp-idf!7835
2020-03-07 18:07:10 +08:00
Alex Lisitsyn
3efa8d7a97 core dump: add ESP32-S2 support 2020-03-03 23:37:45 +08:00
Ivan Grokhotkov
4f32a06f87 core dump: don't allow core dumps to Flash if PSRAM is used for stacks
It is not possible to write to Flash when the stack is located in
PSRAM, and it is not possible to write PSRAM buffers into Flash when
malloc can not be used.
2020-03-02 14:43:05 +01:00
Ivan Grokhotkov
25041ba583 tools/idf_monitor: automatically decode UART core dumps
This adds detection of UART core dumps to IDF monitor. By default,
core dumps are not printed to the console, but are processed by
espcoredump.py using 'info_corefile' command. The result is printed
to stdout.

This feature can be disabled in menuconfig.

In the future this can be extended to allow running espcoredump.py
with 'dbg_corefile' argument, which is similar to the current GDB Stub
behavior.

Related to IDF-52.
2020-02-13 18:46:26 +01:00
morris
e30cd361a8 global: rename esp32s2beta to esp32s2 2020-01-22 12:14:38 +08:00
morris
1c2cc5430e global: bring up esp32s2(not beta) 2020-01-16 17:41:31 +08:00
Ivan Grokhotkov
a559014ff0 Merge branch 'bugfix/coredump_bin_fmt_ver_update' into 'master'
Fixes coredump compatibility with legacy binary core dumps

See merge request espressif/esp-idf!6794
2020-01-10 10:04:17 +08:00
Ivan Grokhotkov
37a8ff9040 core dump: only get EPC/EPS registers up to XCHAL_NUM_INTLEVELS 2019-12-19 16:47:57 +01:00
Alexey Gerenkov
e092d6f858 coredump: Makes compatible with legacy binary core dumps
Also:
 - improves coredump versioning scheme
 - Moves some API funtions to respective flash/UART dependent code
2019-11-25 22:44:51 +03:00
Alexey Gerenkov
27ce4d13df coredump: change data format to ELF 2019-11-22 13:25:43 +08:00
Ivan Grokhotkov
9a2af7ae33 global: remove gcc 5.2 support 2019-11-20 11:17:27 +01:00
Angus Gratton
adfc06a530 Merge branch 'master' into feature/esp32s2beta_merge 2019-09-20 10:28:37 +10:00
Angus Gratton
438d513a95 Merge branch 'master' into feature/esp32s2beta_merge 2019-09-16 16:18:48 +10:00
Michael (XIAO Xufeng)
9d30b04f68 coredump: use esp_flash api in coredump
Also put esp_flash functions into noflash region, when
ESP32_PANIC_HANDLER_IRAM and coredump are enabled. The option disables
the re-enabling of the CPU-cache when it's disabled during coredump.
This requires all the coredump functions including the flash API to be
in the D/IRAM.
2019-09-14 17:02:08 +08:00
Michael (XIAO Xufeng)
511820820e esp_flash: fix the coredump issue
During coredump, dangerous-area-checking should be disabled, and cache
disabling should be replaced by a safer version.

Dangerous-area-checking used to be in the HAL, but it seems to be more
fit to os functions. So it's moved to os functions. Interfaces are
provided to switch between os functions during coredump.
2019-09-14 17:01:36 +08:00
Michael (XIAO Xufeng)
6139864a4c esp_flash: fix coredump for legacy spi flash API
When legacy mode is used, the coredump still fails during linking
because "esp_flash_init_default_chip", "esp_flash_app_init" and
"esp_flash_default_chip " are not compiled and linked.

Instead of using ``if`` macros in callers, these functions are protected
by ``if`` macros in the header, and also not compiled in the sources.
"esp_flash_default_chip" variable is compiled with safe default value.
2019-09-14 16:56:31 +08:00
Alex Lisitsyn
7ff9538c48 espcoredump: fix issue with spi_flash access
spi_flash has been updated and its functions work from flash by default instead of IRAM that cause issue
add Kconfig value into espcoredump to enable spi_flash legacy mode (CONFIG_SPI_FLASH_USE_LEGACY_IMPL) when core dump is selected
fix spi_flash issues to work correctly with legacy mode when CONFIG_SPI_FLASH_USE_LEGACY_IMPL is used
2019-09-06 15:37:55 +08:00
Angus Gratton
04ae56806c Merge branch 'master' into feature/esp32s2beta_update 2019-08-08 15:26:58 +10:00
Angus Gratton
24d26fccde Merge branch 'master' into feature/esp32s2beta_update 2019-08-08 13:44:24 +10:00
Anton Maklakov
afbaf74007 tools: Mass fixing of empty prototypes (for -Wstrict-prototypes) 2019-08-01 16:28:56 +07:00
Renz Christian Bagaporo
9b350f9ecc cmake: some formatting fixes
Do not include bootloader in flash target when secure boot is enabled.
Emit signing warning on all cases where signed apps are enabled (secure
boot and signed images)
Follow convention of capital letters for SECURE_BOOT_SIGNING_KEY
variable, since it is
relevant to other components, not just bootloader.
Pass signing key and verification key via config, not requiring
bootloader to know parent app dir.
Misc. variables name corrections
2019-06-21 19:53:29 +08:00
Renz Christian Bagaporo
9eccd7c082 components: use new component registration api 2019-06-21 19:53:29 +08:00
Darian Leung
037c079e9a esp32: Refactor backtrace and add esp_backtrace_print()
This commit refactors backtracing within the panic handler so that a common
function esp_backtrace_get_next_frame() is used iteratively to traverse a
callstack.

A esp_backtrace_print() function has also be added that allows the printing
of a backtrace at runtime. The esp_backtrace_print() function allows unity to
print the backtrace of failed test cases and jump back to the main test menu
without the need reset the chip. esp_backtrace_print() can also be used as a
debugging function by users.

- esp_stack_ptr_is_sane() moved to soc_memory_layout.h
- removed uncessary includes of "esp_debug_helpers.h"
2019-06-19 18:30:18 +08:00
suda-morris
84b2f9f14d build and link hello-world for esp32s2beta 2019-06-11 13:07:37 +08:00
Konstantin Kondrashov
399d2d2605 all: Using xxx_periph.h
Using xxx_periph.h in whole IDF instead of xxx_reg.h, xxx_struct.h, xxx_channel.h ... .

Cleaned up header files from unnecessary headers (releated to soc/... headers).
2019-06-03 14:15:08 +08:00
Renz Christian Bagaporo
ffec9d4947 components: update with build system changes 2019-05-13 19:59:17 +08:00
Michael (XIAO Xufeng)
562af8f65e global: move the soc component out of the common list
This MR removes the common dependency from every IDF components to the SOC component.

Currently, in the ``idf_functions.cmake`` script, we include the header path of SOC component by default for all components.
But for better code organization (or maybe also benifits to the compiling speed), we may remove the dependency to SOC components for most components except the driver and kernel related components.

In CMAKE, we have two kinds of header visibilities (set by include path visibility):

(Assume component A --(depends on)--> B, B is the current component)

1. public (``COMPONENT_ADD_INCLUDEDIRS``): means this path is visible to other depending components (A) (visible to A and B)
2. private (``COMPONENT_PRIV_INCLUDEDIRS``): means this path is only visible to source files inside the component (visible to B only)

and we have two kinds of depending ways:

(Assume component A --(depends on)--> B --(depends on)--> C, B is the current component)

1. public (```COMPONENT_REQUIRES```): means B can access to public include path of C. All other components rely on you (A) will also be available for the public headers. (visible to A, B)
2. private (``COMPONENT_PRIV_REQUIRES``): means B can access to public include path of C, but don't propagate this relation to other components (A). (visible to B)

1. remove the common requirement in ``idf_functions.cmake``, this makes the SOC components invisible to all other components by default.
2. if a component (for example, DRIVER) really needs the dependency to SOC, add a private dependency to SOC for it.
3. some other components that don't really depends on the SOC may still meet some errors saying "can't find header soc/...", this is because it's depended component (DRIVER) incorrectly include the header of SOC in its public headers. Moving all this kind of #include into source files, or private headers
4. Fix the include requirements for some file which miss sufficient #include directives. (Previously they include some headers by the long long long header include link)

This is a breaking change. Previous code may depends on the long include chain.
You may need to include the following headers for some files after this commit:

- soc/soc.h
- soc/soc_memory_layout.h
- driver/gpio.h
- esp_sleep.h

The major broken include chain includes:

1. esp_system.h no longer includes esp_sleep.h. The latter includes driver/gpio.h and driver/touch_pad.h.
2. ets_sys.h no longer includes soc/soc.h
3. freertos/portmacro.h no longer includes soc/soc_memory_layout.h

some peripheral headers no longer includes their hw related headers, e.g. rom/gpio.h no longer includes soc/gpio_pins.h and soc/gpio_reg.h

BREAKING CHANGE
2019-04-16 13:21:15 +08:00
Renz Christian Bagaporo
90ee405afd ldgen: update component linker fragment files 2019-04-04 15:57:34 +08:00
morris
f5b03c9ea3 misc adjustment of esp32 component 2019-04-03 19:57:46 +08:00
morris
c159984264 separate rom from esp32 component to esp_rom
1. separate rom include files and linkscript to esp_rom
2. modefiy "include rom/xxx.h" to "include esp32/rom/xxx.h"
3. Forward compatible
4. update mqtt
2019-03-21 18:51:45 +08:00
Ivan Grokhotkov
106dc05903 Merge branch 'feature/specify_includes_belonging_esp32' into 'master'
move esp32 chip specific includes to esp32/xxx.h

See merge request idf/esp-idf!4534
2019-03-21 18:34:08 +08:00
morris
956c25dedd move esp32 chip specific includes to esp32/xxx.h 2019-03-18 17:14:05 +08:00
Ivan Grokhotkov
63dabd1a17 espcoredump: fix test with esp32-2018r1 toolchain 2019-03-18 12:47:29 +08:00
Ivan Grokhotkov
6221f5a819 espcoredump: fix test compilation error with GCC 8 2019-03-18 12:47:22 +08:00
aleks
13e1c0b32f esp32: coredump header (fix linker.lf)
remove duplicated include from components/esp32/incliude/esp_core_dump.h
espcoredump/incliude/esp_core_dump.h:
fix signature of the functions esp_core_dump_to_uart() and esp_core_dump_to_uart();
add espcoredump into COMPONENT_PRIV_REQUIRES list
fix linker.lf file
2019-03-08 09:49:37 +00:00
aleks
6ab722e478 coredump:fix test artifacts
Move existing core dump files into espcoredump component folder
Add KConfig, linker.lf, make and CMakeList.txt for new component
Existing functionality separated into core_dump_common, core_dump_flash, core_dump_uart
Update test_core_dump.c and make files to link it as unit test
Update according to review:
Move target and RTOS related functionality into separated file (core_dump_port.c).
Fix test logs and test elf files
2019-02-12 10:22:33 +00:00
aleks
10fe158f67 coredump: improvements refactoring
Move existing core dump files into espcoredump component folder
Add KConfig, linker.lf, make and CMakeList.txt for new component
Existing functionality separated into core_dump_common, core_dump_flash, core_dump_uart
Update test_core_dump.c and make files to link it as unit test
Update according to review:
Move target and RTOS related functionality into separated file (core_dump_port.c).
2019-02-12 10:22:33 +00:00
Roland Dobai
e1e6c1ae0a components: Correct the Python coding style 2018-12-17 07:52:38 +01:00
Alexey Gerenkov
b152c1020c esp32: Adds logging level to core dump script 2018-11-15 06:13:48 +00:00
Alexey Gerenkov
76e02cadcc esp32: Adds support for core dump format version 2018-11-15 06:13:48 +00:00
Alexey Gerenkov
a55cc99f50 esp32: Replaces magic numbers with CRC for core dump in flash 2018-11-15 06:13:48 +00:00
Renz Bagaporo
cc774111bf cmake: Add support for test build 2018-10-20 12:07:24 +08:00
Anton Maklakov
7b4054a468 espcoredump: Fix a test case of new gdb from the new toolchain 2018-09-20 18:53:15 +08:00
Roland Dobai
b9e1869538 espcoredump: Add tests and Python3 support 2018-09-11 08:53:06 +02:00
Alexey Gerenkov
8fe2a77c46 coredump: Adds support for ROM ELF file to 'espcoredump' script 2018-07-05 22:20:20 +03:00
Alexey Gerenkov
a593d8a518 bugfix: fixed path to esptool when there is no compiled python module for it
bugfix: GDB inernal failure handling was added
2017-03-21 13:30:38 +03:00
Alexey Gerenkov
f512923791 esp32: Fixed search path for esptool 2017-01-26 19:28:13 +03:00
Alexey Gerenkov
ad66fbe5ad esp32: Fixes issues discussed during code review of MR!341
The following issues mentioned during MR!341 review were fixed:
1) Core dump test application description
2) Usage of CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH and CONFIG_ESP32_ENABLE_COREDUMP_TO_UART
3) FLASH_GUARD_START macro usage is fixed in flash API
4) Core dump module logging facility
5) cache util functions doc updated
6) interactive delay before print core dump to uart
7) core dump partion support in build system
2017-01-12 19:38:19 +03:00
Alexey Gerenkov
50b3ce616f esp32: Adds documentation and comments to core dump feature files 2017-01-11 20:51:28 +03:00
Alexey Gerenkov
39ddc7b836 esp32: Fixes several issues in core dump feature
1) PS is fixed up to allow GDB backtrace to work properly
2) MR!341 discussion: in core dump module: esp_panicPutXXX was replaced by ets_printf.
3) MR!341 discussion: core dump flash magic number was changed.
4) MR!341 discussion: SPI flash access API was redesigned to allow flexible critical section management.
5) test app for core dump feature was added
6) fixed base64 file reading issues on Windows platform
7) now raw bin core file is deleted upon core loader failure by epscoredump.py
2017-01-11 20:51:28 +03:00
Alexey Gerenkov
23f836659d esp32: Add core dump printing to UART feature 2017-01-11 20:51:28 +03:00
Alexey Gerenkov
4a3e160888 esp32: Add core dump saving to flash feature
Complimentary changes:
1) Partition table definitions files with core dump partition
2) Special sub-type for core dump partition
3) Special version of spi_flash_xxx
4) espcoredump.py is script to get core dump from flash and print useful info
5) FreeRTOS API was extended to get tasks snapshots
2017-01-11 20:51:28 +03:00