AG32 芯片保护与加密

1 min read CPLD

代码安全有两种方式:

一种是 Lock flash ,一个是代码加密

Lock flash:

Lock flash 是在烧录代码后,锁定 flash ,防止外部对 flash 中内容的读取。

如果有 unlock 的动作,会触发清空的动作。

Lock 动作是在 downloader 时执行的。

该动作的使能,需要在 platformio.ini 里[setup] 栏下新增配置项:lock_flash = true

如果不使用 VSCODE 中的batch 图标而是使用自定义batch 命令(多个bin 的情况),则是在命令后增加 –lock 参数来使能。

代码加密:

代码加密是更高级别的加密。

代码加密,会保证烧录到每颗芯片的内容,都是绑定自己的唯一 ID 的。

也就是说,同一个原始 bin,通过 downloader 工具烧录到不同芯片时,最终烧录的内容是不同的。(这就保证,即使破解了某个芯片的 bin ,再烧录到其他芯片也是不能工作的。)

加密的动作也是在 downloader 时执行的。

该动作的使能,需要在 platformio.ini 里[setup] 栏下新增设置项:board_logic.encrypt = true

注意,如果工程中使用了“自定义 logic ”,则增加该项后,需要重新编译一次 logic(从 prepare LOGIC 开始,重走一遍 cpld 编译流程),不然 create batch 时会报错。

另外:如果有远程logic 升级功能的需求,则该加密方式不能使用。

以上两种加密方式是相互独立的,可以单独使用,也可以一起使用。

这篇文档有帮助吗?