STM32F4xx with Linux

리눅스 환경에서 STM32F4xx 보드의 개발환경을 설정하는 튜토리얼

OS : Linux Mint 17.3 (Based on Ubuntu 14.04)
Target : Nucleo STM32F401RE

아래의 환경설정이 필요하다.


  • libusb-1.0.0-dev
  • Eclipse with SW4STM32 plug-in
  • St-link source code for compile

내가 사용하는 보드는 St-link v2–1 가 On-board 되어 있다.
리눅스에서 버그없이 사용하기 위해 St-link v2–1 펌웨어를 최신으로 업그레이드한다. (검색 필요)


$ sudo apt-get install libusb-1.0.0-dev

소프트웨어 패키지를 이용해 libusb-1.0.0-dev 를 설치한다.


udev에 St-link v2–1에 대한 정보를 추가하기 위해 펌웨어에서 최신버전을 가져오도록 한다.

위 링크로 접속하여 STSW-LINK007 를 다운받는다.
압축을 해제하고 AllPlatforms/StlinkRulesFilesForLinux 로 이동하면 rules 파일 2개가 존재하는데 /etc/udev/rules.d/ 에 복사한다.

$ sudo udevadm control --reload-rules

위 명령어를 이용하여 udev 규칙을 갱신시킨다.


STM32 chip에 데이터를 write 하기 위해 texane 씨의 stlink를 이용한다.

위 링크는 stlink를 컴파일하기 위한 필요 패키지이다, 해당 패키지를 설치했다고 가정한다.

$ git clone https://github.com/texane/stlink.git
$ cd stlink
$ ./autogen.sh
$ ./configure
$ make

컴파일이 완료되고, stlink 폴더내에 st-flash, st-info, st-term, st-util 이 생성된다.

보드를 인식하는지 테스트해보자.

$ ./st-info --probe
Found 1 stlink programmers

Flash에서 데이터도 덤프해보자.

$ ./st-flash read ~/DUMP_FROM_STM32.bin 0x8000000

이제 Eclipse와 SW4STM32 plug-in을 설치한다.

http://www.openstm32.org/Installing+System+Workbench+for+STM32+from+Eclipse?structure=Documentation

위 링크로 접속하여 Installation 만 따라한다. (로그인 필요)
위 과정이 끝나고 나면 우린 write 할 수 있는 st-flash와 컴파일을 할 수 있는 Eclipse with SW4STM32를 가지고 있다.

http://www.openstm32.org/Getting+started+with+System+Workbench+for+STM32?structure=Documentation

위 링크를 참조하여 코드를 작성하고 빌드까지 해서 elf, bin 파일이 생성되는지 확인한다.


st-flash 를 이용해 write를 해보자, 내 개발환경과 보드가 …

  • hello.bin is in ${WORKS_DIR}/Debug/
  • Writing address is 0x8000000

아래 처럼 flag를 작성한다.

$ ./st-flash write ${WORKS_DIR}/Debug/hello.bin 0x8000000

결과는…

2016-07-06T22:38:17 INFO src/common.c: Loading device parameters....
...
2016-07-06T22:38:17 INFO src/common.c: Attempting to write 3020 (0xbcc) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08000000 erased
...
enabling 32-bit flash writes
size: 3020
...
2016-07-06T22:38:17 INFO src/common.c: Flash written and verified! jolly good!

완료 되었고, 보드에서 확인해보자!

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.