본문 바로가기
Stm32/개인 학습

ST LINK V2 & SWD 디버깅[1]

by [Akashic Records] 개발의선지자 2024. 7. 16.

※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할수 있습니다.

    오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다.

ST LINK V2란?

 

ST LINK V2는 STM32와 STM8 제품에 사용 가능한 디버거 겸 프로그래머(다운로더)이다.

JTAG / SWD 인터페이스를 이용해서 STM8 / STM32 프로그래밍 라이팅 및 디버깅 할 수 있다

 

임베디드 디버깅 인터페이스

JTAG(Joint Test Action Group)?

 

디지털 회로에서 디지털 I/O를 위해 직렬 통신 방식으로 출력 데이터를 전송하거나 입력 데이터를 수신하는 방식

대표적인 임베디드 디버거 통신하거나 플래시 메모리에 통합 바이너리 다운로드 인터페이스 방식

 

JTAG 인터페이스

 

1. TDI(Test Data In) : 데이터 입력

2. TDO(Test Data Out) : 데이터 출력

3. TCK(Test Clock) : 클럭 신호

4. TMS(Test Mode Select) : 테스트 모드 선택 제어 신호

5. TRST(Test Reset) : 리셋 신호

6. VCC + GND

 

SWD(Serial Wire Debug)?

SWD는 ARM사의 코어 기반 표준 디버깅 인터페이스 방식

표준 2선 사용

 

SWD 인터페이스

1. SWDIO(Serial Wire Debug I/O) : 단일 양방향 데이터 핀.

2. SWCLK(Serial Wire Clock) : 클럭 신호

3. TRST(Test Reset) : 리셋 신호

4. VCC 또는 Vref + GND

 


 

프로그램 개발이 완료 시 실행이미지가 만들어진다. 프로젝트 익스플로러의 프로젝트 하위 디렉터리에 Binaries라는 디렉터리가 생성. Binaries 디렉터리를 내부를 보면 {프로젝트명}.elf 라는 파일이 생성되어 있다. 

elf란 Executable and Linkable Format의 약자로, 이러한 확장자를 갖는 파일은 실행파일 또는 실행이미지라고 부른다.

이 파일이 STM32 ARM CHIP의 내부 플래시 메모리에 씌여지면 절차에 따라 실행되게 된다.

실행이미지를 플래시 메모리에 쓰는 것을 다운로드(download)라고 부른다.

STM32CubeIDE에는 다운로드를 하는 방법으로 툴바 버튼을 클릭하거나 메뉴바의 Run->Run을 실행한다. 또 한가지 방법으로 디버그 기능을 이용하는 것이다.

STM32CUBEIDE 프로젝트 위쪽 창에 나타나는 기능 아이콘

이름 단축키
Terminate and relaunch - 디버그를 종료한 후 재실행한다.
Resume F8 다음 브레이크 포인트를 만날 때까지 프로그램을 진행한다. 클릭하여 프로그램이 진행되는 동안에 아이콘은 회색으로 변한다.
Suspend - 진행중인 프로그램을 멈춘다. 프로그램 실행중이 아닐 경우에는 회색으로 변한다.
Terminate Ctrl + F2 프로그램을 종료한다. 종료후에는 다시 C/C++ Perspective로 화면구성을 변경한다.
Step Into F5 코드 한 줄씩 실행하되 함수일 경우 그 함수 안으로 들어가 진행한다.
Step Over F6 코드 한 줄씩 진행하며 함수가 있을 경우 한번에 처리하고 다음 줄로 넘어간다.
Step Return F7 현재 함수에서 상위 함수로 리턴한다.

STM32CUBEIDE 프로젝트 우쪽 창에 나타나는 기능 아이콘

종류 역할    
Variables 프로그램의 진행이 멈춰 있는 위치를 기준으로 정의된 변수들과 변수들의 자료형, 저장된 값을 보여준다.    
Breakepoints 사용자가 설정한 브레이크포인트의 리스트를 보여준다.
 
Break point를 사용하려면 해당 코드에 커서를 놓고 F9를 누른다. Break point를 설정한 상태에서 디버깅하게 되면 Break point 커서가 놓여진 코드 전까지 실행한다.
 

   
Expressions 변수 이름을 입력하거나 수행해보고 싶은 명령어를 직접 입력하여 그 결과 값을 관찰할 수 있다. 프로그램이 정지된 시점에서 확인 가능하다.    
Registers 범용 레지스터에 저장된 값을 볼 수 있다.    
Live Expressions 변수 이름을 입력하거나 수행해보고 싶은 명령어를 직접 입력하여 그 결과 값을 관찰할 수 있다. 프로그램이 진행되는 시점에서도 확인 가능하다.    
SFRs 특수목적 레지스터(special function register, SFR)의 값을 볼 수 있다.    

 

다음 포스팅에서는 SWV와 Live Expressions  실제 사용법에 대해 포스팅 예정이다

'Stm32 > 개인 학습' 카테고리의 다른 글

MSR(Magnetic Strip Reader) 프로토콜  (0) 2025.01.02
[PWM] preload register  (0) 2024.12.27
Timer[4] Input capture  (0) 2024.07.14
HAL 라이브러리 SPI 함수 정리  (0) 2024.07.07
HAL 라이브러리 I2C 함수 정리  (0) 2024.07.07