3. 0부터 시작하는 펌웨어 개발-프로젝트 구성 및 디바이스 드라이버 작성 준비하기 (with STM32, B-L475E-IOT01A1)

728x90
반응형

지난 포스팅에서 개발준비를 모두 마쳤다. 그럼 이제 본격적으로 STM32에 대해 알아보려고 한다. 본 포스팅은 내가 개인적으로 펌웨어 개발에서 추구하는 방향이므로 정답은 아니고 하나의 방법으로 바라봐 주길 바란다.
 
생성된 프로젝트의 구조를 살펴보면

Src에는 STM32CubeIDE에서 프로젝트를 생성하면 자동으로 만들어지는 파일이 있다. main.c와 syscalls.c 그리고 sysmem.c 파일이다. main.c를 제외한 .c 파이은 당분간 사용할 일이 없을 것 같다. 
 
바로아래는 startup_stm32l475vgtx.s 파일로 보통 Startup 파일이라고 부른다. 모든 MCU에 이와 같은 Startup 파일이 있다. 여기서 MCU의 메모리, 프로그램의 시작위치등에 관한 코드를 작성하면 되는데 일반적으로 제조사에서 제공한다. 직접 어셈이나 C로 작성해도 되지만 제조사에서 제공하는 것을 사용하고 어떤 부분을 수정해야 하는지 알고 있으면 될 것 같다. 맨 아래 보이는 STM32L475VGTX_FLASH.ld, STM32L475VGTX_RAM.ld 파일은 메모리와 관련된 파일이다. 이것도 제조사에서 제공하고, 어떤 부분을 수정해야 하는지만 알고 있으면 된다. 
 
먼저 startup 파일먼저 확인해 보자.
 
 
 
 
 
응??? 이건 뭐지????... 이 부분은 ARM의 매뉴얼을 확인해야 한다. 자세한 분석은 나중에 해보도록 하고, 여기서는 MCU가 Reset 된 이후 SystemInit함수가 호출된다는 사실만 기억하자.  
 

 
아래와 같이 구성해 보자. SystemInit함수에서 MCU 관련 레지스터를 모두 초기화하고 main 함수로 이동한다. 
 

 
SystemInit 함수 안에 while(1) 코드를 넣고 디버깅을 돌리면 위에서 보이는 코드에서 멈춰있는 걸 확인할 수 있다. 일시정지 버튼을 눌러보면 SystemInit함수 안에서 브레이크가 걸리는 걸 확인할 수 있다.
 
 
프로젝트의 폴더 구조를 만들어보자. 폴더 구조는 아래와 같이 구성한다. 

폴더 아이콘을 보면 아주 작게 "C"라고 적혀있는 폴더가 보이고 모양이 없는 폴더가 보인다. 소스코드 파일이 있는 폴더는 반드시 "C" 모양이 있는 폴더로 생성을 해줘야 한다. 생성하는 방법은 프로젝트를 선택하고 마우스 우클릭 "Source folder"를 클릭해 폴더를 생성하면 된다. 다른 폴더는 그냥 Folder를 선택해서 폴더를 생성한다. 

 
이렇게 Source Folder를 생성했으면 source 경로를 설정해 줘야 한다. 프로젝트 설정으로 들어간 다음 C/C++ General -> Path and Symbol -> Source 항목에서 Add Folder를 클릭해서 추가해 주면 된다. 
 

 
여기까지 설정하고 Build 하면 정상적으로 빌드되는 걸 확인할 수 있다. 여기까지 하면 프로젝트 생성 및 설정은 끝이다. 
 
다른 MCU를 사용하더라도 이 내용은 거의 대부분 동일하다. 다음 포스팅에서는 MCU 동작에 가장 핵심적인 Clock 설정을 해보도록 하겠다. 
 

- 끝 -

728x90
반응형