STM32 개발 도구 - STM32CubeProgrammer

요즘 IoT에 많이 사용하는 STM32 MCU의 데모보드가 생겨 우분투에서 가지고 놀다보니, 이클립스 기반의 STM32 개발 도구인 STM32CubeIDE가 무겁고 손에 익지 않아 Visual Studio Code으로 코딩 및 디버깅을 하려고 했지만, 개발환경을 구성하는 것이 쉽지 않았다.

 

회사 업무로 개발을 한다면 여러 사람이 함께 개발하기 때문에 보다 나은 개발환경을 서로 구성해서 공유하지만, 혼자 공부하면서 개발을 하다보니, 어떤 개발도구를 많이 사용하는지 어떻게 개발환경을 구성해야 효율적으로 구성하는 것인지를 빠른 시간에 알아가기 힘들다. 그래서 블로그에 STM32 관련 스킬이나 팁을 알게되면 하나씩 정리하고 있다.

 

이번 포스티에서 소개할  STM32CubeProgrammer는 ST에서 제공하는 개발도구로써 멀티 플랫폼을 지원하며, Flash, RAM, OTP등을 RW가 가능하며, STM32WB 모델은 OTA 프로그래밍도 지원한다고 설명하고 있다.

 

ST의 최신 다중-OS 소프트웨어 툴, STM32 프로그래밍 간소화 및 펌웨어 IP 보호 지원 - STMicroelectronics

ST의 최신 다중-OS 소프트웨어 툴, STM32 프로그래밍 간소화 및 펌웨어 IP 보호 지원 2019/07/10 08:40 다양한 전자 애플리케이션과 고객들을 지원하는 세계적인 반도체 회사인 ST마이크로일렉트로닉스(S

www.st.com

STM32CubeProgrammer는 ST가 무료로 제공하고 있으며, 다양한 OS 버전을 지원하고 있다. 우분투를 사용하고 있기 때문에 우분투 버전을 다운받아 설치하였다.

 

STM32CubeProg - STMicroelectronics

STM32CubeProg - STM32CubeProgrammer software for all STM32, STM32CubePrg-W32, STM32CubePrg-W64, STM32CubePrg-Lin, STM32CubePrg-Mac, STMicroelectronics

www.st.com

압축을 풀면 install 파일이 생성되며 사용자 계정으로도 설치가 가능하나, sudo 명령어를 사용하여 설치하였다.

$ unzip en.stm32cubeprg-lin_v2-6-0.zip
$ cd en.stm32cubeprg-lin_v2-6-0
$ sudo ./SetupSTM32CubeProgrammer-2.6.0.linux

STM32CubeProgrammer는 GUI / CLI 환경을 제공하고 있으며, STM32CubeProgrammer를 실행하면 아래와 같은 화면을 확인할 수 있다. ST-Link를 사용하여 STM32 보드에 연결하여 각 메모리를 읽거나 쓸 수 있다.

STM32CubeProgrammer는 bin, elf, hex 파일을 모두 사용할 수 있으나, 파일 타입에 따라 메모리 주소가 틀려지는 것을 확인할 수 있다.

 

STM32CubeProgrammer는 CLI 환경도 제공하지만, elf 및 hex 파일만 플래시에 다운로드가 가능하다. CLI 명령어를 어디서든 실행할 수 있도록 아래와 같이 사용자 계정에 PATH를 추가하도록 한다.

$ vi ~/.bashrc

...
export PATH=/opt/st/STM32CubeProgrammer/bin:$PATH

그리고, elf 파일이 있는 위치에서 아래의 명령어를 실행하면 CLI 환경에서 STM32 데모보드의 플래시에 이미지를 다운로드를 할 수 있다.

$ STM32_Programmer_CLI -c port=SWD -w Uart2ByEXTI.elf -v -ob displ -rst

이렇게 위와 같이 매번 입력하는 것이 불편하기 때문에 아래와 같이 스크립트를 만들어 STM32Prg <elf file_name>입력하여 사용하도록 하였다.

$ sudo vi /opt/st/STM32CubeProgrammer/bin/STM32Prg
#!/bin/sh

STM32_Programmer_CLI -c port=SWD -w $1.elf -v -ob displ -rst
$ sudo chmod 755 /opt/st/STM32CubeProgrammer/bin/STM32Prg

위와 같이 설정이 완료하였다면, 아래 이미지와 같이 CLI 환경에서 플래시에 이미지를 간단하게 다운로드 할 수 있다.

이것을 바탕으로 STM32CubeIDE가 아닌 STM32CubeProgrammer & Visual Studio Code를 사용하여 STM32CubeIDE 보다 가볍고 빠른 개발환경을 구성하여 사용하였다.

 

약간의 트릭을 사용하여 CLI 환경에서 GDB-Server도 사용이 가능하다. 이것은 다음 포스팅에서 정리할 예정이다.