Xilinx公司所有FPGA都采用外部Flash存储bit流文件,通常是未经加密的二进制代码—所以直接读取Flash中的数据即可获取bit流文件,并可随意复制产品。在知识产权越受重视的今天,我们需要对bit流文件进行加密以防止非法窃取知识产权。
Xilinx公司针对该需求推出了加密方案,在FPGA内集成了AES解密引擎。IES或Vivado在生成ROM文件时使用指定的秘钥将文件加密,将经过加密的ROM文件烧写到Flash中。另外,将相同的秘钥也存放在FPGA中。当FPGA加载Flash中的bit流文件时,使用AES解密引擎恢复出原始bit流实现加载。
经过加密后,他人虽可读取Flash中的数据,但如果没有秘钥则无法破解bit流文件。复制的文件在FPGA加载时AES解密引擎无法恢复出原始bit流,不能完成加载,实现了保护功能。
在做本实验前,应该知道不加密的程序固化和启动。如果不是很熟悉,请看: zynq 程序固化和启动
本文的主要内容包含:加密文件的产生,加密系统的制作,将加密数据或密码写入zynq。
本文的主要依据是:xapp1175_zynq_secure_boot.pdf
程序固化中BOOT.BIN 文件的生成回顾
在 zynq 程序固化和启动一文中,我们回到BOOT.BIN 文件的生成这个部分:在SDK中,菜单 -> Xilinx->Create Boot Image
出现下面界面,在这里我是直接导入上文中的output