한국어
Embedded
 

MCU STM32(Cortex-M3) 개발 - Firmware Flashing

makersweb 2019.07.23 19:39 조회 수 : 3160

STM32 MCU를 개발할때 컴파일된 펌웨어(바이너리)를 MCU에 Flashing하는 방법을 설명한다.

 

설명에 사용된 Board는 STM32F103RE가 장착된 (알리에서 적당한 가격에 주문한) 개발용 보드이다.

 

개발시 JTAG장비가 없더라도 ST에서 제공하는 Flash loader demonstrator 프로그램과 USB to Serial 을 이용하면 MCU에 프로그램을 다운로드할 수 있다.

 

Flash loader demonstrator는 ST 홈페이지를 방문하면 무료로 다운로드 받을 수 있다.

https://www.st.com/en/development-tools/flasher-stm32.html

 

펌웨어를 Flashing 하기전에 STM32의 Boot Mode를 알아야한다. STM32F10xxx에서는 다음과 같이 BOOT[1:0] 핀을 통해 3가지 부팅 모드를 선택할 수 있다. 

BootModes.png

 

여기서 중요한 모드는 두가지인데 Main Flash memory는 개발자가 Flashing한 프로그램으로 부팅하는 모드이고, System memory는 MCU에 내장된 부트로더로 부팅한다. 그래서 컴파일된 바이너리를 다운로드하려면 두번째 System memory로 부팅된 상태에서 가능하다. 일반적으로 개발시 BOOT1은 LOW로 고정하고 BOOT0을 스위칭하여 설정하면된다.

 

아래 사진은 필자의 보드인데 부팅 모드를 설정하고 USB to Serial을 연결하였다.

photo_2019-07-23_19-51-01.jpg

 

보드에 전원인가후 호스트에서 Flash loader demonstrator프로그램을 실행한다. 

COM Port 및 Baud Rate등을 설정하고 Next를 클릭한다. 만약 Next가 안되면 보드를 리셋해서 다시 시도해본다.

FLD_000.png

 

Next를 클릭한다.

FLD_0001.png

 

중요한 화면인데 자신의 MCU와 정확한 타겟을 선택한다.

FLD_0002.png

 

화살표 표시된 버튼을 클릭하여 바이너리(bin)파일을 선택한다.

FLD_001.png

 

이제 Next를 선택한다.

한가지 팁으로 Jump to the user program을 선택하면 다운로드 후 프로그램이 바로 실행된다.

FLD_003.png

 

프로그램(바이너리) 다운로드가 진행되고 성공하면 다음과 같은 화면이 보일것이다.

보드의 부트모드를 Main Flash memory로 설정하고 리셋하면 다운로드한 프로그램이 실행된다.

FLD_004.png

번호 제목 글쓴이 날짜 조회 수
52 GNU C 레퍼런스 메뉴얼 - 부록 D secret makersweb 2014.02.28 5
51 Rockchip VOP makersweb 2024.04.22 62
50 Raspberry Pi 와 ATtiny85 간 I²C 통신 file makersweb 2023.03.18 435
49 ATtiny85 개발보드(HW-260) file makersweb 2023.01.02 448
48 Raspberry Pi에서 I²C 그리고 Bit-bang (비트뱅) makersweb 2023.08.27 475
47 로직분석기와 함께 PulseView 를 사용해서 CAN 신호 캡쳐 file makersweb 2023.03.16 614
46 mainline 커널 및 etnaviv 를 사용하는 Wandboard(Freescale i.MX6Q)에서 eglfs를 사용 makersweb 2019.10.17 936
45 임베디드 비대칭 멀티 프로세싱(asymmetric multiprocessing) 시스템 file makersweb 2019.12.31 939
44 Yocto 프로젝트 3.4 릴리스(honister) 이상 버전으로 마이그레이션 시 참고 사항 makersweb 2023.03.21 940
43 Android 기기를 사용하여 Raspberry Pi SD 카드 작성 방법 file makersweb 2020.08.01 986
42 RISC-V : 자유롭고 개방 된 RISC 명령어 세트 아키텍처 [2] file makersweb 2020.01.01 1013
41 libopencm3 활용, Cortex-M 펌웨어 개발 makersweb 2019.07.14 1080
40 임베디드 개발자를 위한 Hex,Bin,Dec 변환기 유틸 file makersweb 2023.02.27 1119
39 라즈베리파이2에서 RTOS기반 GPIO제어(LED) file makersweb 2020.04.21 1631
38 라즈베리파이 부팅 가능한 sd카드 파티션 생성 makersweb 2020.04.15 1705
37 POSIX를 지원하는 오픈소스 RTOS, RTEMS file makersweb 2020.04.15 1716
36 Raspberry Pi 의 프레임버퍼(Framebuffer)구성 makersweb 2020.05.15 1814
35 STM32(Cortex-M3) LED Blink with PlatformIO file makersweb 2019.08.05 2039
34 Yocto를 이용한 wandboard BSP 및 Qt5 SDK 빌드 file makersweb 2019.09.29 2618
33 욕토 프로젝트를 이용한 Qt SDK 빌드 for 라즈베리파이3 file makersweb 2019.03.19 3061