SOC FPGA之HPS模型设计(二)

根据SOC FPGA之HPS模型设计(一)

Quartus工程经过全编译后会产生Handoff文件夹、SOPCINFO文件、SVD文件

二、生成Preloader镜像文件

通过信息交换文件Handoff文件生成Preloader,需要用到SOC EDS

Preloader也被称为spl(Second Program Loader)或u-boot-spl

在SOC EDS安装目录下双击Embedded_Command_Shell.bat文件启动嵌入式命令Shell窗口,输入bsp-editor启动BSP编辑器

选择File->New BSP,选择工程目录下的\hps_isw_handoff\soc_system_hps_0子目录,该目录包含Qsys产生的xml文件(描述了定制SOC的外设和DDR设置) ,点击OK创建BSP设置文件setting.bsp以及子目录\software\spl_bsp,该目录为Preloader工程目录

点击Generate产生Preloader源代码及makefile文件,然后退出BSP编译器,可以查看沈城的.h文件

在Shell窗口进入到software\spl_bsp文件夹,输入make指令进行编译,编译完成后在spl_bsp\uboot-socfpga\spl文件夹下会生成Preloader的ELF文件u-bbot-spl和二进制文件u-bbot-spl.bin

这里出了点问题,会提示find_fast_cwd: WARNING: Couldn't compute FAST_CWD pointer

解决方法有两个:

【解决】find_fast_cwd: WARNING: Couldn't compute FAST_CWD pointer_0 [main] find 7136 find_falst_cwd_好像不对劲的博客-CSDN博客

win10下解决编译环境find_fast_cwd: WARNING: Couldn't compute FAST_CWD pointer_find_fast_cwd couldn't compute_清浅灬的博客-CSDN博客 因为我装了多个版本的Quartus和SOC DES,因此用了第一个,亲测有效

之后又出现了一个问题,在生成preloader报错Failed to open gdrive/....../uboot-socfpga.tar.gz

在windows下make 生成 preloader 时报错 (18.1 版本的SOCEDS) - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

然后又又出现了问题,提示什么make: *** No rule to make target ` ', needed by xxx. Stop

这里首先要到Qsys中的HPS组件中**取消勾选Use default MPU clock frequency,**重新生成Qsys系统

然后**在bsp-editor中boot------FAT_SUPPORT------勾选spl.boot、将Advanced------spl 取消勾选**


解决完报错之后再输入make就直接生成.bin文件了

在spl文件中就可以看到生成的spl文件夹下的u-boot-sol.bin

将spl下的u-boot-spl.bin文件复制到spl_bsp下,在Shell中进入spl_bsp,输入mkpimage -hv 0 -o preloader_with_header.img u-boot-spl.bin指令(必须要-hv 0),即可在spl_bsp下产生preloader_with_header.img镜像文件,镜像文件可在linux环境下通过输入相应命令更新到电脑boot SD卡中

三、生成设备树(Device Tree)

设备树是一种有关硬件系统描述的数据结构,可以描述整个系统上挂载了多少种类的硬件。设备书系统上的硬件信息可以传递给linux操作系统,就不需要在内核Kenel中进行大量的编码。

Qsys产生出FPGA的系统(.sopcinfo)后,通过SOC EDS中的Device Tree产生器生成设备树的源文档(dts),该文档描述了有关HPS的外设以及使用到的FPGA软核IP和用户自定义的外设等信息。

生成设备树源文件.dts需要.sopcinfo、hps_clock_info.xml、xxx_board_info.xml文件

Shell窗口进入Quartus工程目录,输入以下命令产生.dts文件

cpp 复制代码
sopc2dts --input xxx.sopcinfo --output xxx.dts <--board xxx_board_info.xml -board hps_clock_info.xml -bridge-removal all> //<>为可选项

.dtb文件是.dts文件经Device Tree编译后生成的二进制格式的Device Tree描述,可被Linux内核解析。通常在为目标板制作NAND、SD卡启动镜像时,会为.dtb文件预留一个很小的存放区域(FAT分区),之后bootloader在引导Kernel过程中会先读取该.dtb到内存中(如DDR3存储器)。

在Shell窗口输入以下命令产生.dtb文件

cpp 复制代码
dtc -I dts -o dtb -o xxx.dtb xxx.dts

此外,由于工程文件夹下有 Makefile,因此可以直接采用 make 命令产生两个文件

cpp 复制代码
make dts
make dtb
相关推荐
电棍23328 分钟前
verilog测试平台设计与verilog的synthesis
fpga开发
Bit流2 小时前
记录此刻:历时两月,初步实现基于FPGA的NVMe SSD固态硬盘存储控制器设计!
fpga开发·#fpga nvme ssd·# nvme ssd 读取·#fpga nvme协议实现
楼台的春风2 小时前
【STM32 基于PID的闭环电机控制系统】
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·算法
stm32发烧友2 小时前
基于STM32的智能电力监测与需求响应系统
stm32·单片机·嵌入式硬件
Turnin111113 小时前
stm32四种方式精密控制步进电机
单片机·嵌入式硬件·电机控制
SRA.4 小时前
STM32——HAL库开发笔记22(定时器3—呼吸灯实验)(参考来源:b站铁头山羊)
笔记·stm32·嵌入式硬件
SRA.4 小时前
STM32——HAL库开发笔记21(定时器2—输出比较)(参考来源:b站铁头山羊)
笔记·stm32·嵌入式硬件
日记成书7 小时前
详细介绍嵌入式硬件设计
嵌入式硬件·深度学习·学习
wenchm7 小时前
细说STM32F407单片机1个ADC使用DMA同时采集3个输入通道的方法
stm32·单片机·嵌入式硬件
SRA.7 小时前
STM32——HAL库开发笔记23(定时器4—输入捕获)(参考来源:b站铁头山羊)
笔记·stm32·嵌入式硬件