一、什麼是coresight?
coresight是一種調試技術,其目標是為了幫助工程師檢測和解決ARM微處理器之中的問題。coresight技術集成在處理器內部,可以從處理器中取出信息並進行調試。coresight技術主要分為兩個部分:一個是組成coresight的內核組件,在處理器內部與其他組件交互;另一個是調試的外圍設備,與外部設備(如PC)交互。
ARM內部調試技術是允許調試系統中不同處理器之間的介面和信號,藉助於內部調試介面(coresight)以及通過調試介面使用的擴展設備可以完成高效,靈活以及用於測試的實時調試任務。其是建立在交叉開發、軟體調試以及嵌入式模塊之上的。
二、coresight組件部分
組成coresight的內核組件分為基本內核和擴展內核。基本內核由送信模塊,接收模塊和控制模塊組成。在ARMv7處理器中,擴展內核中一共可組成了20個中斷源,包括觀察點中斷(Opcode)和遠程地方中斷(RDI);在ARMv8處理器中,尤其有了幾個新組件。
三、coresight外圍設備部分
為了與外部設備(如PC)交互,coresight需要使用外圍設備。例如,ARM提供了AXI匯流排訪問埠(APB)來管理外設內部的寄存器。通過這些IO埠,工程師可以控制、監測處理器系統內部各部分信息的流通。coresight還可以配置ETM(替換高於50%)以及利用指令跟蹤器,組成更為複雜的調試系統。
四、coresight功能實現
在一個具有coresight功能的處理器上,工程師可以使用JTAG或SWD調試介面與處理器交互。在運行時,可以在處理器內部插入觀察點或代碼斷點。這些觀察點會在代碼的執行過程中產生一個中斷,調試器則會停下來讓工程師瀏覽觀察點並調整代碼。
五、coresight使用示例
實際上,coresight可以用於各種目的。例如,它可以用於驗證硬體和軟體之間的通信,檢測並解決晶元中的故障,為軟體開發人員提供實時支持。例如,在指令跟蹤器的幫助下,工程師可以快速定位代碼中的性能問題。
#ifndef __CMSIS_CGENERIC_H__
#define __CMSIS_CGENERIC_H__
#ifdef __cplusplus
extern "C" {
#endif
#include
/* CM Language Extensions */
#if !defined(__CORTEX_M)
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
#define __CORTEX_M ( 0U)
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 5100000)
#define __CORTEX_M ( 0U)
#elif defined(__GNUC__)
#define __CORTEX_M ( 0U)
#endif
#endif
/* Macros that are used for CMSIS driver compatibility */
#define ARM_MATH_CM0 (0U) /*!< Define for Cortex-M0 device */
#define ARM_MATH_CM0PLUS (1U) /*!< Define for Cortex-M0+ device */
#define ARM_MATH_CM1 (2U) /*!< Define for Cortex-M1 device */
#define ARM_MATH_CM3 (3U) /*!< Define for Cortex-M3 device */
#define ARM_MATH_CM4 (4U) /*!< Define for Cortex-M4 device */
#define ARM_MATH_CM7 (5U) /*!< Define for Cortex-M7 device */
#ifdef __cplusplus
}
#endif
#endif /* __CMSIS_CGENERIC_H__ */
六、結論
總的來說,coresight技術是附帶在ARM處理器中的集成式調試技術,它本身只能用於調試、測試和故障排除。通過這種技術,ARM開發人員可以更輕鬆的調試問題,提高軟體質量。同時,coresight技術也為調試處理器系統提供了一種新的方式,使得系統內的各個部分都能夠被快速的調試和測試。此外,開發人員還可以根據各自需求來利用coresight,實現自己的調試功能。
原創文章,作者:CSTZG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372902.html