본문 바로가기

MCU/STM32

[STM32] VS-Code를 이용한 Cortex 개발 환경 잡기 -3

 

이전 포스팅에 이어, 컴파일을 위한 MakeFile을 수정 해 보도록 하겠다.

먼저, Open-OCD를 이용한 디버깅이 가능하도록 아래와 같이 MakeFile을 수정 해 준다.

먼저 inerface, target의 경로는 설치된 OpenOcd 내 Share 폴더에 위치 해 있다.

구문은 위 빨간 박스처럼 그대로 선언 하면 되며, MCU 라인업에따라 target만 변경 해 주면 된다.

(target 폴더내에서 이름 일치하는걸로 선언 해 주면 끝)

 

다음으로는 .s파일을 .c로 수정해 줘야 한다.(여기서부턴 노가다 시작이다..)

아래와 같이 .s를 복사하여 붙여 넣기 한 다음, .c 포맷으로 확장자를 변경 한다.

 

아래와 같이 필요한 부분을 제외하고 삭제 처리한다.

(1) 변수 extern 선언 ( 메모리 섹션 구분자)

변경 전
변경 후

(2) Reset Handler 함수 작성

Reset Handler

(3) Default Handler 및 System Tick Handler 작성

 

(4) interrupt vector table 선언

.s파일에서 g_pfnVectors:로 선언된 부분이 있다.

이 아래 부분을 수정해 준다. (.word 로 선언 되어 있는 부분) 

변경 전 

 Interrupt vector table을 만들었으면, 테이블에 선언된 함수들의 원형을 아래와 같이 선언 해 준다.

Interrupt function 

일부만 캡쳐 했으며, 사진만으로 이해가 잘 가지 않는 경우, 첨부된 파일을 참고하면 된다.

startup_stm32h743xx.c
0.02MB

 

(5) 기본 생성 interrupt handler 삭제

stm32h7xx.c 파일에서 모든 인터럽트에 대한 함수를 만들어 줬으므로,

STM32CubeMx에서 자동으로 생성해주는 인터럽트 함수들을 지워줘야 정상 동작이 가능하다.

<중요>stm32h7xx_it.c 내부에 만들어져 있는 인터럽트 핸들러를 모두 지워준다.!<중요>

(6) Makefile 수정

이제 인터럽트 function들에 대한 정리가 끝났다면, 이 파일을 컴파일 할 수 있도록 

MakeFile에 추가 해 줘야 한다.

왼쪽 : 변경 전, 오른쪽 : 변경 후

앞으로, 새로 생성 한 .c 파일들은 MakeFile 내 위와같이 선언 해 줘야 컴파일이 정상적으로 수행 된다.

 

이제 모든 절차가 끝났다.

컴파일이 정상적으로 되는지 해볼 차례~

위와 같이 터미널에서 make 명령어만 치면 정상적으로 빌드가 되는 모습을 볼 수있다.

성공적인 Build 결과!

만약에 build와 함께 stm32 target에 업로드까지 한번에 하고 싶다면,

make flash 명령어를 치면 된다.

ST Link가 정상적으로 PC에 연결이 되어 있다면, 위와 같이 upload 완료 후, verify OK가 출력 된다.

 

Upload가 완료되었으면, Open-OCD가 제대로 동작하는지 확인해 보자.

Ctrl + Shift + D 를 누르면, 디버깅 화면으로 이동한다.

여기어 아래의 Cortex Debug화살표를 누르면 디버깅을 할 수 있다.

 

아래와 같이 SystemTick_Handler에 Break Point 설정 했을 때,

break가 걸리면 정상적으로 모든 셋팅이 완료 되고 동작한다는 것을 알 수있다.

위 환경셋팅은 초기에 c파일 설정등 잡아주어야 하는 부분이 많지만,

한번 설정 하고나면 이후 개발과 업로딩이 다른방법보다 월등히 편하다.

(코딩 완료 후, 터미널에 make flash 9단어만 치면 결과물을 바로 볼 수 있다.)

 

이제 모든 환경 설정이 끝났으니~

다음엔 직접 만들어보는 간단한 스케쥴러에 대해 포스팅 하도록 하겠다~!