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
相关推荐
wenchm1 小时前
细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV
stm32·单片机·嵌入式硬件
北国无红豆2 小时前
【CAN总线】STM32的CAN外设
c语言·stm32·嵌入式硬件
m0_748254093 小时前
STM32--超声波模块(HC—SR04)(标准库+HAL库)
stm32·单片机·嵌入式硬件
南城花随雪。4 小时前
单片机:实现FFT快速傅里叶变换算法(附带源码)
单片机·嵌入式硬件·算法
逝灮4 小时前
【蓝桥杯——物联网设计与开发】基础模块8 - RTC
stm32·单片机·嵌入式硬件·mcu·物联网·蓝桥杯·rtc
LXL_244 小时前
模拟——郑益慧_笔记1_绪论
嵌入式硬件
weixin_4526006910 小时前
串行时钟保持芯片D1380/D1381,低功耗工作方式自带秒、分、时、日、日期、月、年的串行时钟保持芯片,每个月多少天以及闰年能自动调节
科技·单片机·嵌入式硬件·时钟·白色家电电源·微机串行时钟
吉大一菜鸡13 小时前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
森旺电子13 小时前
51单片机仿真摇号抽奖机源程序 12864液晶显示
单片机·嵌入式硬件·51单片机
不过四级不改名67715 小时前
蓝桥杯嵌入式备赛教程(1、led,2、lcd,3、key)
stm32·嵌入式硬件·蓝桥杯