//#define CONFIG_OTA_UPDATE_DEMO_ENABLED
#define CONFIG_MQTT_DEMO_ENABLED
Application Image는 검증을 위한 Header 파일과 Image 파일 영역이 구분됩니다. Postbuild 단게에서 검증 Header 파일과 Image 파일을 하나의 Binary로 통합하는 작업을 진행합니다.
Binary 통합 작업은 STM32 CubeProgrammer의 CLI 기능을 사용합니다.
Project를 Build 합니다. Build Project를 실행합니다. 이전 Build 산출물을 제거하고 싶으면 Clean Project를 먼저 진행한 후 Build Project를 실행합니다.
CSTM32CubeProgrammer 우축 상단의 Connect 버튼을 눌러 디바이스를 연결 합니다.
Erasing & programming Tab을 선택합니다.
SBSFU와 aws_demo application가 포함된 PostBuild folder에 있는 SBSFU_B-L4S5I-IOT01_aws_demos.bin 파일로 Programming 합니다.
Programming 시작 주소는 기본값인 0x08000000 입니다. 변경하지 않고 유지합니다.
Programming option은 필요에 따라 선택합니다.
Start Programming 버튼을 클릭하여 bin 파일을 writing 합니다.
Programming이 완료되면 MCU 보드의 리셋 버튼으로 재 부팅 합니다.
Terminal 프로그램을 통해 로그를 확인할 수 있습니다.
= [SBOOT] System Security Check successfully passed. Starting...
= [FWIMG] Slot #0 @: 8105000 / Slot #1 @: 8036000 / Swap @: 81d5000
======================================================================
= (C) COPYRIGHT 2017 STMicroelectronics =
= =
= Secure Boot and Secure Firmware Update =
======================================================================
= [SBOOT] SECURE ENGINE INITIALIZATION SUCCESSFUL
= [SBOOT] STATE: CHECK STATUS ON RESET
INFO: A Reboot has been triggered by a Hardware reset!
Consecutive Boot on error counter = 0
INFO: Last execution detected error was:No error. Success.
= [SBOOT] STATE: CHECK NEW FIRMWARE TO DOWNLOAD
= [SBOOT] STATE: CHECK KMS BLOB TO INSTALL
= [SBOOT] STATE: CHECK USER FW STATUS
= [SBOOT] LOADING CERTS FROM SECURE ENGINEOK
= [SBOOT] Verifying the Certificate chain... OK
= [SBOOT] Verify Header Signature... OK
A valid FW is installed in the active slot - version: 1
= [SBOOT] STATE: VERIFY USER FW SIGNATURE
= [SBOOT] CHECKING IMAGE STATE
= SFU_IMG_Check/lab1/imagestate Image State = 1
= [SBOOT] IMAGE STATE OK
= [SBOOT] STATE: EXECUTE USER FIRMWARE0 526 [Tmr Svc] WiFi module initialized.
1 532 [Tmr Svc] Device Certificate (DER), size = 401
2 537 [Tmr Svc] Device Certificate (PEM), size = 600
-----BEGIN CERTIFICATE-----
MIIBjTCCATSgAwIBAgILAgmQzSAhzCJbATkwCgYIKoZIzj0EAwIwTzELMAkGA1UE
BhMCTkwxHjAcBgNVBAoMFVNUTWljcm9lbGVjdHJvbmljcyBudjEgMB4GA1UEAwwX
U1RNIFNUU0FGRS1BIFBST0QgQ0EgMDEwIBcNMjAwMjI2MDAwMDAwWhgPMjA1MDAy
MjYwMDAwMDBaMEYxCzAJBgNVBAYTAkZSMRswGQYDVQQKDBJTVE1pY3JvZWxlY3Ry
b25pY3MxGjAYBgNVBAMMEVNUU0FGRS1BMTEwIEVWQUwyMFkwEwYHKoZIzj0CAQYI
KoZIzj0DAQcDQgAEyly2accEmT8ACQldcLB4R+gms+KkNmZlcpUwRKIruHB0tfBq
INXwoaU62tDBL36lccjcKXhvZfBypmiCf006mDAKBggqhkjOPQQDAgNHADBEAiAQ
eoU/91uTOzhsOgeVHoKRniBkCKPremzIkf/cXD7eegIgDko6cHiZMmzLVkb+0DJT
OYf+siyvGciYPio6Qz6+la8=
-----END CERTIFICATE-----
3 594 [Tmr Svc] WiFi Firmware Version C3.5.2.5.STM.
4 605 [Tmr Svc] WiFi failed to connect to AP .
5 610 [Tmr Svc] Connect to softAP ConfigureMe using password awsiotdevice.
...............6 30622 [Tmr Svc] Connect to softAP ConfigureMe using password awsiotdevice and configure WiFi.
7 60631 [Tmr Svc] Connect to softAP ConfigureMe using password awsiotdevice and configure WiFi.
8 90640 [Tmr Svc] Connect to softAP ConfigureMe using password awsiotdevice and configure WiFi.
9 120649 [Tmr Svc] Connect to softAP ConfigureMe using password awsiotdevice and configure WiFi.
10 150658 [Tmr Svc] Connect to softAP ConfigureMe using password awsiotdevice and configure WiFi.
-----BEGIN CERTIFICATE-----
MIIBjTCCATSgAwIBAgILAgmQzSAhzCJbATkwCgYIKoZIzj0EAwIwTzELMAkGA1UE
BhMCTkwxHjAcBgNVBAoMFVNUTWljcm9lbGVjdHJvbmljcyBudjEgMB4GA1UEAwwX
U1RNIFNUU0FGRS1BIFBST0QgQ0EgMDEwIBcNMjAwMjI2MDAwMDAwWhgPMjA1MDAy
MjYwMDAwMDBaMEYxCzAJBgNVBAYTAkZSMRswGQYDVQQKDBJTVE1pY3JvZWxlY3Ry
b25pY3MxGjAYBgNVBAMMEVNUU0FGRS1BMTEwIEVWQUwyMFkwEwYHKoZIzj0CAQYI
KoZIzj0DAQcDQgAEyly2accEmT8ACQldcLB4R+gms+KkNmZlcpUwRKIruHB0tfBq
INXwoaU62tDBL36lccjcKXhvZfBypmiCf006mDAKBggqhkjOPQQDAgNHADBEAiAQ
eoU/91uTOzhsOgeVHoKRniBkCKPremzIkf/cXD7eegIgDko6cHiZMmzLVkb+0DJT
OYf+siyvGciYPio6Qz6+la8=
-----END CERTIFICATE-----
인증서의 세부 내용은 다음과 같습니다.
로그에 출력되는 인증서를 복사하여 Device Certificate로 저장 합니다 : stm32-iot-node-cert.pem
stm32-iot-node-cert.pem 파일은 AWS에 연결할 때 Device의 인증서로 등록하여 사용합니다.
../../Inc/main.h:36:10: fatal error: stm32l475e_iot01_accelero.h: No such file or directory
postbuild.sh: Permission denied
chmod +x postbuild.sh
postbuild.sh : ImportError: No module named Cryptodome.Cipher
postbuild.sh에서 실행하는 prepareimage.py는 requirements.txt에 정의된 pycryptodome, pycryptodomex, ecdsa, pyelftools, numpy, lief를 사용하는데 이중 pycryptodomex library가 정상적으로 import 되지 않는 문제입니다.
다음과 같이 python을 venv에서 실행되도록 환경을 구성 합니다.
수정 파일 : STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Image_SECoreBin/STM32CubeIDE/postbuild.sh
변경 전
prepareimage=$basedir"/win/prepareimage/prepareimage.exe"
uname | grep -i -e windows -e mingw > /dev/null 2>&1
if [ $? = 0 ] && [ -e "$prepareimage" ]; then
echo "prepareimage with windows executeable"
export PATH=$basedir"/win/prepareimage":$PATH > /dev/null 2>&1
cmd=""
prepareimage="prepareimage.exe"
bigelftuner=$basedir"/win/bigelftuner.exe"
else
# line for python
echo "prepareimage with python script"
prepareimage=$basedir"/prepareimage.py"
bigelftuner=$basedir"/bigelftuner.py"
cmd="python"
fi
prepareimage=$basedir"/win/prepareimage/prepareimage.exe"
uname | grep -i -e windows -e mingw > /dev/null 2>&1
if [ $? = 0 ] && [ -e "$prepareimage" ]; then
echo "prepareimage with windows executeable"
export PATH=$basedir"/win/prepareimage":$PATH > /dev/null 2>&1
cmd=""
prepareimage="prepareimage.exe"
bigelftuner=$basedir"/win/bigelftuner.exe"
else
# add venv
echo "run python3 on venv"
python3 -m venv venv
source venv/bin/activate
pip3 install -r $basedir/requirements.txt
# line for python
echo "prepareimage with python script"
prepareimage=$basedir"/prepareimage.py"
bigelftuner=$basedir"/bigelftuner.py"
cmd="python3"
fi
postbuild.sh : STM32 Programmer CLI 실행 오류
STM32 CubeProgrammer 설치시 프로그램 path가 변경되었다면 postbuild.sh를 수정해 주어야 합니다.
postbuild.sh : STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Image_SECoreBin/STM32CubeIDE 폴더에 위치 합니다.
실습 0-2에서 설치한 CubeProgrammer의 CLI 프로그램의 path를 확인하여 수정 합니다.
Windows OS : PATH=“C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin”
MAC OS : programmertool="/Applications/STMicroelectronics/STM32Cube/STM32CubeProgrammer/STM32CubeProgrammer.app/Contents/MacOs/bin/STM32_Programmer_CLI"
if [ $? = 0 ]; then
# Set to the default installation path of the Cube Programmer tool
# If you installed it in another location, please update PATH.
PATH="C:\\Program Files\\STMicroelectronics\\STM32Cube\\STM32CubeProgrammer\\bin":$PATH > /dev/null 2>&1
programmertool="STM32_Programmer_CLI.exe"
else
which STM32_Programmer_CLI > /dev/null
if [ $? = 0 ]; then
programmertool="STM32_Programmer_CLI"
else
programmertool="/Applications/STMicroelectronics/STM32Cube/STM32CubeProgrammer/STM32CubeProgrammer.app/Contents/MacOs/bin/STM32_Programmer_CLI"
fi
fi