mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 06:11:06 +00: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.
 | 
			
		||||
 * 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)
 | 
			
		||||
{
 | 
			
		||||
    return esp_dbg_stub_gcov_dump_do();
 | 
			
		||||
    s_do_dump = true;
 | 
			
		||||
    return ESP_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int gcov_rtio_atexit(void (*function)(void) __attribute__ ((unused)))
 | 
			
		||||
{
 | 
			
		||||
    uint32_t capabilities = 0;
 | 
			
		||||
    ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
 | 
			
		||||
    esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_GCOV, (uint32_t)&esp_dbg_stub_gcov_entry);
 | 
			
		||||
    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
 | 
			
		||||
 */
 | 
			
		||||
typedef enum {
 | 
			
		||||
    ESP_DBG_STUB_MAGIC_NUM,
 | 
			
		||||
    ESP_DBG_STUB_CONTROL_DATA,   ///< stubs descriptor entry
 | 
			
		||||
    ESP_DBG_STUB_ENTRY_FIRST,
 | 
			
		||||
    ESP_DBG_STUB_ENTRY_GCOV	///< GCOV entry
 | 
			
		||||
        = ESP_DBG_STUB_ENTRY_FIRST,
 | 
			
		||||
    ESP_DBG_STUB_CAPABILITIES,
 | 
			
		||||
    ESP_DBG_STUB_ENTRY_MAX
 | 
			
		||||
} 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.
 | 
			
		||||
 *
 | 
			
		||||
@@ -41,10 +46,22 @@ void esp_dbg_stubs_init(void);
 | 
			
		||||
 *
 | 
			
		||||
 * @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.
 | 
			
		||||
 *
 | 
			
		||||
 *              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_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_
 | 
			
		||||
 
 | 
			
		||||
@@ -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_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;
 | 
			
		||||
    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));
 | 
			
		||||
@@ -92,4 +93,15 @@ esp_err_t esp_dbg_stub_entry_set(esp_dbg_stub_id_t id, uint32_t entry)
 | 
			
		||||
    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
 | 
			
		||||
 
 | 
			
		||||
 Submodule components/esp_wifi/lib updated: e6945e61f7...045b526641
									
								
							 Submodule components/tinyusb/tinyusb updated: 334e95fac5...c4badd394e
									
								
							
		Reference in New Issue
	
	Block a user