본문으로 건너뛰기

STM32CubeIDE에서 실행 파일 업로드

프로그래머

ST-LINK 정품/호환품을 이용하시면 됩니다. 설정에 따라 UART, USB DFU 등을 사용할 수도 있습니다.

부트 모드

BOOT1BOOT0Boot modeAliasing
X0User Flash memoryUser Flash memory is selected as the boot space
01System memorySystem memory is selected as the boot space
11Embedded SRAMEmbedded SRAM is selected as the boot space
  • User Flash memory: (0x08000000)에서 시작하는 일반적인 부팅입니다. ST-LINK를 사용하면 사용자가 실행 파일을 업로드 할 때, 플래시 메모리에 실행 파일이 다운로드 됩니다. 따라서 첫 번째 옵션으로 부팅한 경우 사용자가 작성한 실행 파일이 바로 실행됩니다.
  • System memory: (0x1FFFF000)에서 시작하는 부팅입니다. 시스템 메모리에는 기본적인 부트로더가 있습니다. 이 부트로더는 업로드에 사용될 통신을 초기화하고 해당 통신이 시작될 때까지 기다립니다. 통신을 통해 사용자가 실행 파일을 업로드하면, 플래시 메모리에 다운로드 됩니다. 보드마다 지원하는 통신 방법이 다양하기 때문에 AN2606 문서를 참고하시기 바랍니다.
  • Embedded SRAM: (0x20000000)에서 시작하는 부팅입니다.

UART

UART로는 플래시 메모리에 실행 파일을 직접 업로드 할 수 없기 때문에, 부트로더의 도움을 받아야 합니다. 부트로더를 사용하기 위해 부트 모드는 System memory를 선택하면 됩니다. 따라서 B1은 GND에 B0는 Vcc에 연결합니다. 실행 파일을 업로드한 뒤에는 부트 모드를 다시 User Flash memory로 바꾼 후, 리셋 버튼을 눌러야합니다.

보드마다 UART 핀이 다르기 때문에 부트로더가 지원하는 통신과 핀을 확인 해야합니다. STM32F103 보드의 경우 UART1을 사용하기 때문에 USBtoUART와 보드의 UART1을 연결하면 됩니다.

JTAG/SWD

JTAG 또는 SWD를 사용하면 플래시 메모리에 실행 파일이 바로 업로드 되기 때문에 부트 모드는 User Flash memory를 선택하면 됩니다. 따라서 B1, B0 모두 GND에 연결합니다.

업로드

STM32CubeIDE

SWD or JTAG

  • Run -> Debug Configurations
  • STM32 Coretex-M C/C++ Application -> <project> Debug
    • main
      • C/C++ Application -> Search Project
        • Binaries: <project>.elf 파일 선택
    • Debugger
      • Debug probe: ST-LINK (ST-LINK GDB server)
      • GDB Server Command Line Options
        • SWD, JTAG 중 선택
        • ✓ ST-Link S/N
          • Scan후 장치 선택
      • Apply
  • Close

설정 후에는 Run -> Run or Debug 또는 Run or Debug(F11) 버튼을 눌러 업로드하고 디버깅하면 됩니다.

STM32Programmer

STM32ProgrammerCLI

장치 확인

PS C:\Users\dev> STM32_Programmer_CLI -l
-------------------------------------------------------------------
STM32CubeProgrammer v2.7.0
-------------------------------------------------------------------

===== DFU Interface =====

No STM32 device in DFU mode connected

===== STLink Interface =====
getSTLinkList
Error: No ST-Link detected!

===== UART Interface =====

Total number of serial ports available: 1

Port: COM4
Location: \\.\COM4
Description: USB Serial Port
Manufacturer: FTDI

업로드

STM32_Programmer_CLI -c port=<PortName> -w <file_path> [<start_address>] -v

옵션은 적은 순서로 진행되기 때문에 순서를 바꾸면 진행이 안될 수 있습니다. 업로드 시 기본적으로 사용되는 것만 옵션으로 적었습니다. STM32_Programmer_CLI -h를 통해 더 많은 옵션을 볼 수 있습니다.

  • -c port=<PortName>
    • <PortName>: 인터페이스 식별자 ex) COM1, /dev/ttyS0, usb1, JTAG, SWD...
  • -w <file_path> [<start_address>]
    • <file_path>: 업로드 파일의 경로 (bin, hex, srec, elf, stm32 or tsv)
    • [<start_address>]: 옵션, 업로드 시작 주소
  • -v: 업로드가 정상적으로 수행되었는지 검사