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
相关推荐
Vizio<3 分钟前
STM32HAL库开发笔记-GPIO输入
笔记·stm32·单片机·嵌入式硬件
硅农深芯23 分钟前
什么时候要用开漏输出(open drain output)?
单片机·嵌入式硬件·gpio·开漏输出·open drain
电子工程师-C512 小时前
基于51单片机的家居环境监测系统
单片机·嵌入式硬件·51单片机
Big_潘大师2 小时前
十轴IMU模块-AHRS角度姿态、加速度计、磁力计、气压陀螺仪传感器
stm32·单片机·嵌入式硬件·arduino·陀螺仪
ghomeway4 小时前
keil使用虚拟的调试串口给调试助手发送数据
单片机·嵌入式硬件
Jason_zhao_MR5 小时前
米尔RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
linux·嵌入式硬件·物联网·架构·嵌入式·嵌入式实时数据库
小痞同学5 小时前
stm32跑马灯实验
stm32·单片机·嵌入式硬件
技术性摸鱼5 小时前
FPGA选型参数
fpga开发
染予6 小时前
串口发送之中断方式
单片机·嵌入式硬件
Vizio<7 小时前
STM32HAL库开发笔记-STM32CubeMX点灯
笔记·stm32·嵌入式硬件