STM32G0 系列单片机加密
启动模式
有三种启动模式,分别是User Flash、System memory、SRAM。其中User Flash就是主存,放置用户代码。System memory是厂家的bootloader,无法修改,无法被擦除。
在 User option byte中,定义了 nBOOT0 bit, nBOOT1 bit, nBOOT_SEL bit,它们决定了系统上电后从哪个存储区开始运行。默认出厂这三个位都是1,从Main Flash memory启动,同时BOOT0 pin管脚无效。
读保护
通过设置option byte 中的RDP字段,读保护功能可以保护Main Flash memory, User option bytes以及backup registers和SRAM。
测试
当拿到空片时,由于没有用户程序,系统上电会直接进入 System memory,此时使用 STM32CubeProgrammer 软件,通过串口(115200)可以直接连上。连上后,可以修改Boot选项,让boot0管脚起作用;否则一旦烧录用户程序后,就只有通过用户程序来跳转到System memory。
读保护启用Level 1,此时用JFlash或者STM32CubeProgrammer 都可以解锁芯片,但会导致整片程序被擦除,同时又会回到 Level 0。
读保护启用Level 2,此时没法用任何方式回到其他加密等级了。也就是说当前的单片机成了OTP,通过Debug或System bootloader的方式,无法修改程序;在这种情况下,采用User Bootloader + App 的方式,只要确保 User Bootloader 是经过充分验证的,就可以启用 Level 2,后续通过 Bootloader 来升级程序。