Zynq的启动过程及加密

本文详细介绍了Xilinx Zynq FPGA如何实现加密启动,包括BOOT.BIN文件的加密制作、密码文件的生成、加密数据写入Zynq以及验证过程。通过AES解密引擎和加密方案,确保了bit流文件的安全,防止知识产权被非法窃取。
摘要由CSDN通过智能技术生成

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

Zynq是一种基于ARM处理器和可编程逻辑的SoC(系统级芯片),其启动过程中的关键组件之一是U-Boot引导加载程序。U-Boot(Universal Boot Loader)是一款开源的引导加载程序,用于初始化硬件环境并加载操作系统。下面是Zynq U-Boot的启动过程。 首先,当设备上电时,FPGA芯片将进行自愈检测和初始化,而ARM处理器则会开始执行从固化ROM中加载的引导程序。 然后,固化ROM中的引导程序将加载U-Boot二进制文件到内存中的预定义位置。这个二进制文件通常位于设备的闪存、硬盘或者网络设备中。 一旦U-Boot被加载到内存中,ARM处理器会跳转到该位置,并开始执行U-Boot代码。U-Boot会通过串口或者其他外部接口与操作员交互,提供启动选项或者配置参数的修改。 接下来,U-Boot会初始化相关设备,如串口、以太网、USB等,并读取环境变量。环境变量包含重要的系统设置,如U-Boot的启动模式、引导设备、Linux内核地址等。 然后,U-Boot会加载操作系统内核(通常是Linux内核)的映像文件。这个映像文件可以从闪存、硬盘、网络等存储设备中获取。 U-Boot使用设备树(Device Tree)来描述硬件环境。设备树是一种数据结构,用于描述SoC和外围设备的硬件配置信息,包括地址映射、中断、外设配置等。 最后,U-Boot会将控制权转移到内核的启动例程,启动Linux操作系统。Linux内核会继续初始化硬件环境,并开始执行用户空间的初始化脚本,最终进入系统运行状态。 总结起来,Zynq的U-Boot启动过程包括固化ROM中的引导程序加载U-Boot到内存、U-Boot的初始化和配置、加载操作系统内核映像文件以及控制权的切换到内核。通过这个过程,Zynq SoC能够正确地初始化硬件环境,并加载和启动操作系统。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值