LATTICE的FPGA加密下载

时间:2024-04-14 19:39:35

最近用lattice的FPGA,研究了一下固件加密功能。本文讲述的是用Diamond软件进行固件加密下载的方法。

需要两个文件,一个是密码文件,格式为.bek。一个是固件,我用的.bit格式。两个文件都用Diamond生成。

一、生成bek文件。

打开Diamond软件,打开对应的FPGA工程。

在Tools--->Security Setting

点击进去后,需要输入一个password。这个密码是将来烧录bek的时候要用的。要记住。

默认的是LATTICESEMI,我点击ChangePassword,修改为自己的密码。一定要记住这个密码。

LATTICE的FPGA加密下载

接下来,进行加密KEY设定。打钩,选择密码格式,支持ASCII、Hex、Bin三种格式。

自己输入一个KEY。

LATTICE的FPGA加密下载

LATTICE的FPGA加密下载

输完KEY,点击OK,就会生成一个.BEK文件。

生成的.bek文件到对应的工程文件夹里可以找到。

 

二、加密固件

接下来有两种方式进行固件加密,一种是采用Deployment Tool软件(不推荐。作为备用方案)。

推荐的方式:

另一种方式是,先用Diamond生成了bek文件,然后用Diamond综合编译生成bit文件。此时Diamond会利用生成的bek文件自动加密,无需再手动对bit文件加密。(注意顺序,先生成bek文件,再生成bit文件)

三、烧录

烧录分两步,先烧录.bek秘钥文件。再烧录固件。这里以ECP5U为例。

  1. 打开Lattice Diamond Programmer 3.10 (64-bit),连上烧录器,点击program进入下载界面

LATTICE的FPGA加密下载

①选择设备类,(这里选ECP5U)

②选择具体设备类型(LFE5U-25F)

③操作模式(点击后配置)

④烧录文件所在的路径(也可以在③中操作),配置秘钥不需要操作

 

3.1下载秘钥到FPGA

点击③选择如下界面

LATTICE的FPGA加密下载

点击LoadKey按钮,导入秘钥文件(文件名为.bek

 此时需要输入密码,密码为前面的password。

LATTICE的FPGA加密下载

 输入正确后,成功导入秘钥文件。显示黑点。

接下来,把下面两个选项打钩,并在框里输入yes

如下图所示:

LATTICE的FPGA加密下载

貌似第二个钩只针对ECP5U芯片。详情请看官方英文文档。

点击OK

接下来就可以点击绿色按钮烧录FPGA秘钥了。

注意:FPGA内部加密模块是熔丝结构,只能烧录一次秘钥。熔断后不可恢复,再次烧录秘钥是无效的。如下次重新烧录固件,无需再次烧录秘钥,只需烧录对应的固件即可(用这个秘钥文件加过密的固件)。

注意:烧录秘钥,如果显示成功则进行下一步,烧录固件。如果显示是编程失败,再重烧的时候,显示

LATTICE的FPGA加密下载

说明熔丝已经断了,不能再二次烧录秘钥了。不用管,继续烧录固件。

3.2烧录固件

导入bit文件路径(加密后的固件)

点击③,选择配置界面如下。这里以W25Q32型号flash为例。

LATTICE的FPGA加密下载

配置完成点击ok,回到下载主界面,点击绿色下载图标

下载成功后Status下面出现绿色的PASS。完成。重新上电。测试板子是否OK。

ps:有问题欢迎批评指正。