首页 > 编程语言 >[米联客-安路飞龙DR1-FPSOC] SDK入门篇连载-02 FPSoc程序固化入门

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

时间:2024-08-05 19:17:30浏览次数:11  
标签:02 启动 DR1 FSBL 模式 安路 bootROM JTAG SD

软件版本: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模式下启动

标签:02,启动,DR1,FSBL,模式,安路,bootROM,JTAG,SD
From: https://www.cnblogs.com/milianke/p/18343898

相关文章

  • [米联客-安路飞龙DR1-FPSOC] SDK入门篇连载-03 GPIO PS/PL实验
    软件版本:Anlogic-TD5.9.1-DR1_ES1.1操作系统:WIN1064bit硬件平台:适用安路(Anlogic)FPGA实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板板卡获取平台:https://milianke.tmall.com/登录"米联客"FPGA社区http://www.uisrc.com视频课程、答疑解惑! 1概述本课对FPSoC芯片GPIO进......
  • AGC027C 题解
    注意到如果可以构造出所有由\(\texttt{A}\)和\(\texttt{B}\)组成的字符串,那么在图上游走的路径必须成环,并且的环上的每一个点都必须同时有一个\(\texttt{A}\)邻居和\(\texttt{B}\)邻居。于是可以考虑把点拆分为入点和出点,相邻两个点为\(\texttt{AA},\texttt{BB}\)的,从......
  • [米联客-安路飞龙DR1-FPSOC] SDK入门篇连载-01 FPSoc开发入门
    软件版本:Anlogic-TD5.9.1-DR1_ES1.1操作系统:WIN1064bit硬件平台:适用安路(Anlogic)FPGA实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板板卡获取平台:https://milianke.tmall.com/登录"米联客"FPGA社区http://www.uisrc.com视频课程、答疑解惑!1概述1.1背景介绍由于FPS......
  • CSP-J 2023第二轮游记
    DayX做了一次模拟赛,考得都很烂,有几次都没有上\(~200~\)。听说赛前模拟赛发挥失常RP++?Day17:30考点就在SCZ,离家不远,但是仍然开车到达考点,在考场边排好队等待,遇到许多大佬,倍感压力,赶紧膜拜以吸收RP。8:00进入机房,找到自己的机位,试机。啥都没写出来,随便打几个板子,结果发现自......
  • 【京东云新品发布月刊】2024年7月产品动态
    京东云7月产品动态:1.【消息队列RocketMQ】新品上线消息队列RocketMQ是京东云基于ApacheRocketMQ打造的一款低延迟、高并发、高可用、高可靠的分布式消息队列服务。支持开源客户端零改造接入,同时具备计算存储分离,灵活扩缩容的优势。能够轻松处理百万级TPS的吞吐量,适用于各类大......
  • 【日常开发】一个list集合 根据a字段 b字段进行分组 并计算c字段的和 并封装这种格式:
    ......
  • 牛客多校2024-6
    A-Cake(神金,害我调了一个半小时)Alice和Bob玩一个游戏。游戏分为2阶段。阶段1:有一棵边权值为\(0\)或\(1\)的有根树,两人轮流走,Alice先走,走到叶子就停下来。记录下经过边的权值形成一个字符串\(S\)阶段2:Bob将一个蛋糕切成\(len(S)\)块,块可以为空。然后遍历\(S\)的......
  • SourceCodester v1.0 SQL 注入漏洞(CVE-2023-2130)靶场复现
    SourceCodesterPurchaseOrderManagementSystemv1.0是一个实用的工具,适合希望优化采购流程的企业和组织靶场界面直接放sqlmap跑爆数据库爆数据表爆字段爆内容-用户名爆内容-密码sqlmap的md5碰撞sqlmap所有命令点击查看代码爆数据库pythonsqlmap.py-u......
  • 学习笔记 韩顺平 零基础30天学会Java(2024.8.5)
    P460八大Wrapper类     黄色的父类是number,黑色的是自己独立的P461装箱和拆箱     手动装箱示例:                             intn1=100;                Intergerinterger=newInterger(n1);//......
  • 最新!2024年—华为认证HCIA考试报名攻略分享
    HCIAHCIA是华为初级认证。HCIA认证定位于中小型网络的设计、实施和维护,也是三种级别认证中最初级的认证。HCIA方向HCIA认证条件无HCIA认证考试考试代码:H12-811考试类型:笔试(一科)试卷题型:单选题、多选题、判断题、填空题、拖拽题考试时长:90min及格分/总分:......