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

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

一、生成bek文件。

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

在Tools--->Security Setting

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

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

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

自己输入一个KEY。

输完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进入下载界面

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

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

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

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

3.1下载秘钥到FPGA

点击③选择如下界面

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

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

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

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

如下图所示:

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

点击OK

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

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

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

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

3.2烧录固件

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

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

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

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

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

LATTICE的FPGA加密下载相关推荐

  1. Lattice系列FPGA入门相关0(Lattice与Altera、Xilinx对比及入门)

    需求说明:Lattice系统FPGA入门 内容       :Lattice与Altera.Xilinx对比 来自       :时间的诗 1.Lattice与Altera.Xilinx对比 latt ...

  2. Lattice系列FPGA入门相关1(Lattice系列FPGA简介)

    需求说明:Lattice系统FPGA入门 内容       :Lattice系列FPGA简介 来自       :时间的诗 1.为什么Lattice在进入FPGA市场的第一年就能取得这么好的成绩? 我 ...

  3. 基于LATTICE ECP3 FPGA的 Nano_Viewer设计(开源)

    1.前言 研究生课程要求设计一个电子相框,使用FPGA驱动VGA显示器并能使用无线传输的方式完成图像的传输并将图像缓存后显示到VGA显示器上,我根据该基础需求上,通过更换LATTICE的FPGA以及增 ...

  4. FPGA单独下载固化文件的解决方案

    对于FPGA工程师除了日常的调试工作以外,批量生产时候指导生成人员下载我们生成的固化文件也是我们的工作,所以今天讲一讲FPGA单独下载<固化文件>的几种方式. 批量生产-先下载后焊接 批量 ...

  5. FPGA从零设计[1]——关于Altera FPGA的下载器接口

    好久发博客了,一晃一年过去了. 最近打算学习FPGA,手头有几块开发板在用,平时练练代码足够了,但是作为一只硬件狗不亲自设计一块属于自己的开发板实在说不过去.正巧博主这段时间在深入学习Cadence ...

  6. 非常详细的Lattice 的FPGA接口模块SerDes讲解

    需求说明:Lattice系统FPGA入门 内容       :FPGA接口模块SerDes讲解 来自       :时间的诗 网站:http://blog.sina.com.cn/s/blog_aec ...

  7. MCU模拟JTAG接口对LATTICE CPLD FPGA 进行在线编程加载

    完整版请点击 https://hifpga.com/问题/719 索取源码,向博主本人提问FPGA相关问题 作者:Rock.Ding(莱迪思半导体公司) 关键字:MCU, JTAG, 在线编程, CP ...

  8. LATTICE的FPGA开发软件diamond的安装及LICENSE授权教程

    免破解永久有效IP超全LICENSE,向博主本人提问FPGA相关问题 完整版请点击https://hifpga.com/问题/691 1.下载及安装DIAMOND软件 diamond 3.10版下载地 ...

  9. 视频点播播放器如何实现加密下载?

    1.概述 目前视频下载实现可使用播放器接口实现.下载实现能够加密安全下载.本文档演示如何添加一个下载项且完成下载流程. 2.下载实现流程 1.初始化下载管理类,配置下载加密密钥和保存路径. Aliyu ...

最新文章

  1. 江西省移动物联网发展战略新闻发布会举行-2017年10月江西IDC排行榜与发展报告...
  2. 安卓开发fragment之间的切换_Android开发必会的组件化技术—Android架构和提升必备...
  3. OpenFOAM计算时,同时将结果输出到:计算窗口+文件
  4. vue计算多列和_解决vue 表格table列求和的问题
  5. 牛客网编程题01--计算字符串最后一串单词的长度,单词以空格隔开,字符串小于5000
  6. 05 | 服务编排层:Pipeline 如何协调各类 Handler ?
  7. 深入研究java.lang.Class类
  8. Web3D编程入门总结——WebGL与Three.js基础介绍
  9. 将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方...
  10. 高等数学 下册 第九章 偏导数 笔记
  11. 图像的常规边缘检测(梯度算子、Roberts算子和Sobel算子)(纯C++)
  12. C语言实现一个简单的矩阵运算器
  13. C语言malloc函数详解(通俗易懂)
  14. apollo简易高精度地图制作
  15. 配合屏幕录像专家,又小又清晰!
  16. nextcloud配置邮箱发送邮件
  17. 关于VCT(voxel cone trace——基于体素的锥形光线追踪)Renderer的代码解读
  18. 【Sublime Text 3】Sublime Text 3 - cracked 3083\3085
  19. swagger配置使用及安全方案
  20. 技能篇:awk教程-linux命令

热门文章

  1. 10分钟学会看懂谷歌分析(Google Analytics)
  2. android模拟器找不到sd卡,在Android模拟器bluestacks中打开虚拟SD卡的方法的详细说明...
  3. csol永恒python评测_反恐精英Online情报中心 - CSOL - 官方网站 - 世纪天成游戏 - 火爆战场真实体验!...
  4. 每日一练———C语言算法题--平年闰年问题
  5. Ckplayer x 去掉选择倍速按钮
  6. 如何联合使用Union和Order by
  7. cc1plus.exe 警告说命令行选项 -std=c11 只能用于 C/ObjC,不能用于 C++,应该怎么解决...
  8. Centos7安装ceph集群
  9. 客厅适合用射灯做基础照明吗?
  10. 程序员因违反《竞业协议》赔偿腾讯近百万