[米联客-安路飞龙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(或者其他介质)中运行,但处于非调试模式(例如部署到生产环境)时,则需要通过存储介质启动 appSoc的启动遵循固定的流程,且支持从不同的介质中启动。

实验目的:

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 中的固化的代码,也叫bootROMbootROM 的执行流程是由启动模式配置管脚、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 接管。APU0RPUOCM执行 FSBLFSBL 完成以下操作:DDR/PLL 初始化。若需要配置 PL,则需要判断 Init ok 是否拉高:

init_ok =1APU/RPU bit数据读入内存,经过必要的程序(解密、验签)后写入 PCAP,然后等待 PL 的反馈信号 done 拉高。

SSBL阶段

以上启动流程结束,交由用户接管。根据用户选择,SSBL可以是u-bootboot 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 并启动运行目标 CPUPS 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 的加载与运行配置。

fsblapp 等就绪之后,需要使用"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.2QSPI启动

设置SW1模式开关QSPI模式 (设置模式开关请务必断电完成)

为了观察实现结果,需要打开串口。如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动

打开FD自带的串口工具,设置好串口号,点击OK

开发板上电,在QSPI模式下启动

4.4SD卡启动

设置SW1模式开关SD卡模式(设置模式开关请务必断电完成)

为了观察实现结果,需要打开串口。如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动

打开FD自带的串口工具,设置好串口号,点击OK

把之前产生的BOOT.bin文件复制进SD卡,将SD卡插入TF卡槽

开发板上电,在SD模式下启动

posted @ 2024-08-05 19:15  米联客(milianke)  阅读(41)  评论(0编辑  收藏  举报