잡담시작, 읽기 귀찮으신 분은 스크롤을 아래로...
이전 포스팅 까지는 ST에서 제공하는 개발환경(STM32CubeMX)과 BSP(Board Support Package)를 이용해서 B-L475E-IOT01A1에 부착된 센서들을 동작을 확인해 보았다. 여기까지는 정말 초보자도 쉽게 따라 할 수 있다. 하지만 실무에서는 이와 같은 방법을 사용하지 않는다. 물론 일부 사용하는 곳도 있겠지만..^^
이번 포스팅부터는 STM32CubeMX에서 제공하는 코드를 사용하지 않고 정말 맨바닥부터 펌웨어 개발을 하는 방법에 대해 알아보고자 한다. 진짜 정말 맨바닥부터!
이번 포스팅에서 사용할 보드도 B-L475E-IOT1A1이다. 어쩌다 보니 이 보드를 계속해서 사용하는데 이유는 여러 가지 센서와 무선통신 모듈이 붙어있어서 별도의 회로 구성없이 많은 기능을 테스트해 볼 수 있기 때문이다. 사실 어느 정도 수준에 올라오게 되면 개발보드, MCU 종류에 구분 없이 대부분 사용이 가능하다. 소형차를 타다가 대형차를 타도 익숙해지기만 한다면 운전이 가능하고, 현기차를 타다가 벤츠, 포르쉐를 타도 익숙해지기만 하면 운전이 가능한 것과 비슷한 이치다.
그럼 펌웨어 개발을 시작하려면 뭐부터 해야 할까? (당연히 C언어는 가능하다는 전제하에...)
가장 먼저 MCU를 선정해야 한다. 그리고 개발환경을 어떻게 구성할 것인지 선택해야 하는데 가장 쉽고 빠른 방법은 MCU 제조사에서 제공하는 IDE를 사용하거나 상용으로 판매하는 IAR이나 Keil을 구매해 사용하는 것이다.(최근 Keil에서 비영리목적으로 사용하는 한도 내에서 Community 버전을 출시했다. 상용으로 판매하는 essential 버전과 동일한 기능을 사용할 수 있다.) IDE는 크로스 컴파일러와 코딩이 가능한 텍스트 에디터 그리고 MCU 디버깅이 가능한 디버거까지 포함한 것을 말한다. 최근에 MCU를 이용한 임베디드, 펌웨어 개발은 100% IDE를 이용해 개발한다고 해도 무방하다.
본 포스팅에서는 ST에서 제공하는 IDE인 STM32CubeIDE를 사용하도록 하겠다!
IDE설치 과정은 본 포스팅 카테고리에 자세히 작성해 놨기 때문에 여기서는 생략하고 진행하도록 하겠다.
STM32CubeIDE를 실행하고 좌측 Project Explorer에서 Create a New STM32 project를 선택한다.
아래와 같은 화면에서 좌측에 Commercial Part Number에 MCU모델명을 입력한다. 여기서는 STM32L475VGT6을 입력. 다른 MCU라면 해당 모델명을 입력하면 된다. 중앙에 나온 MCU를 선택하고 우측하단에 Next 클
프로젝트 이름을 입력하고 프로젝트가 저장된 경로를 확인한다. 여기서 Use default location체크를 해제하면 원하는 경로에 프로젝트를 저장할 수 있다.
Options에서 맨 마지막 Targeted Project Type에서 Empty를 선택하고 Finish를 누르면 프로젝트 생성 끝! STM32Cube를 선택하면 CubeMX 프로젝트가 생성되고 설정화면으로 넘어가게 된다.
프로젝트가 생성되면 좌측에 아래 그림과 같이 보인다.
사실 정말 맨바닥부터 시작하려면 Startup.s, .ld 파일 작성부터 시작해야 하지만 이건 어셈과 링커파일 작성에 관한 내용을 알아야 하기 때문에 시간이 오래걸리고 제조사에서 제공하기 때문에 굳이 직접 작성할 필요는 없다. 하지만 어떤 내용이 있고, 어떤기능을 해야하는지 알아야하기 떄문에 나중에 알아보도록 하겠다.
이번포스팅은 여기서 끝!
이 프로젝트에서 라이브러리 없이 펌웨어를 작성해 보도록 하겠다.