【米联客-安路飞龙DR1-FPSOC】SDK入门篇连载-02 FPSoc程序固化入门

软件版本:Anlogic -TD5.9.1-DR1_ES1.1

操作系统:WIN10 64bit

硬件平台:适用安路(Anlogic)FPGA

实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板

板卡获取平台:https://milianke.tmall.com/

登录"米联客"FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!

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模式下启动

本文来米联客(milianke),作者:米联客(milianke),转载请注明原文链接:https://www.cnblogs.com/milianke/p/18343898

最新文章

最新文章