@@ -208,7 +208,7 @@ static uint8_t *esp_apptrace_trax_down_buffer_get(esp_apptrace_trax_data_t *hw_d
208208static esp_err_t esp_apptrace_trax_down_buffer_put (esp_apptrace_trax_data_t * hw_data , uint8_t * ptr , esp_apptrace_tmo_t * tmo );
209209static bool esp_apptrace_trax_host_is_connected (esp_apptrace_trax_data_t * hw_data );
210210static esp_err_t esp_apptrace_trax_buffer_swap_start (uint32_t curr_block_id );
211- static esp_err_t esp_apptrace_trax_buffer_swap (uint32_t new_block_id );
211+ static esp_err_t esp_apptrace_trax_buffer_swap (uint32_t new_block_id , uint32_t prev_block_len );
212212static esp_err_t esp_apptrace_trax_buffer_swap_end (uint32_t new_block_id , uint32_t prev_block_len );
213213static bool esp_apptrace_trax_host_data_pending (void );
214214
@@ -526,21 +526,21 @@ static esp_err_t esp_apptrace_trax_buffer_swap_end(uint32_t new_block_id, uint32
526526 uint32_t ctrl_reg = eri_read (ESP_APPTRACE_TRAX_CTRL_REG );
527527 uint32_t host_connected = ESP_APPTRACE_TRAX_HOST_CONNECT & ctrl_reg ;
528528
529- /* calculate CRC16 of the already switched block */
530- if (prev_block_len > 0 ) {
531- const uint8_t * prev_block_start = s_trax_blocks [!((new_block_id % 2 ))];
532- uint16_t crc16 = esp_rom_crc16_le (0 , prev_block_start , prev_block_len );
533- eri_write (ESP_APPTRACE_TRAX_CRC16_REG , crc16 | ESP_APPTRACE_CRC_INDICATOR );
534- ESP_APPTRACE_LOGD ("CRC16:%x %d @%x" , crc16 , prev_block_len , prev_block_start );
535- }
536529 eri_write (ESP_APPTRACE_TRAX_CTRL_REG , ESP_APPTRACE_TRAX_BLOCK_ID (new_block_id ) |
537530 host_connected | ESP_APPTRACE_TRAX_BLOCK_LEN (prev_block_len ));
538531 esp_apptrace_trax_buffer_swap_unlock ();
539532 return ESP_OK ;
540533}
541534
542- static esp_err_t esp_apptrace_trax_buffer_swap (uint32_t new_block_id )
535+ static esp_err_t esp_apptrace_trax_buffer_swap (uint32_t new_block_id , uint32_t prev_block_len )
543536{
537+ /* Before switching to the new block, calculate CRC16 of the current block */
538+ if (prev_block_len > 0 ) {
539+ const uint8_t * prev_block_start = s_trax_blocks [!((new_block_id % 2 ))];
540+ uint16_t crc16 = esp_rom_crc16_le (0 , prev_block_start , prev_block_len );
541+ eri_write (ESP_APPTRACE_TRAX_CRC16_REG , crc16 | ESP_APPTRACE_CRC_INDICATOR );
542+ ESP_APPTRACE_LOGD ("CRC16:%x %d @%x" , crc16 , prev_block_len , prev_block_start );
543+ }
544544 esp_apptrace_trax_select_memory_block (new_block_id );
545545 return ESP_OK ;
546546}
0 commit comments