跳转至

程序加密方案

1. 工程相关设置(可选)

  • BIN文件

    1. MSPI模式:存放在外挂Flash或者内部合封的Flash
    2. SS模式:存放在MCU里面,由MCU发出位流数据去配置FPGA
  • FPGA(SRAM结构)

    1. JTAG接口可以下载/校验/回读
    2. 回读SRAM是一个xxx.hex文件
    3. 测试:原始bin文件613KB, 回读hex文件4803KB

1.1 JTAG复用普通IO

  • 关闭JTAG

    1. 器件型号上右键打开Device Option(不同TD版本稍微有差异)
    2. 新开的界面Device Option点击打开
    3. TDI/TMS/TCK/TDO从Dedicated改成GPIO
    4. 保存重新编译新的位流固化到配置Flash里面或直接配置FPGA
    5. 在Done信号上升沿后(从配置模式切入用户模式)生效,此时下载器的JTAG已经无法连接
  • EF系列恢复JTAG:JTAGEN引脚高电平JTAG引脚为调试下载口,低电平则为普通IO

  • EG/PH系列恢复JTAG:上电前把模式引脚模式改下或者Flash去掉再上电,
    原理就是阻止FPGA正常加载进入用户模式(Done上升沿)

1.2 禁止SRAM回读

  1. TD4/5菜单栏Process进入Properties
    TD6版本可以选择整个界面左侧的Generate Bitstream右键进入
  2. 找到Securit选项设置为1
  3. 保存重新编译新的位流固化

2. AES加密

  • 支持型号:EF2/EF3/SF1/EF5/PH等(EG4不支持)
  • 适用模式:MSPI FLASH模式
  • AES密钥烧录EFUSE有失败概率,且失败后无法恢复

  • 建议环境和工具

    1. TD_Release_2026.1_SP2_NL(或官网最新版本)
    2. AL-LINK-V3.0(必须官方途径购买, 淘宝可能是老版本固件或其它款式下载器)
    3. Speed:为确保 efuse 烧录正常,速率必须限制在 1MHz

2.1 准备密钥

  • 用户准备一个128bit的密钥,保存为.dat格式文件

2.2 生成加密位流

  • 在TD软件的Download界面,点击“--EF2 Encrypt--”按钮
  • 加载密钥文件(Key File)和待加密的位流文件(Source Bit File)
  • 选择加密位流的保存路径,点击“--Generate Encrypt Bit--”生成加密后的.bit文件

2.3 烧写密钥

  • 在Encrypt界面选择“--Program Encrypt Key--”,加载密钥扩展文件(Key Exp File)
  • 点击“--Program Encrypt Key Into Efuse--”将密钥烧入芯片
  • 点击“--Program Encrypt Key Lock--”锁定密钥(锁定后无法读出,且只能烧写一次)

2.4 下载加密位流

  • 加密位流的下载方式与普通位流一致,通过Add加载后下载即可。

3. DNA加密

  • 支持型号:带64 位芯片唯一DNA的芯片(来源是FPGA或Flash)
  • 适用范围: MSPI FLASH模式

3.1 准备

  • 准备好64位初始密文(如AA01020304050607) Bin文件, 烧录到FLASH指定地址

3.2 第一次上电

  • 读取初始密文并验证。若匹配,则读取FPGA DNA,
  • 将DNA加密后的新密文写入FLASH,覆盖初始密文。

3.3 后续每次上电

  • 读取FLASH中的密文,与实时计算的DNA密文比较。
  • 匹配则功能使能(Cipher_ok=1),失败则禁用。