DE-10开发板 FPGA SOC学习(三)熟悉SOC开发流程

1.GHRD工程简介

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

1.1.工程所包含组件

  • ARM Cortex™-A9 MPCore HPS
    在这里插入图片描述
    其中f2h_axi代表FPGA端到HPS端的通信总线,h2f_axi代表HPS到FPGA端的通信总线,h2f_lw_axi表示低速的通信。

  • 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.简单开发

开发主要分为硬件开发、系统更新和软件开发。通过硬件开发生成sof文件,最后转换成rbf文件用于SD卡配置HPS系统。系统更新主要有u-boot和preloader以及设备树的更新。软件开发则是C语音开发控制PIO驱动LED灯流水。

2.1.硬件编译

2.1.1.工程准备

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

2.1.2.修改led_pio配置

双击选中系统设置好的led_pio这个IP核,在右侧会出现这个IP的属性面板。本次实验将位宽由10位修改为5位。
在这里插入图片描述
然后点击Assign Base Addresses重新分配一下外设地址。
在这里插入图片描述
在这里插入图片描述
最后直接点击Generate -> Generate…生成新的qsys文件(也就是硬件配置文件)。
然后关闭qsys。

2.1.3.修改顶层文件

因为只修改了PIO的位宽,所以HPS的接口并没有变,只是LED_PIO接口位宽变为了5。因此只需要修改顶层的这个接口,从10位改为5位。
在这里插入图片描述
找到这个信号的定义,改成5位位宽即可
在这里插入图片描述
再找到与这个信号有关的信号,也进行一定修改,这里看个人想法改就行。
由28位改为24位
在这里插入图片描述
将LED灯的接口由[9:1]改为[9:5]
在这里插入图片描述
将剩下的led进行心跳闪烁(原本只有一个LED心跳闪烁)
在这里插入图片描述
之后点击编译即可生成sof文件。

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

进入工程中的output文件夹,双击sof_to_rbf.bat文件就能够自动生成该文件。
在这里插入图片描述
其实到这里生成完rbf文件之后,就可以直接进入2.3.软件开发部分了。2.2只是为了学习一下系统更新是怎样的过程。

2.2.系统更新

2.2.1.制作Preloader Image和u-boot

首先双击该bat文件,打开DES控制台
首先打开DES

2.2.1.1使用BSP-editor生成preloader

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.1.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.1.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.2.更新uboot和preloader

在此之前需要将做好的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.2.3.设备树更新

首先确认工程文件当中是否有soc_system.sopcinfohps_common_board_info.xml以及soc_system_board_info.xml文件。
根据后两个文件可以生成dts文件。
1.打开控制台
将当前目录调整到工程目录下。
输入

sopc2dts --input soc_system.sopcinfo --output soc_system.dts --board soc_system_board_info.xml --board hps_clock_info .xml --bridge-removal all

生成dts文件。
再输入

dtc -I dts -O dtb -o soc_system.dtb soc_system.dts

生成dtb文件。
在这里插入图片描述
dtb文件就是设备树文件,为一个二进制文件。
实际上工程目录文件夹下面还有一个Makefile文件,可以直接输入

make dts
make dtb

生成设备树文件。
生成之后要把设备树文件复制到SD卡中,替换掉原来的设备树文件。

2.3.软件C开发

2.3.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 为0x100,LED_PIO_DATA_WIDTH 为数据位宽5,也就是该工程定义的LED为5位pio接口。
在这里插入图片描述

2.3.2.编译c文件

首先从例程文件夹拿过来一个叫HPS_FPGA_LED的工程放到我们的实验工程下面,这是是控制LED实现流水灯的代码,内部有3个文件,其中hps_0.h我们需要用刚才生成的硬件的头文件替换掉。
在这里插入图片描述
这里先进入HPS_FPGA_LED文件夹中,EDS控制台输入:

cd HPS_FPGA_LED

直接make即可生成可执行文件
在这里插入图片描述
操作过程:
在这里插入图片描述
最后将HPS_FPGA_LED可执行文件直接复制到sd卡中。
在这里插入图片描述

2.4.跑程序测试系统

将开发板上电,插上串口调试。
终端输入操作:

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

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

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值