Retargeting printf to SWV

I. Khái niệm

- Serial Wire Viewer tracing (SWV) là một phần của ARM CoreSight Debug Architecture, hoạt động thông qua giao diện Serial Wire Debug (SWD). Nó cho phép vi điều khiển gửi dữ liệu ra ngoài thông qua chân SWO trên MCU

II. Công dụng

- Gửi dữ liệu "trace" từ vi điều khiển lên máy tính, giúp developer xem log, event, giá trị biến, ngắt theo thời gian thực mà không ảnh hưởng đến hiệu năng của chương trình, không bị block

III. Phương thức

- SWV có nhiều kênh dữ liệu để tracing, trong đó phổ biến nhất là ITM (Instrumentation Trace Macrocell)

- Flow data:
  [CPU Core] > [ITM] > [TPIU] > SWO Pin > [Debugger] > [IDE]

- Data sẽ được hiển thị ra SWV Console trong IDE (SWV ITM Data Console)

IV. Example on STM32 cubeIDE

1. Cấu hình sử dụng chân SWO cho MCU



2. Người dùng có thể sử dụng trực tiếp function ITM_SendChar(ch) để gửi data qua SWVNhưng để thuận tiện người dùng có thể gửi data qua lệnh printf(). Để làm được điều này cần retarget lệnh printf() tới  function ITM_SendChar(ch).

3. Gửi data dùng lệnh printf
  

4. Setup SWV trong cấu hình debug của STM32 cube IDE

5. Cấu hình ITM data console



6. Xem log thông qua swv console


Link refer:

Bài chia sẻ đến đây là hết. Chúc các bạn học tập tốt!😎








Đăng nhận xét

0 Nhận xét