mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-31 19:24:33 +02:00
gcov: added dbg stub capabilites and magic number entry to keep backward compatible
This commit is contained in:
@@ -115,7 +115,7 @@ static int esp_dbg_stub_gcov_dump_do(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Triggers gcov info dump.
|
* @brief Triggers gcov info dump task
|
||||||
* This function is to be called by OpenOCD, not by normal user code.
|
* This function is to be called by OpenOCD, not by normal user code.
|
||||||
* TODO: what about interrupted flash access (when cache disabled)???
|
* TODO: what about interrupted flash access (when cache disabled)???
|
||||||
*
|
*
|
||||||
@@ -123,11 +123,13 @@ static int esp_dbg_stub_gcov_dump_do(void)
|
|||||||
*/
|
*/
|
||||||
static int esp_dbg_stub_gcov_entry(void)
|
static int esp_dbg_stub_gcov_entry(void)
|
||||||
{
|
{
|
||||||
return esp_dbg_stub_gcov_dump_do();
|
s_do_dump = true;
|
||||||
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gcov_rtio_atexit(void (*function)(void) __attribute__ ((unused)))
|
int gcov_rtio_atexit(void (*function)(void) __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
|
uint32_t capabilities = 0;
|
||||||
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
|
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
|
||||||
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_GCOV, (uint32_t)&esp_dbg_stub_gcov_entry);
|
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_GCOV, (uint32_t)&esp_dbg_stub_gcov_entry);
|
||||||
return 0;
|
return 0;
|
||||||
|
Submodule components/bt/controller/lib_esp32 updated: fb49791b7c...cfbb0571fb
Submodule components/bt/controller/lib_esp32c3_family updated: 7ad49c38b8...9ca8afd50a
Submodule components/cbor/tinycbor updated: 085ca40781...7c349dbb6b
Submodule components/coap/libcoap updated: 98954eb30a...9b6451c365
@@ -20,13 +20,18 @@
|
|||||||
* Debug stubs entries IDs
|
* Debug stubs entries IDs
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
ESP_DBG_STUB_MAGIC_NUM,
|
||||||
ESP_DBG_STUB_CONTROL_DATA, ///< stubs descriptor entry
|
ESP_DBG_STUB_CONTROL_DATA, ///< stubs descriptor entry
|
||||||
ESP_DBG_STUB_ENTRY_FIRST,
|
ESP_DBG_STUB_ENTRY_FIRST,
|
||||||
ESP_DBG_STUB_ENTRY_GCOV ///< GCOV entry
|
ESP_DBG_STUB_ENTRY_GCOV ///< GCOV entry
|
||||||
= ESP_DBG_STUB_ENTRY_FIRST,
|
= ESP_DBG_STUB_ENTRY_FIRST,
|
||||||
|
ESP_DBG_STUB_CAPABILITIES,
|
||||||
ESP_DBG_STUB_ENTRY_MAX
|
ESP_DBG_STUB_ENTRY_MAX
|
||||||
} esp_dbg_stub_id_t;
|
} esp_dbg_stub_id_t;
|
||||||
|
|
||||||
|
#define ESP_DBG_STUB_MAGIC_NUM_VAL 0xFEEDBEEF
|
||||||
|
#define ESP_DBG_STUB_CAP_GCOV_TASK (1 << 0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initializes debug stubs.
|
* @brief Initializes debug stubs.
|
||||||
*
|
*
|
||||||
@@ -41,10 +46,22 @@ void esp_dbg_stubs_init(void);
|
|||||||
*
|
*
|
||||||
* @param id Stub ID.
|
* @param id Stub ID.
|
||||||
* @param entry Stub entry. Usually it is stub entry function address,
|
* @param entry Stub entry. Usually it is stub entry function address,
|
||||||
* but can be any value meaningfull for OpenOCD command/code.
|
* but can be any value meaningfull for OpenOCD command/code
|
||||||
*
|
* such as capabilities
|
||||||
* @return ESP_OK on success, otherwise see esp_err_t
|
* @return ESP_OK on success, otherwise see esp_err_t
|
||||||
*/
|
*/
|
||||||
esp_err_t esp_dbg_stub_entry_set(esp_dbg_stub_id_t id, uint32_t entry);
|
esp_err_t esp_dbg_stub_entry_set(esp_dbg_stub_id_t id, uint32_t entry);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Retrives the corresponding stub entry
|
||||||
|
*
|
||||||
|
* @param id Stub ID.
|
||||||
|
* @param entry Stub entry. Usually it is stub entry function address,
|
||||||
|
* but can be any value meaningfull for OpenOCD command/code
|
||||||
|
* such as capabilities
|
||||||
|
*
|
||||||
|
* @return ESP_OK on success, otherwise see esp_err_t
|
||||||
|
*/
|
||||||
|
esp_err_t esp_dbg_stub_entry_get(esp_dbg_stub_id_t id, uint32_t *entry);
|
||||||
|
|
||||||
#endif //ESP_DBG_STUBS_H_
|
#endif //ESP_DBG_STUBS_H_
|
||||||
|
@@ -76,6 +76,7 @@ void esp_dbg_stubs_init(void)
|
|||||||
s_dbg_stubs_ctl_data.data_alloc = (uint32_t)esp_dbg_stubs_data_alloc;
|
s_dbg_stubs_ctl_data.data_alloc = (uint32_t)esp_dbg_stubs_data_alloc;
|
||||||
s_dbg_stubs_ctl_data.data_free = (uint32_t)esp_dbg_stubs_data_free;
|
s_dbg_stubs_ctl_data.data_free = (uint32_t)esp_dbg_stubs_data_free;
|
||||||
|
|
||||||
|
s_stub_entry[ESP_DBG_STUB_MAGIC_NUM] = ESP_DBG_STUB_MAGIC_NUM_VAL;
|
||||||
s_stub_entry[ESP_DBG_STUB_CONTROL_DATA] = (uint32_t)&s_dbg_stubs_ctl_data;
|
s_stub_entry[ESP_DBG_STUB_CONTROL_DATA] = (uint32_t)&s_dbg_stubs_ctl_data;
|
||||||
eri_write(ESP_DBG_STUBS_TRAX_REG, (uint32_t)s_stub_entry);
|
eri_write(ESP_DBG_STUBS_TRAX_REG, (uint32_t)s_stub_entry);
|
||||||
ESP_LOGV(TAG, "%s stubs %x", __func__, eri_read(ESP_DBG_STUBS_TRAX_REG));
|
ESP_LOGV(TAG, "%s stubs %x", __func__, eri_read(ESP_DBG_STUBS_TRAX_REG));
|
||||||
@@ -92,4 +93,15 @@ esp_err_t esp_dbg_stub_entry_set(esp_dbg_stub_id_t id, uint32_t entry)
|
|||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
esp_err_t esp_dbg_stub_entry_get(esp_dbg_stub_id_t id, uint32_t *entry)
|
||||||
|
{
|
||||||
|
if (id < ESP_DBG_STUB_ENTRY_FIRST || id >= ESP_DBG_STUB_ENTRY_MAX) {
|
||||||
|
ESP_LOGE(TAG, "Invalid stub id %d!", id);
|
||||||
|
return ESP_ERR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
*entry = s_stub_entry[id];
|
||||||
|
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Submodule components/esp_wifi/lib updated: e6945e61f7...045b526641
Submodule components/tinyusb/tinyusb updated: 334e95fac5...c4badd394e
Reference in New Issue
Block a user