FMQL BOOT.bin固化文件生成及固化流程记录

2024-01-05 02:12

本文主要是介绍FMQL BOOT.bin固化文件生成及固化流程记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

FMQL BOOT.bin固化文件生成及固化流程记录

一、概述

此篇记录上海复旦微JFMQL15T开发板 烧录固化文件BOOT.bin生成及固化操作流程。
以上一篇文章FQML_AXI_GPIO工程构建调试记录 中的工程为基础,做更改。

二、vivado工程配置

2.1新建工程

打开FQML_AXI_GPIO工程构建调试记录的vivado工程依次点击File–>Project—>Save As…新建工程qspi_program。
在这里插入图片描述

2.2 vivado处理器外设配置

使能DDR,型号选择MT41J256M16 RE-125
在这里插入图片描述
使能PS_UART
在这里插入图片描述
使能QSPI 接口
在这里插入图片描述
配置QSPI 时钟源频率为120MHz
在这里插入图片描述

2.3 新建SDK工程(bsp备用)

导出HDL,生成bitstream文件,(详细步骤可参考FQML_AXI_GPIO工程构建调试记录中相关章节)launch SDK新建应用工程,如下图所示
在这里插入图片描述

三、procise工程配置

3.1 新建procise工程

3.1.1新建空白工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.2从vivado 导入

在这里插入图片描述
在这里插入图片描述

3.1.3 生成IAR工程

导出模板
在这里插入图片描述

3.2 完善IAR工程

在这里插入图片描述
添加头文件
在这里插入图片描述
在这里插入图片描述
standalone_v6_8/src下添加源文件
在这里插入图片描述
在这里插入图片描述
gpio驱动部分添加源文件和头文件
在这里插入图片描述
在这里插入图片描述
xparameters.h文件中注释掉#include “xparameters_ps.h”
在这里插入图片描述
xgpio_l.h中注释掉#include “xil_io.h”,添加#include “fmsh_common.h”
在这里插入图片描述
更改读写接口宏定义
#define XGpio_In32(addr) FMSH_ReadReg(addr,0x0)
#define XGpio_Out32(addr,data) FMSH_WriteReg(addr,0x0,data)

在这里插入图片描述

四、IAR工程编译生成.out文件

4.1 更改工程编译生成fsbl.out

在这里插入图片描述

4.2 更改工程编译生成Helloworld.out

4.2.1 编辑主程序

编辑主程序
#include <stdio.h>
#include “platform.h”
#include “fmsh_common.h”
#include “xgpio.h”
#include “fmsh_ps_parameters.h”

int FGpioOutputExample(void);

int main()
{
//init_platform();
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x008, 0xDF0D767BU);
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x838, 0xf);
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x004, 0xDF0D767BU);
//printf(“1\r\n”);
while (1)
{
FGpioOutputExample();
}
//cleanup_platform();
return 0;
}

int FGpioOutputExample(void)
{
XGpio led_out;
u32 led_channel = 1;
int status;
u32 maxloop = 3;
u32 led_bit;
u32 led_width = 4;
u32 i;
status = XGpio_Initialize(&led_out, 0);
if(status != XST_SUCCESS)
{
return XST_FAILURE;
}
//set all output
XGpio_SetDataDirection(&led_out, led_channel, 0x0);
//set GPIO outputs to high
XGpio_DiscreteWrite(&led_out, led_channel, 0x0F);
for(i = 0; i < maxloop; i++)
{
for(led_bit = 0; led_bit < led_width; led_bit++)
{
XGpio_DiscreteWrite(&led_out, led_channel, ~(1<<led_bit));
delay_ms(200);
}
}
return 0;
}

4.2.2 更改ps初始化配置

更改Hello world工程下的FM_QL_bsp–>ps_a7–>bootloader下的bspconfig.h文件
在这里插入图片描述
在这里插入图片描述

4.2.3 编译生成HelloWorld.out

在这里插入图片描述

五、制作BOOT.bin文件

5.1 启动procise 中BOOT.bin制作应用接口

在这里插入图片描述

5.2 生成.bif文件后续直接导入BOOT.bin生成配置

在这里插入图片描述

5.3 添加FSBL.out文件

在这里插入图片描述
在这里插入图片描述

5.4 添加vivado中的bit文件

在这里插入图片描述
在这里插入图片描述

5.5 添加应用程序HelloWorld.out文件

在这里插入图片描述
在这里插入图片描述

5.6 生成BOOT.bin文件

在这里插入图片描述
在这里插入图片描述

六、烧录

6.1 启动Program Flash

烧录到QSPI_Flash中,在procise 中依次点击PSOC—>Program Flash,然后添加BOOT.bin文件
在这里插入图片描述

6.2 配置烧录偏移量,点击program

在这里插入图片描述

6.3 等待烧录

在这里插入图片描述

6.4烧录完成提示

在这里插入图片描述
在这里插入图片描述

七、IAR在线调试

进入调试模式
在这里插入图片描述
选择JTAG目标设备选择Cortex-A7
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、总结

按照此篇的操作步骤可完整实现上FMQL的 BOOT.bin文件生成烧录以及IAR工程在线调试,包含fsbl工程及编译配置,应用程序配置,BOOT.bin生成所需的文件添加顺序等,最终烧录到QSPI Flash中。

这篇关于FMQL BOOT.bin固化文件生成及固化流程记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/571322

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Spring Boot中获取IOC容器的多种方式

《SpringBoot中获取IOC容器的多种方式》本文主要介绍了SpringBoot中获取IOC容器的多种方式,包括直接注入、实现ApplicationContextAware接口、通过Spring... 目录1. 直接注入ApplicationContext2. 实现ApplicationContextA

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS