우분투 STM32 개발환경

아래 블로그의 리눅스에서 STM32F4 개발환경 구성 포스팅을 참고하였으며, 우분투 20.04 버전에서 필요한 패키지 및 라이브러리 설치를 정리하였다.

 

Blink for stm32f4-discovery board on Linux with Makefile

I was inspired by this great post by Ross Wolin to make (yet) another blink tutorial for the stm32f4-discovery board on Linux. Ross Wolin did a great job writting makefiles for the peripheral libra…

liviube.wordpress.com

우분투에서 STM32F4 개발환경을 구성하기 위해 아래의 필수 패키지 및 라이브러리를 설치한다.

$ sudo apt install build-essential gcc-arm-none-eabi libusb-1.0-0-dev cmake

STM32 arm toolchain 및 ST-Link 빌드에 필요한 라이브러리를 설치한 후, ST-Link는 git에서 다운받아 빌드한다.

$ git clone https://github.com/stlink-org/stlink .
$ cmake .
$ make

ST-Link가 정상적으로 빌드되면 bin 디렉토리에 유틸리티가 생성되며, 생성된 유틸리티를 /usr/local/bin 디렉토리와 같은 실행 PATH가 설정된 적당한 경로에 복사하도록 한다. 그리고 생성된 공유라이브러리를 /lib32 디렉토리에 복사해야 한다. 그리고 config 디렉토리에 있는 udev rule 파일도 /etc/udev/rules.d 디렉토리에 복사하도록 한다.

sudo cp bin/* /usr/local/bin
sudo cp lib/*.so* /lib32
sudo cp config/udev/rules.d/49-stlinkv* /etc/udev/rules.d/

위 과정이 정상적으로 완료되었다면, 아래 이미지와 같이 우분투 환경에서 lsusb 명령어를 사용하여 ST-Link가 연결된 것을 확인할 수 있다.

Host PC에서 STM32F4가 연결된 상태에서 ST-Link 유틸리티를 사용하여 타겟보드의 정보를 읽어올 수 있으며, 플래시 데이터를 덤프할 수 있다.

내가 갖고 있는 STM32F407를 1MB 플래시에 192K SDRAM을 갖고 있는 것을 확인할 수 있으며, 특정 크기의 플래시 한 블럭의 데이터를 덤프할 수 있다.

 

ST는 Discovery 데모보드에 STM32 Peripheral를 위한 테스트 코드를 제공하고 있으며, 아래 링크에서 다운받을 수 있다.

 

STSW-STM32068 - STMicroelectronics

STSW-STM32068 - STM32F4DISCOVERY board firmware package, including 22 examples (covering USB Host, audio, MEMS accelerometer and microphone) (AN3983), STSW-STM32068, STMicroelectronics

www.st.com

이 테스트코드는 TrueStudio에서 작성된 것으로 보이며, 이 테스트 코드를 빌드하기 위한 Makefile이 제공되지 않아 아래의 github에서 Led blink 검증하는 테스트를 받도록 한다.

$ git clone https://github.com/Malkavian/tuts.git

그리고 ST에서 받은 STSW-STM32068 압축파일을 풀어 적당한 위치에 복사하도록 한다. 여기에 있는 테스트 코드는 빌드하지 않지만, github에서 받은 코드를 실행하기 위해서는 STSW-STM32068 압축파일의 라이브러리는 사용해야 한다.

 

STSW-STM32068 압축파일을 /media/gon/data/proj/STM32/STM32F4-Discovery_FW_V1.1.0 경로에 압축을 해제하도록 한다. 이 경로는 github에서 받은 tuts/stm/blinky 테스트 코드의 makefile에서 사용한다.

 

tuts/stm/blinky/Makefile에서 STM_DIR과 TOOLS_DIR 경로를 다음과 같이 변경하도록 한다. 참고로 우분투 20.04 버전에서 arm-gcc-none-eabi 설치할 경우 /usr/bin에 설치된다.

...
# This is the directory containing the firmware package,
# the unzipped folder downloaded from here:
# http://www.st.com/web/en/catalog/tools/PF257904
#STM_DIR=../STM32F4-Discovery_FW_V1.1.0
STM_DIR=/media/gon/data/proj/STM32/STM32F4-Discovery_FW_V1.1.0
...

# This is the path to the toolchain
# (we don't put our toolchain on $PATH to keep the system clean)
#TOOLS_DIR = /opt/gcc-arm-embedded/gcc-arm-none-eabi-4_7-2013q1/bin
TOOLS_DIR = /usr/bin

이제 github에서 받은 tuts/stm/blinky 테스트 코드를 아래와 같이 빌드 및 펌웨어를 데모보드에 write 하도록 한다.

$ make
$ make flash

빌드 및 데모 보드의 write 결과는 아래 이미지와 같으며, blinky.bin 파일을 데모 보드의 main 영역에 기록되는 것을 확인할 수 있다.

위 테스트 코드를 데모 보드에 올리면 Green -> Orange -> Red -> Blue -> All Led blink (4번) 실행된다.

 

이 글은 윈도우가 아닌 우분투 환경에서 STM32 개발환경을 구성하고 테스트 코드를 빌드 및 데모 보드에 다운로드 및 실행까지 간단히 확인하였다. ST는 STM32 CubeIDE를 제공하여 개발 편의성을 높이기 때문에 이것을 우분투에 설치할 예정이다.