STM32CubeWL/Projects/NUCLEO-WL55JC/Applications/LoRaWAN_FUOTA/Scripts/disable_security.bat

88 lines
2.7 KiB
Batchfile

@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
REM ###########################################
REM # 0- Set all global variables
REM ###########################################
if not defined CUBEPROG_EXE (
call setenv.bat
)
echo ###########################################
echo # 1- Disable security
echo ###########################################
echo RDP: Read Out protection Level 1
call :write_ob RDP 0xBB || goto :eof
echo RDP+ESE: Read Out protection Level 0 + Security disabled
call :write_ob RDP 0xAA ESE 0x0 || goto :eof
echo WRP: Write Protection disabled
call :write_ob WRP1A_STRT 0x7F WRP1A_END 0x0 WRP1B_STRT 0x7F WRP1B_END 0x0 || goto :eof
echo ------ User Configuration ------
echo nRST: No reset generated when entering the Stop/Standby/Shutdown modes
call :write_ob nRST_STOP 0x1 nRST_STDBY 0x1 nRST_SHDW 0x1 || goto :eof
echo WDG_SW: Software window/independent watchdogs
call :write_ob WWDG_SW 0x1 IWDG_SW 0x1 || goto :eof
echo IWDG: Independent watchdog counter frozen in Stop/Standby modes
call :write_ob IWGD_STDBY 0x0 IWDG_STOP 0x0 || goto :eof
echo BOOT: CPU1+CPU2 CM0+ Boot lock disabled
call :write_ob BOOT_LOCK 0x0 C2BOOT_LOCK 0x0 || goto :eof
echo ------ Security Configuration ------
echo HDPAD: User Flash hide protection area access disabled
call :write_ob HDPAD 0x1 || goto :eof
echo SPISD: SPI3 security disabled
call :write_ob SUBGHSPISD 0x1 || goto :eof
echo SBRSA: Reset default value of SRAM Start address secure
call :write_ob SNBRSA 0x1F SBRSA 0x1F || goto :eof
echo SBRV: Reset default value of CPU2 Boot start address
call :write_ob SBRV 0x8000 || goto :eof
exit /B 0
:--------------------------------------
:write_ob
set len_ob=0
:next
if not "%~1" == "" if not "%~2" == "" (
set option_byte_name[!len_ob!]=%~1
set option_byte_val[!len_ob!]=%~2
set /a len_ob+=1
shift
shift
goto next
)
set /a len_ob-=1
set obj_str=
for /L %%i in (0,1,%len_ob%) do (
set obj_str=!option_byte_name[%%i]!=!option_byte_val[%%i]! !obj_str!
)
%CUBEPROG_EXE% -c port=SWD mode=UR -q -ob !obj_str! >nul 2>nul
if %errorlevel% neq 0 (
echo Error: Command write -ob !obj_str! Failed
exit /B 1
)
%CUBEPROG_EXE% -c port=SWD mode=UR -q -ob displ > temp.txt
REM Get line containing %~1 Option Byte
for /L %%i in (0,1,%len_ob%) do (
for /f "tokens=3" %%h in ('findstr /c:" !option_byte_name[%%i]!" temp.txt') do set "read_ob=%%h"
if "!read_ob!" neq "!option_byte_val[%%i]!" (
echo Error: Option Byte !option_byte_name[%%i]! not modified as expected: read=!read_ob! expected=!option_byte_val[%%i]!
del /Q temp.txt >nul
exit /B 1
)
)
del /Q temp.txt >nul
exit /B 0