• STM32WB55 SoC에서 BLE, Thread, MAC 802.15.4 를 사용하기 위해선 M0+ CPU에 사용할 통신 방법에 맞는 Wireless Stack 펌웨어가 업로드 되어 있어야 한다 (Nordic nRF 칩셋에서 SoftDevice 같은 역할)
  • 펌웨어 업로드 방법 및 펌웨어에 대한 설명은 STM32Cube의 Repository 폴더내에 저장되어있다
  • 기본 설치 위치
  • C:/Users/사용자명/STM32Cube/Repository/STM32Cube_FW_WB_V1.2.0/Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html
  • STM32Cube_FW_WB_V1.2.0 - 펌웨어 버전에 따라 V.1.2.0이 아닌 다른 표기가 올 수 있음 (19/10/16 기준 1.2.0)

[펌웨어 업로드 과정]

  • STM32Cube\Repository\STM32Cube_FW_WB_V1.2.0\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_Proximity 예제 사용을 전제로 이에 필요한 stm32wb5x_BLE_Stack_fw.bin 펌웨어를 업로드하는 과정

1. STM32CubeProgrammer 프로그램 설치

 - https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stm32cubeprog.html

 

STM32CubeProg - STMicroelectronics

STM32CubeProg - STM32CubeProgrammer software for programming STM32 products, STM32CubeProg, STMicroelectronics

www.st.com

2. Command Line Interface (CLI) mode 사용하기 위한 설정

(명령 프롬프트에서 STM32_Programmer_CLI.exe 사용하기 위한 과정)

- STM32CubeProgrammer 기본 설치 위치

C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\

- STM32CubeProgrammer 폴더 내에 STM32_Programmer_CLI.exe 가 위치해있는 bin 폴더를 추가

 

3. 부트로더 USB 인터페이스 액세스

* Nucleo 보드

- Boot0(CN7.7) 핀을 VDD(CN7.5)에 연결하는 것으로 부트모드 설정

- BOOT0과 VDD 핀을 점퍼 케이블 등을 이용해 연결

- JP1 5V soruces의 점퍼핀을 USB MCU에 꽂고 컴퓨터와 연결된 USB 케이블을 USB_USER 커넥터에 연결

* USB-Dongle

- 스위치를 BOOT0 방향으로 이동

 

4. 현재 M0+ CPU에 저장되어 있는 Wireless Stack 펌웨어 삭제

- 명령 프롬프트 or 윈도우 파워쉘 실행

 

* 명령 프롬프트 실행

- 시작버튼 우클릭 > 실행 (or 윈도우 펑션키 + r)

명령 프롬프트 실행
명령 프롬프트 실행 결과

- CD 명령어 + 무선 펌웨어가 저장되어 있는 폴더 경로를 복사 붙여넣기한 후 실행해 폴더 위치 이동


* 윈도우 파워쉘 실행

- Wireless 펌웨어가 저장되어있는 폴더로 이동 (STM32Cube\Repository\STM32Cube_FW_WB_V1.2.0\Projects\STM32WB_Copro_Wireless_Binaries)

- 좌측 상단 파일 > Windows PowerShell 열기 > Windows PowerShell 열기 클릭

펌웨어 폴더로 이동
윈도우 파워쉘 실행
파워쉘 실행 결과

- STM32_Programmer_CLI.exe -c port=usb1 -fwdelete 명령어 실행해 현재 저장되어있는 펌웨어 삭제


5. FUS(Firmware Upgrade Service) 버전 읽기, 업그레이드

- STM32_Programmer_CLI.exe -c port=usb1 -r32 0x20030030 1

0x20030030 : 00050300 : FUSv0.5.3 => 새로운 FUS 펌웨어 업그레이드 필요 

0x20030030 : 01000100 or 01000200 : FUSv1.0.x => 업데이트 된 상태. 바로 M0+ CPU에 Wireless 펌웨어 다운 가능

 

5-2. FUS 업그레이드

- STM32_Programmer_CLI.exe -c port=usb1 -fwupgrade [FUS_Binary] [Install@] firstinstall=0

- STM32_Programmer_CLI.exe -c port=usb1 -fwupgrade stm32wb5x_FUS_fw.bin 0x080EC000 firstinstall=0

- [FUS_Binary] : FUS 펌웨어 파일명 (확장자 포함)

- [Install@] : 인스톨 주소

- Release_Notes.html 하단에 나와있는 표를 참고로 인스톨 주소 입력 (SoC 플래시 메모리 용량에 따라 달라진다)

(P-NUCLEO-WB55 개발킷의 경우 누클레오 보드, 동글 둘 다 플래시 메모리가 1MB 이므로  0x080EC000 사용)

*Error : Firmware not authentic! 에러가 발생하는 경우

- 우선적으로 STM32_Programmer_CLI.exe -c port=usb1 -r32 0x20030030 1 명령어 사용한 뒤 결과를 확인해 업그레이드가 됐는지 안됐는지를 확인

- 안됐을 경우 아래 방법 시도

https://community.st.com/s/question/0D50X0000Ap44FlSQI/restore-stm32wb55-fus-firmware

 

ST Community

 

community.st.com

- 위의 링크 마지막 방법으로 해결 (보드 연결 방식 ST-LINK가 아닌 USB)

  • STM32Programmer 실행 후, 왼쪽 상단 세 줄 아이콘 클릭 후 Erasing & programming 메뉴 선택

  • 우측 상단에서 USB 선택 후 Connect 버튼 클릭

  • 체크 박스 해제 후, 재클릭으로 전체 섹터 선택한 다음 Erase selected sectors 버튼 클릭하여 선택된 섹터 삭제 시작

  • 뒷부분에 보호된 섹터를 제외한 나머지 섹터가 지워진다
  • 이후 5-2. FUS 업그레이드 과정 재시도

섹터 지우기 후, FUS 확인 결과

  • FUS 재업그레이드 과정 중 에러가 발생했지만 FUS가 제대로 업그레이드 된 것을 확인 가능

6. Wireless Stack 펌웨어 M0+ CPU에 다운로드

- STM32_Programmer_CLI.exe -c port=usb1 -fwupgrade [Wireless_Coprocessor_Binary] [Install@] firstinstall=1

- STM32_Programmer_CLI.exe -c port=usb1 -fwupgrade stm32wb5x_BLE_Stack_fw.bin 0x080CC000 firstinstall=1

- [Wireless_Coprocessor_Binary] : M0+ CPU에 다운로드 할 Wireless Stack 펌웨어

- 필요에 따라 STM32WB_Copro_Wireless_Binaries 폴더 내에 다른 Wireless Stack 펌웨어를 선택하면 된다

- [Install@] : 인스톨 주소 (Wireless 펌웨어에 따라 달라진다. Release_Notes.html 하단 표에 주소 표기되어 있음)

stm32wb5x_BLE_Stack_fw.bin 를 다운로드 하는 과정

7. 노말 모드로 복귀

- BOOT0 핀과 VDD 핀의 연결 해제

- JP1의 점퍼핀을 USB STL에 꽂고 컴퓨터와 연결된 USB 케이블을 ST-LINK 커넥터에 연결

8. BLE_Proximity Example 프로젝트 업로드 후, 확인

- 업로드 이후, 블루투스 목록에 보이지 않는다면 USB 케이블 재연결로 보드 다시 부팅

- ST사에서 제공하는 ST BLE Profile 앱으로 연결 및 작동이 정상적으로 되는지 확인

+ Recent posts