软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板
1概述在应用的调试过程中,我们可以直接将其下载到DDR(或者其他介质)中运行,但处于非调试模式(例如部署到生产环境)时,则需要通过存储介质启动 app。Soc的启动遵循固定的流程,且支持从不同的介质中启动。 实验目的: 1:熟悉FPSoc启动模式类型和硬件设置 2:熟悉FPSoc启动的过程 3:掌握ARM IP SD接口启动和QSPI FLASH启动的设置 4:利用FD制作BOOT.BIN文件 5:完成SD卡启动实验 6:完成QSPI启动实验 2FPSoc的启动2.1启动流程DR1 系列 FPSoC 的启动是通过 PMU 和 BSU 的协调配合实现的。 PMU(Platform Management Unit)模块是 SoC系统管理模块,主要功能如下: - 系统初始化与启动
- 系统时钟复位管理
- 系统异常监控与处理
BSU(Boot Security Unit)子系统内含一个 CPU,负责 bootROM 的执行以及加密验签等操作。大致分为如下四个流程: PMU 阶段(固定的上电时序) 在此阶段硬件将 eFUSE 中内容读取到寄存器中,PL进入初始化阶段,初始化结束后 PL 送往 PS 的init_ok 信号拉高表示初始化结束。 PS 释放 POR reset,对 PLL 等模块初始化,释放外设 reset,采样启动模式配置管脚并将其写入B00T_MOD 寄存器,释放 APU/RPU/DDR/总线reset,最后释放 BSU reset。 bootROM 阶段 BSU reset 被释放后,开始执行片内 ROM 中的固化的代码,也叫bootROM。bootROM 的执行流程是由启动模式配置管脚、eFUSE 内容、boot header、以及 bootR0M中的内容决定的。bootROM读取 BOOT_MOD寄存器并初始化相应的启动设备,之后bootR0M搜索有效 image 并读取 boot header(启动头部,其中包含描述镜像属性的一些参数,如镜像偏移地址、长度、加密属性等),根据boot header 对系统进行配置并将FSBL(First Stage Boot Loader,即第一阶段启动程序)加载到 0CM 中,在安全启动情况下bootROM 会进行FSBL 的解密和验签操作,最后释放FSBL 目标 CPU 的复位状态, 启动 FSBL 运行。 FSBL 阶段 bootROM执行之后,系统交由FSBL 接管。APU0或RPU从OCM执行 FSBL,FSBL 完成以下操作:DDR/PLL 初始化。若需要配置 PL,则需要判断 Init ok 是否拉高: 若 init_ok =1,APU/RPU 将bit数据读入内存,经过必要的程序(解密、验签)后写入 PCAP,然后等待 PL 的反馈信号 done 拉高。 SSBL阶段 以上启动流程结束,交由用户接管。根据用户选择,SSBL可以是u-boot等boot loader,也可以是用户程序。 之后的流程中 PMU 主要在复位管理、异常监控和处理时使用:BSU 在用户程序需要时进行加密/解密、签名/验签操作。 2.1启动模式的设置系统启动模式分为PS Master 启动模式和 JTAG Slave 启动模式。 2.1.1 JTAG Slave 启动模式DR1 系列 FPSOC 支持 JTAG 启动模式,JTAG 启动模式为非安全启动,在该模式下允许通过 JTAG 接口访问 PS 和 PL,主要用于用户进行 debug。在 JTAG 模式下,bootROM 关闭系统看门狗,释放 CPU reset并使 CPU陷入循环,并且使能 JTAG 接口。在非安全的PS Master 启动模式下 JTAG接口同样可以访问。有关 JTAG 的详细信息请参考 JTAG 和系统调试章节。 2.1.2 PS Master 启动模式该模式下,系统从外部Fash设备启动,bootROM 完成启动设备初始化,从启动设备中搜索并读取boot header、验证 boot header 完整性、加载 FSBL 到 OCM 并启动运行目标 CPU。PS Master 启动模式可以在安全启动或非安全启动下使用。 2.1.3 启动模式选择硬件上模式开关为SW1,原理图如下 如下图所示把SW1模式开关切换到ON-ON,就是设置JTAG启动 若要SD卡启动,如下图所示把SW1模式开关切换到OFF-OFF,就是设置SD启动 若要QSPI启动,如下图所示把SW1模式开关切换到ON-OFF,就是设置QSPI启动 3搭建SDK工程直接使用"01Vitis Soc开发入门"这个demo中已经创建好的工程实现。双击打开FD软件 设置好路径,打开sdk工程 完成加载后,我们选择使用hello_world完成固化。 4 SOC程序固化使用存储介质启动 app 时先要构建 fsbl,它的功能是为 app 准备好 SoC的初始化,例如时钟、外设、PL 端比特流的配置等,并进行 PL 端的配置和 app 的加载与运行配置。 在 fsbl、app 等就绪之后,需要使用"Create Boot lmage"功能将这些文件打包为 boot.bin 文件并将其下载到存储介质中后,将启动模式设置为对应的存储介质。这样便能从存储介质中正常启动。 4.1创建FSBL文件FSBL 的本质为 app,故参照在 fd 中构建 app 工程的步骤便可,与其他 app 的区别为 fsbl 工程的template 要选择 FSBL_V1_0。 点击build,完成FSBL文件的编译。编译完成后,产生fsbl.elf文件 4.2BOOT.BIN产生的方法找到Create Boot Image工具,单击选择。 在创建BOOT.BIN文件中我们需要设置bin文件的路径,我们选择存放在uisrc/05_boot路径下方便管理。 点击ADD依次添加 点击创建,显示创建完成 可以看到创建的BOOT.BIN文件 4.3QSPI的启动4.3.1烧录方法支持JTAG模式的核心板下载很便捷,首先把SW1模式开关全部设置成JTAG模式。 打开Program Flash固化工具 按照要求配置完成,配置如下图所示,点击Program 等待校验完成 4.3.2从QSPI启动设置SW1模式开关为QSPI模式 (设置模式开关请务必断电完成) 为了观察实现结果,需要打开串口。如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动 打开FD自带的串口工具,设置好串口号,点击OK 开发板上电,在QSPI模式下启动 4.4SD卡启动设置SW1模式开关为SD卡模式(设置模式开关请务必断电完成) 为了观察实现结果,需要打开串口。如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动 打开FD自带的串口工具,设置好串口号,点击OK 把之前产生的BOOT.bin文件复制进SD卡,将SD卡插入TF卡槽 开发板上电,在SD模式下启动
|