DE-10开发板 FPGA SOC学习(三)GHRD工程简单的二次开发

  • 时间:
  • 浏览:
  • 来源:互联网

1.简介

GHRD的全称为Golden Hardware Reference Design,翻译过来就是黄金硬件参考设计。

1.1.工程所包含组件

  • ARM Cortex™-A9 MPCore HPS
    在这里插入图片描述

  • Four user push-button inputs
    在这里插入图片描述

  • Ten user DIP switch inputs
    在这里插入图片描述

  • Ten user I/O for LED outputs
    在这里插入图片描述

  • 64KB of on-chip memory
    在这里插入图片描述

  • JTAG to Avalon master bridges
    在这里插入图片描述

  • Interrupt capturer for use with System Console
    在这里插入图片描述

  • System ID
    在这里插入图片描述
    此外还有3个组件,暂时还不知道其作用是什么。在这里插入图片描述
    在这里插入图片描述
    mm_bridge_0应该是内存映射控制。

2.修改过程

2.1.硬件编译

2.1.1.工程准备

首先拷贝一份该工程,放到自己做实验的文件夹中。
双击打开qpf文件。
在这里插入图片描述
然后在tool中打开qsys,选择本工程的qsys文件。

2.1.2.修改led_pio配置

在这里插入图片描述
这里将位宽由10位修改为5位。
然后点击Assign Base Addresses重新分配一下基地址。
在这里插入图片描述
在这里插入图片描述
最后直接点击Generate -> Generate…生成新的qsys文件(也就是硬件配置文件)。
然后关闭qsys。

2.1.3.修改顶层文件

因为HPS接口并没有变,只是LED_PIO接口数变为了5。因此只需要修改顶层的这个接口,从10位改为5位。
在这里插入图片描述
由9位改为5位
在这里插入图片描述
由28位改为24位
在这里插入图片描述
由[9:1]改为[9:5]
在这里插入图片描述
将剩下的led进行心跳闪烁(原本只有一个LED心跳闪烁)
在这里插入图片描述
之后点击编译即可。

其实到这里生成完sof文件之后,就可以直接进入2.3.软件开发部分了。2.2只是为了更新uboot,

2.1.4.将sof文件转换为压缩后的rbf文件

进入工程中的output文件夹,双击sof_to_rbf.bat文件就能够自动生成该文件。
在这里插入图片描述

2.2.制作Preloader Image

此步骤主要编译 U-Boot 和 Preloader。
首先双击该bat文件,打开DES控制台
首先打开DES

2.2.1使用BSP-editor

1.输入:

bsp-editor

在这里插入图片描述
2.左上角点击 File ->New HPS BSP…
在这里插入图片描述
3.打开之后是这样的界面
在这里插入图片描述
4.设置路径选择该工程下面的hps_isw_handoff\soc_system_hps_0,点击ok
在这里插入图片描述
5.之后点击generate生成即可,完成之后点击exit。
在这里插入图片描述
6.然后工程文件夹下面会有一个 software 的文件夹,里面有一个 spl_bsp 文件夹。
在这里插入图片描述

2.2.2.编译 preloader 和 uboot

回到之前的控制台如下命令,进入生成的这个文件夹。

cd E:/SOC_study/altera_soc/DE10_Standard_GHRD/software/spl_bsp

然后输入

make uboot

整个过程很慢,我大概20多分钟,中间要记得按几次回车,不然会不动了。
在这里插入图片描述
编译完成后在 software\preloader\uboot-socfpga 目录下会找到 u-boot.img 文
件,在 software\preloader\uboot-socfpga\spl 下会找到 u-boot- spi.bin

2.2.3.生成Preloader Image

将上面说的 u-boot- spi.bin 和u-boot.img(这个文件下一步才需要)文件复制,粘贴到向上两层的 preloader 目录中
然后将控制台工作目录转到preloader中,输入:

mkpimage –hv 0 -o preloader.img u-boot-spl.bin

在这里插入图片描述
然后会产生一个 preloader.img 文件
在这里插入图片描述

2.2.4.更新镜像uboot

在此之前需要将做好的SD卡插到读卡器,然后再插到电脑上,这里我的U盘是F盘
在这里插入图片描述

输入:

alt-boot-disk-util -p preloader.img -b u-boot.img -a write -d F

提示失败
在这里插入图片描述
换成在Linux上更新
链接: 在SoCEDS环境下编译和更新preloader和uboot程序的方法.
最终完成uboot更新,在终端上可见最新时间为(Mar 212021 - 00:13:51)
在这里插入图片描述

2.3.设备树更新

参考: DE-10开发板 FPGA SOC学习(五)生成 Device Tree
生成之后要把设备树文件复制到SD卡中,替换掉原来的设备树文件。

2.4.软件C开发

2.4.1.生成HPS头文件

找到我们安装的EDS路径,双击打开下图标记的bat文件,启动控制台。
在这里插入图片描述
输入控制台命令:
1.首先将工作路径调整到GHRD工程路径下。

cd E:/SOC_study/altera_soc/DE10_Standard_GHRD

2.我们需要生成一个HPS头文件,该头文件是定义FPGA端IP对应到HPS上的物理地址等信息的。在工程下面有个generate_hps_qsys_header.sh文件。
在这里插入图片描述
打开是这样的内容,功能是根据qsys生成的sopcinfo硬件数据文件(该硬件信息文件放在工程目录下,如果不是,需要修改路径),生成头文件,该头文件命名为hps_o.h

#!/bin/sh
sopc-create-header-files \
"./soc_system.sopcinfo" \
--single hps_0.h \
--module hps_0

操作过程:

./generate_hps_qsys_header.sh

在这里插入图片描述
生成之后打开该头文件,可以看到其硬件信息,如图,为led在hps中的相关信息,主要关注其物理地址映射LED_PIO_BASE 为0x3000,LED_PIO_DATA_WIDTH 为数据位宽10,也就是该工程定义的LED为10位pio接口。
在这里插入图片描述

2.4.2.编译c文件

这里先进入HPS_FPGA_LED文件夹中,EDS控制台输入:

cd HPS_FPGA_LED

这个文件夹是从例程文件夹拿过来的,是控制LED实现流水灯的代码,内部有3个文件,其中hps_0.h就是刚才生成的硬件的头文件。
在这里插入图片描述
直接make即可生成可执行文件
在这里插入图片描述
操作过程:
在这里插入图片描述

2.5.SD卡存储

将HPS_FPGA_LED可执行文件直接赋值到sd卡中。
在这里插入图片描述

2.6.跑程序

如果跳过2.2部分,需要先将sof文件通过jtag配置FPGA,再进行后面的操作。
终端输入操作:

fdisk -l     #查看分区
mount -t vfat /dev/mmcblk0p1 /mnt  #把mmcblk0p1分区挂载到mnt。
cd /mnt       #进入mnt
ls          #查看该目录下文件

之后就可以执行可执行文件了。
在这里插入图片描述

本文链接http://www.dzjqx.cn/news/show-617255.html