Files
VesiScan-Basic_Zephyr/tools/build_flash_erase_lock.bat
T
jh.chun 36c8958e03 빌드 포함 전체 삭제 + APPROTECT 잠금 배치 파일 생성(양산용)
- 배치 내부에서 cmake --build로 merged.hex 갱신
- chiperase + program + verify 후 nrfjprog --rbp ALL로 SWD 디버그 포트 잠금
2026-07-14 17:41:43 +09:00

62 lines
1.9 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
REM ==============================================================
REM Build + Flash + APPROTECT lock (PRODUCTION ONLY)
REM - Rebuilds so build\merged.hex is up to date, then flashes.
REM - Do NOT run on development boards (locking needs --recover).
REM ==============================================================
set "REPO=%~dp0.."
set "BUILDDIR=%REPO%\build"
set "HEX=%BUILDDIR%\merged.hex"
REM cmake from the nRF Connect toolchain, fallback to PATH
set "CMAKE=C:\ncs\toolchains\fd21892d0f\opt\bin\cmake.exe"
if not exist "%CMAKE%" set "CMAKE=cmake"
echo [FLASH] FULL ERASE + APPROTECT LOCK mode (production)
echo [FLASH] This wipes application flash, NVS/settings, and BLE bonds.
echo [FLASH] After locking, SWD debug read/write is disabled.
echo [FLASH] To unlock later: nrfjprog --recover (mass-erases the chip).
echo [FLASH] DFU(SMP) over BLE still works after locking.
echo.
REM --- Step 1: build (updates merged.hex) ---
echo [FLASH] Step 1/4: build (update merged.hex)
"%CMAKE%" --build "%BUILDDIR%"
if errorlevel 1 (
echo [FLASH] Build FAILED. Aborting.
exit /b 1
)
if not exist "%HEX%" (
echo [FLASH] merged.hex not found: %HEX%
echo [FLASH] Build the project first.
exit /b 1
)
echo [FLASH] Using: %HEX%
echo.
REM --- Step 2: chip erase + program + verify ---
echo [FLASH] Step 2/4: chip erase + program + verify
nrfjprog --program "%HEX%" --chiperase --verify --reset
if errorlevel 1 (
echo [FLASH] Program FAILED. Aborting before lock.
exit /b 1
)
REM --- Step 3: enable APPROTECT ---
echo [FLASH] Step 3/4: enabling APPROTECT (readback protection)
nrfjprog --rbp ALL
REM --- Step 4: pin reset to apply protection ---
echo [FLASH] Step 4/4: pin reset
nrfjprog --pinreset
echo.
echo [FLASH] Done. POWER-CYCLE the device to fully latch APPROTECT.
echo [FLASH] Verify lock: nrfjprog --memrd 0x0 should now FAIL.
endlocal
pause