mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-01 18:50:34 +03:00
fix(esp_riscv_trace): Stop the encoder writing past the trace buffer
This commit is contained in:
@@ -31,6 +31,9 @@
|
||||
|
||||
#define ESP_RISCV_TRACE_BUFFER_ALIGNMENT 4
|
||||
|
||||
/* One word is reserved so mem_end_addr can point at the last writable word. */
|
||||
#define ESP_RISCV_TRACE_BUFFER_MIN_SIZE 8
|
||||
|
||||
static const char *TAG = "esp_riscv_trace";
|
||||
|
||||
/* Handles created at startup by esp_riscv_trace_early_init(), one slot per core. */
|
||||
@@ -165,7 +168,8 @@ static esp_err_t validate_trace_config(esp_riscv_trace_core_t core_id, const esp
|
||||
ESP_RETURN_ON_FALSE(ret_handle != NULL, ESP_ERR_INVALID_ARG, TAG, "invalid argument");
|
||||
ESP_RETURN_ON_FALSE((int)core_id >= 0 && (int)core_id < SOC_CPU_CORES_NUM,
|
||||
ESP_ERR_INVALID_ARG, TAG, "invalid core id");
|
||||
ESP_RETURN_ON_FALSE(config->buffer_size != 0, ESP_ERR_INVALID_SIZE, TAG, "trace buffer size is 0");
|
||||
ESP_RETURN_ON_FALSE(config->buffer_size >= ESP_RISCV_TRACE_BUFFER_MIN_SIZE, ESP_ERR_INVALID_SIZE, TAG,
|
||||
"trace buffer must be at least %d bytes", ESP_RISCV_TRACE_BUFFER_MIN_SIZE);
|
||||
ESP_RETURN_ON_FALSE(is_valid_address_mode(config->address_mode), ESP_ERR_INVALID_ARG, TAG, "invalid address mode");
|
||||
ESP_RETURN_ON_FALSE(is_valid_mem_mode(config->mem_mode), ESP_ERR_INVALID_ARG, TAG, "invalid memory mode");
|
||||
ESP_RETURN_ON_FALSE(is_valid_resync_mode(config->resync_mode), ESP_ERR_INVALID_ARG, TAG, "invalid resync mode");
|
||||
@@ -197,7 +201,7 @@ static esp_err_t esp_riscv_trace_new(esp_riscv_trace_core_t core_id, const esp_r
|
||||
riscv_trace_hal_context_t hal_ctx;
|
||||
riscv_trace_hal_config_t hal_config = {
|
||||
.mem_start_addr = (uint32_t)trace_mem,
|
||||
.mem_end_addr = (uint32_t)trace_mem + trace_mem_size,
|
||||
.mem_end_addr = (uint32_t)trace_mem + trace_mem_size - sizeof(uint32_t),
|
||||
.full_address = (config->address_mode == ESP_RISCV_TRACE_ADDR_FULL),
|
||||
.mem_loop = (config->mem_mode == ESP_RISCV_TRACE_MEM_LOOP),
|
||||
.auto_restart = config->auto_restart,
|
||||
|
||||
Reference in New Issue
Block a user