友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
ww
DE1-SoC Training Material
July 3, 2014
1
www.terasic.com.cn
CONTENTS
第1章
DE1-SOC 快速入门 ............................................................................................................................. 6
1.1 安装软件 .................................................................................................................................................. 6
安装 QUARTUS II 软件 ................................................................................................................... 6
1.1.2
安装 ALTERA SOC 嵌入式设计套装(ALTERA SOC EMBEDDED DESIGN SUITE..................................... 10
1.1.3
安装课程材料 ............................................................................................................................. 16
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1.1.1
1.2 开发版出厂设定件 ................................................................................................................................ 16
1.2.4
MSEL 的预设 ................................................................................................................................ 16
1.2.5
连接设定 ..................................................................................................................................... 17
1.2.6
开电测试 ..................................................................................................................................... 17
1.3 开发版出厂设定件 ................................................................................................................................ 18
1.3.1
开电测试 .........................................................................................................................................
1.3.2
下载 FPGA SRAM OBJECT 文件 ..................................................................................................... 20
1.4 在 DE1-SOC 上运行 LINUX ...................................................................................................................... 25
1.4.1
设定串口终端 ............................................................................................................................. 25
1.4.2
制作 MICROSD CARD IMAGE .............................................................................................................. 28
1.4.3
在 DE1-SOC 板卡上运行 LINUX..................................................................................................... 29
第2章
DE1-SOC 硬件实验 ........................................................................................................................... 31
2.1 SOC FPGA 设计流程 ................................................................................................................................ 31
2.2 DE1-SOC 系统框图.................................................................................................................................. 36
2.3 定义硬件系统架构 ................................................................................................................................ 36
2.4 搭建 QSYS 系统........................................................................................................................................ 38
打开 QUARTUS II 工程 ................................................................................................................. 39
2.4.2
配置 HPS 系统(HARD PROCESSOR SYSTEM) ................................................................................... 41
2.4.3
添加并配置 LED 和 BUTTON PIO 组件 ........................................................................................ 52
2.4.4
编译生成 QSYS 系统 ..................................................................................................................... 59
ww
2.4.1
2.5 编辑并编译 QUARTUS II 工程 ................................................................................................................. 61
2.6 验证硬件系统设计 ................................................................................................................................ 67
2.7 QSYS 与 QURARTUS II 生成的档案 ......................................................................................................... 75
DE1-SoC Training Material
July 3, 2014
2
www.terasic.com.cn
2.8 生成 PRELOADER IMAGE FILE ...................................................................................................................... 75
2.9 生成 DEVICE TREE .................................................................................................................................... 84
第3章
DE1-SOC 软件实验(一) ................................................................................................................... 89
3.1 引述 ........................................................................................................................................................ 89
软件开发流程 ............................................................................................................................. 89
3.1.2
系统要求 ..................................................................................................................................... 90
3.1.3
教程目的 ..................................................................................................................................... 90
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
3.1.1
3.2 创建工程 ................................................................................................................................................ 91
3.2.1
创建工程文件夹 ......................................................................................................................... 91
3.2.2
创建程序文件 ............................................................................................................................. 91
3.2.3
创建 MAKEFILE 文件 ...................................................................................................................... 91
3.2.4
编译工程 ..................................................................................................................................... 92
3.3 运行工程 ................................................................................................................................................ 95
3.3.1
运行可执行文件 ......................................................................................................................... 95
3.3.2
将 MY_FIRST_HPS 放入 SD CARD...................................................................................................... 95
3.3.3
将 MY_FIRST_HPS 放入 SD CARD (U 盘拷贝) ................................................................................. 99
第4章
DE1-SOC 软件实验(二) ................................................................................................................. 102
4.1 引述 ...................................................................................................................................................... 102
4.2 HPS GPIO 原理...................................................................................................................................... 102
4.2.1
用户 LED 和 KEY ........................................................................................................................ 102
4.2.2
FUNCTION BLOCK DIAGRAM 方块图 .................................................................................................. 102
4.2.3
GPIO 接口方块图 ...................................................................................................................... 103
4.2.4
GPIO 寄存器组 .......................................................................................................................... 103
4.2.5
GPIO 寄存器地址映射 .............................................................................................................. 104
4.2.6
软件 API .................................................................................................................................... 105
4.2.7
LED 和 KEY 控制 ........................................................................................................................ 105
4.3 创建工程 .............................................................................................................................................. 107
创建工程文件夹 ....................................................................................................................... 107
ww
4.3.1
4.3.2
创建程序文件 ........................................................................................................................... 107
4.3.3
创建 MAKEFILE 文件 .................................................................................................................... 110
4.3.4
编译工程 ................................................................................................................................... 111
4.3.5
执行例程 ................................................................................................................................... 112
DE1-SoC Training Material
July 3, 2014
3
www.terasic.com.cn
第5章
DE1-SOC 软件实验(三) ................................................................................................................. 114
5.1 引述 ...................................................................................................................................................... 114
5.1.1
知识需求 ................................................................................................................................... 114
5.1.2
ALTERA SOC FPGA......................................................................................................................... 114
5.2 应用程序工程 ...................................................................................................................................... 116
HPS 头文件 ................................................................................................................................ 116
5.2.2
映射 PIO_LED 地址 ..................................................................................................................... 117
5.2.3
LED 控制.................................................................................................................................... 118
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
5.2.1
5.3 创建程序 .............................................................................................................................................. 119
5.3.1
创建工程文件夹 ....................................................................................................................... 119
5.3.2
创建程序文件 ........................................................................................................................... 119
5.3.3
创建 MAKEFILE 文件 .................................................................................................................... 120
5.3.4
编译工程 ................................................................................................................................... 121
5.4 执行例程 .............................................................................................................................................. 122
第6章
进阶实验 ........................................................................................................................................ 124
6.1 引述 ...................................................................................................................................................... 124
6.2 FPGA 与 HPS 接口介绍 ......................................................................................................................... 124
6.3 HPS TO FPGA 数据传输 ......................................................................................................................... 126
6.3.1
硬件构架 ................................................................................................................................... 126
6.3.2
图像处理 IP 功能的分析 ......................................................................................................... 129
6.3.3
软件设计 ................................................................................................................................... 130
6.3.4
编译软件和运行 ....................................................................................................................... 131
6.4 FPGA ACESS HPS DDR3 ........................................................................................................................... 132
6.4.1
软硬件设计 ............................................................................................................................... 132
6.4.2
实验步骤 ................................................................................................................................... 133
6.5 FPGA 访 HPS 内存 DEMO ........................................................................................................................ 138
硬件设计 ................................................................................................................................... 138
6.5.2
软件设计 ................................................................................................................................... 139
6.5.3
编译和运行 ............................................................................................................................... 141
第7章
DS-5 (ALTERA EDTION) 应用设计 .............................................................................................. 144
ww
6.5.1
7.1 引述 ...................................................................................................................................................... 144
DE1-SoC Training Material
July 3, 2014
4
www.terasic.com.cn
7.2 打印 HELLO WORLD .................................................................................................................................. 144
7.2.1
创建新工程 ............................................................................................................................... 144
7.2.2
编译工程 ................................................................................................................................... 153
7.2.3
调试配置 ................................................................................................................................... 155
7.2.4
下载及运行 ............................................................................................................................... 160
7.3 点亮 HPS LED........................................................................................................................................ 162
复制工程 ................................................................................................................................... 162
7.3.6
编译工程 ................................................................................................................................... 162
7.3.7
调试配置 ................................................................................................................................... 165
7.3.8
下载及运行 ............................................................................................................................... 168
7.3.9
原理 ........................................................................................................................................... 170
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
7.3.5
7.4 点亮 FPGA LED...................................................................................................................................... 172
复制工程 ................................................................................................................................... 172
7.4.11
编译工程 ................................................................................................................................... 172
7.4.12
调试配置 ................................................................................................................................... 174
7.4.13
下载及运行 ............................................................................................................................... 178
7.4.14
原理 ........................................................................................................................................... 179
7.4.15
调试应用程序 ........................................................................................................................... 180
ww
7.4.10
DE1-SoC Training Material
July 3, 2014
5
www.terasic.com.cn
第1章
DE1-SoC 快速入门
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
此文档引导用户快速熟悉和了解 DE1-SoC 开发板的开发环境与使用方法. 通过文档用
户可以完成以下目标 :
安装开发软件 : Quartus II and SoC EDS
开发板基础设定
下载 FPGA 测试
运行 embedded Linux OS
1.1 安装软件
要能完整的使用 DE1-SOC , 用户需要安装以下 Altera 开发软件:
Altera Quartus II software
Altera SoC Embedded Design Suite
建议计算机设备符合如下需求 :
Windows 7 64 bit 操作系统
4GB 以上的内存
I3 或更高规格的 CPU
10GB free 及以上硬盘空间
ww
1.1.1 安装 Quartus II 软件
Quartus II 是进行 Altera FPGA/CPLD 开发最基本也是最重要的一套工具, 从设计的
输入到系统合成进而产生编译文件都由此套工具完成. 需要安装的软件版本为:
Quartus II Web 版本 v13.1。
DE1-SoC Training Material
July 3, 2014
6
www.terasic.com.cn
Note:为了使客户快速上手和节约时间,这里暂指定使用 web edition 版本,有条件
(license 和更大存储空间)的话推荐使用 subscription edition 版本。
下面的步骤将会展示如何至 Altera 的网页上下载包装档案,并且安装至用户的计算机
上。
链接到 Quartus II Web 版本下载网页 : http://dl.altera.com/?edition=web
如图 1-1 所示。
Quartus 版本选择 13.1 ; 操作系统为 Windows; 下载方法用 Akamai DLM3 下载
管理器。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-1 Quartus web 版本下载网页
下方的文件选择点击独立文件 如图 1-2 所示:
ww
图 1-2 Quartus 下载选择独立文件
DE1-SoC Training Material
July 3, 2014
7
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
Device 部分只勾选 DE1-SOC 使用的 Cyclone V device。设定完后点选下载所选
择的文件如图 1-3 所示
圖 1-1
图 1-3 选择 Cyclone V 器件
下载文件会需要 myAltera 账户, 若没有请在下方创建一个账户后登入方可进行
下载,步骤如图 1-4 所示:
图 1-4 输入 Altera 账号资料
Installer 这个工具会先被需要下载, 点选"download the installer"如图 1-5
所示:
ww
DE1-SoC Training Material
July 3, 2014
8
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-5 选择安装 altera 下载工具
安装 Installer 如图 1-6 所示:
图 1-6 安装 Installer
Installer 安装完成后会询问 Quartus 安装档案要下载至何处, 请选择适当的地点
存放如图 1-7 所示:
ww
图 1-7 选择下载文件存储位置
下载器会开始下载 Quartus 安装文件如图 1-8 所示:
DE1-SoC Training Material
July 3, 2014
9
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-8 开始下载安装文件
下载完成后, 请执行安装文件安装 Quartus 。
1.1.2 安装 Altera SoC 嵌入式设计套装(Altera SoC Embedded
Design Suite
Altera SoC 嵌入式设计套装(EDS)包含了开发(debug)工具,实用工具程序,运行时
软件和应用实例等,用户可以使用 Altera SoC EDS 开发针对 Altera 的 SoC 硬件平台
比如 DE1-SoC 的固件和应用软件。
用户可以从以下 Altera 的网页下载该软件::
https://www.altera.com/download/software/soc-eds
如图 1-9 设定。 最后按下载
ww
DE1-SoC Training Material
July 3, 2014
10
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-9 SoC 嵌入式设计套装下载网页
选择安装档案的存放位置后, 开始下载如图 1-10
ww
图 1-10 储存下载文件
对于免费的网络版 SoC EDS,用户将可以通过以太网连接认证永久地使用 Altera 版
DS-5 调试 Linux 应用程序。如果用户已购买了 SoC EDS 订阅版,会收到一个 ARM 许可
DE1-SoC Training Material
July 3, 2014
11
www.terasic.com.cn
证序列号,或者可以获得一个 30 天的评估许可证。
此次实验将使用 30 天的评估许可证来操作 DS-5。 下列步骤显示了如何获取一个网络
版的许可证或一个 30 天的评估许可证。
在下载网页的许可页面, 找到 "激活代码"的链接, 点即进入 ARM 公司的 Altera
DS-5 版本页面如图 1-11 所示:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-11 获取 DS-5 激活代码
搜寻到如下图的图案, 复制该激活代码 : AC+7061642139303338。 在稍后安装
DS-5 软件时会需要用到这组号码如图 1-12 所示:
ww
图 1-12 DS-5 激活代码
DE1-SoC Training Material
July 3, 2014
12
www.terasic.com.cn
当 Altera SoC 嵌 入 式 设 计 套 装 安 装 档 案 下 载 完 成 后 , 双 击 档 案 ( 如
SoCEDSSetup-13.1.0.162.exe) 执行安装
安装 SoC 嵌入式设计套装(EDS)之后,可以继续安装 Altera 版的 ARM® Development
Studio 5 (DS-5)软件。
启动 DS-5。 Start --> All Programs --> ARM DS-5 --> Eclipse for DS-5
Workspace 启动程序窗口会要求用户选择一个 workspace。
按 OK 选择默认的 workspace
用户将会看到"No Licenses Found" 窗口,选择打开许可证管理器(License
Manager)如图 1-13 所示:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-13 打开许可证管理器
在 ARM 许可证管理器中按“Add License”按钮,输入用户之前获取的激活码。
按“Next”按钮如图 1-14 所示:
ww
DE1-SoC Training Material
July 3, 2014
13
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-14 输入激活代码
使用下拉菜单选择一个主机的 Host ID。按“Next”按钮如图 1-15 所示:
ww
图 1-15 选取主机 Host ID
DE1-SoC Training Material
July 3, 2014
14
www.terasic.com.cn
输入用户 ARM 帐户的电子邮件地址和密码如图 1-16 所示:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-16 输入 ARM 帐户信息
如果用户没有 ARM 帐户,请点击链接创建一个 ARM 帐户
按 Finish 按钮
一个 Web 版的许可证或订阅版 30 天评估许可证现已安装成功如图 1-17 所示:
ww
图 1-17 完成添加 License
DE1-SoC Training Material
July 3, 2014
15
www.terasic.com.cn
1.1.3 安装课程材料
当获取到本次上课教材后, 先将文件拷贝入计算机内。
本实验课程的材料清单如下:
内容
cd
DE1-SoC 开发板光盘。 内有原理图, 设计范例等
lab
本次实验课所使用到的设计范例
tool
实验中所需要的驱动, 软件工具。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
目录
1.2 开发版出厂设定件
本章节将会介绍 DE1-SOC 的相关出厂设定, 并让 DE1-SOC 接上电源且观察预先配置的
FPGA 代码运行状态
1.2.4 MSEL 的预设
在 DE1-SOC 板背面, 有个 MSEL 的指拨开关 SW10 如图 1-18 所示:
图 1-18 FPGA MSEL 开关
ww
此开关用途为设定 FPGA 的配置来源。常用的设定如下表 :
MSEL[4:0]
设定模式
描述
10010
01010
AS
FPPx32
00000
FPPx16
FPGA configured from EPCQ (default)
FPGA configured from HPS software: Linux
FPGA configured from HPS software: U-Boot, with
image stored on the SD card, like LXDE Desktop
or console Linux with frame buffer edition。
DE1-SoC Training Material
July 3, 2014
16
www.terasic.com.cn
当 MSEL 被设定在 ASx4 mode 下, FPGA 会通过 EPCQ 配置起来。
若设定在 FPPx32 模式下工作, 则由 HPS 负责配置 FPGA。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
出厂默认设定值为 ASx4 模式, 即 MSEL[4:0] = 10010。 用户可以观察手上的 DE1-SoC
的配置是否如上图所示。 更多有关 FPGA 的配置设定请参阅 :
http://www.altera.com/literature/hb/cyclone-v/cv_52007.pdf
1.2.5 连接设定
当用户拿到 DE1-SoC 板卡后, 请照下图将相关的线材与板子上对应的接口连接。 接下
来的实验会需要如此设定如图 1-19 所示:
将电源供应器插上电源接口。
使用白色的 USB Type B 线材将计算机与 DE1-SoC 上的 USB-Blaster II 接口连
接。此接口主要负责 FPGA 配置以及 HPS Debug 使用。
使用 Mini-USB 线材将计算机与 DE1-SoC 上的 UART-to-USB 接口连接。此接口
主要用于计算机与 HPS 互相通信使用。
图 1-19 DE1-SoC 连接设定
ww
1.2.6 开电测试
确认 SW10 设定如上一章节所描述被设定在 ASx4 mode 下。 按下 DE1-SoC 的红色电源
开关。 观察版子下方的 10 个 LED 是否有在闪烁。 并且数码管上数字从 0~F 轮回计数。
DE1-SoC Training Material
July 3, 2014
17
www.terasic.com.cn
1.3 开发版出厂设定件
本章节将介绍如何为用户的计算机安装 USB-Blaster II 的驱动。 同时也会示范如何下
载 .sof 文件到 DE1-SoC 开发板上的 FPGA。 但在操作前,请先确认计算机已经安装好
Quartus II。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1.3.1 安装 USB-Blaster II 驱动
下面的步骤将介绍如何安装 USB-Blaster II 的驱动:
1. 首先将用户的计算机与 DE1-SoC 上的 USB-Blsater 接口(J13) 通过 USB 下载线连接
起来如图 1-20 所示:
图 1-20 DE1-SoC USB Blaster 连接设定
ww
2. 开启板子上的电源并且打开电脑 window 的设备管理器。用户将会看到系统发现了
一个未知的装置如图 1-21 所示:
DE1-SoC Training Material
July 3, 2014
18
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-21 侦测 USB Blaster 器件
3. 选 择 这 个 未 知 的 装 置 并 更 新 它 的 驱 动 。 用 户 可 以 在 \<Quartus II 安 装 路
径 >\drivers\ usb-blaster-ii 文 件 夹 下 找 到 这 个 装 置 的 驱 动 (ex :
C:\Altera\13.1\quartus\drivers\usb-blaster-ii\)。
ww
4. 当驱动被正确的安装完成后,用户可以在设备管理器下看到 "Altera USB-Blaster
II(Unconfigured)"。代表用户已经正确的安装好 USB-Blaster II 的驱动如图 1-22
所示:
图 1-22 安装完 USB-Blaster 驱动
DE1-SoC Training Material
July 3, 2014
19
www.terasic.com.cn
1.3.2 下载 FPGA SRAM Object 文件
Quartus 内的 Programmer 为下载.sof 文件进入 FPGA 的主要工具。 用户进行接下来的
步骤前,请先确认 Qaurtus II 和 USB-Blaster 驱动已经被正确的安装好。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
跟以往的 FPGA 开发版有所不同之处在于 DE1-SoC 开发板上的 JTAG Chain 会出现两个
装置: FPGA 和 HPS(Hard Processor System)。 HPS 是在 SoC FPGA 才会出现的装置。
用户可以通过 DS-5 工具进行 Debug。 在 Programmer 下并不会使用到这个装置。 下
面是详细步骤:
1. 将用户的计算机和 DE1-SoC 开发板上的 USB-Blsater 接口(J13) 通过 USB 下载线连
接。并确认电源已开启。
2. 打开 Quartus II 软件并且选择 Tools > Programmer。 Programmer 窗口将会出现
如图 1-23 所示:
图 1-23 侦测 USB-Blaster II 下载线
确认 Hardware Setup 钮旁是否有出现 DE-SoC[UBB-1]。 若呈现 No Hardware
的状态如图 1-24 所示: 请按下 Hardware Setup 。 在 Hardware Setup 窗口下, 双
击 Hardware 栏内的 DE-SoC 让 Current selected hardware 出现 DE-SoC[UBB-1]。
按下 Close 离开。
ww
3.
DE1-SoC Training Material
July 3, 2014
20
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-24 侦测 USB-Blaster II 下载线
若用户的 Hardware Setup 窗口下还是未出现 DE-SoC, 请确认 DE1-SoC Blaster 接口有
正确跟计算机连接, 且 USB-Blaster II 驱动已经被正确安装。
ww
4. 点击 “Auto Detect”如图 1-25 所示:
DE1-SoC Training Material
July 3, 2014
21
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-25 侦测 JTAG Chain 上的器件
5. 选择 FPGA 装置 "5CSEMA5"如图 1-26 所示:
图 1-26 选择 FPGA 器件
ww
6. FPGA 和 HPS 装置会出现在 JTAG Chain 内如图 1-27 所示:
DE1-SoC Training Material
July 3, 2014
22
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-27 侦测到 FPGA 及 HPS 器件
ww
7. 点选 FPGA 装置。按下鼠标的右键会出现一个菜单, 选择 Change File 后会出现指
定.sof 文件路径的窗口如图 1-28 所示:
DE1-SoC Training Material
July 3, 2014
23
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-28 侦测到 FPGA 及 HPS 器件
ww
8. 选择 CD 内的 \Demonstration\FPGA\DE1_SoC_Default\DE1_SoC_Default.sof 如图
1-29 所示:
DE1-SoC Training Material
July 3, 2014
24
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-29 选择.sof 文件
9. 点选 “Program/Configure” check box, 然后点选 “Start” 钮后.sof 文件将
会被下加载 FPGA 如图 1-30 所示:
图 1-30 下载.sof 文件
ww
1.4 在 DE1-SOC 上运行 Linux
本节将介绍如何制作一个 Linux 可开机程序的 microSD card. 同时指引如何安装串口
的驱动让计算器可以与与 Linux 系统进行通讯或执行命令, 并检验 Linux 系统.
1.4.1 设定串口终端
DE1-SoC Training Material
July 3, 2014
25
www.terasic.com.cn
安装驱动:
1. 使用 mini-USB 线将计算机与 DE1-SoC 的 UART 转 USB 接口 (J4) 连接如图 1-31
所示:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-31 UART 转 USB 接口设定
开启 DE1-SoC 电源后用户将可以在计算机上的设备管理器里发现一个未识别
的装置: FT232R USB UART 如图 1-32 所示:
ww
2.
图 1-32 侦测 UART 转 USB 接口器件
在实验教材的目录\tool\drivers\USB2UART_driver 文件夹内放置有这个芯
DE1-SoC Training Material
July 3, 2014
26
www.terasic.com.cn
片的驱动, 用户可以使用 这个驱动来安装 usb-uart driver。
当驱动被安装完成后, USB Serial Port 会被识别出来并会显示 COM Port
的号码如 COM3 如图 1-33 所示:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
3.
图 1-33 UART 转 USB 驱动安装完成
设定串口终端的规格:
接下来我们会使用串口终端工具来与 DE1-SoC 连接。 用户可以在实验教材内的这个路
径: \tool\SSH\ , 找到 putty.exe 这个串口中端工具。 下面是详细的设定步骤:
ww
1. 执行 putty.exe, 选择 Serial 来进行串口通信。
2. 依照图 1-34 的设定来进行配置并储存起来。 注意下图所显示的 COM3 是要根据
用户的设备管理器所显示的 COM Port 号码。有可能是 COM7 or COM8...等。 请
特别注意这点。
DE1-SoC Training Material
July 3, 2014
27
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 1-34 串口中端工具设定
3. 设置完成后可以关闭 putty。
1.4.2 制作 microSD card Image
本章节将介绍如何制作一个可以让开发板 DE1-SoC 运行 Linux 的 microSD card。 用户
须要先在 DE1-SoC 产品网页内下载 image file。接着使用 Win32DiskImager.exe 这这
个工具来进行刻录 Linux image 到 microSD card 内。 在实验教材内的这个路径:
\tool\Win32DiskImager\ 可以取得。 下面是完整的步骤。
MicroSD 的规格需求:
容量: 4GB 以上
读写速度: Class 10
ww
Pre-built SD card Image:
用户可以在下面这个连接下载到 SD Card 的 image 档案 :
DE1-SoC Training Material
July 3, 2014
28
www.terasic.com.cn
http://www.terasic.com/downloads/cd-rom/DE1-SoC/linux_BSP/DE1_SoC_SD.zip。 请记得先
解压缩后再使用。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
下面是将 DE1_SoC_SD.img 档案烧写入 microSD card 的步骤:
1. 将 microSD card 通过读卡器接上计算机
2. 执行 Win32DiskImager.exe 如图 1-35 所示:
3. 输入 DE1_SoC_SD.img 文件的路径
4. 选择 microSD card 的磁盘位置
图 1-35 microSD cardimage 烧写工具
5. 点选 “write”后 开始刻录 image 文件进入 microSD card。 等待烧入完成后
即可移除 microSD card。
1.4.3 在 DE1-SoC 板卡上运行 Linux
ww
本节将介绍如何运行预装载的 Linux images 在 DE1-SoC 上。用户可以参照下面的步骤
来运行 Linux :
1. 请先确认 DE1-SoC 板电源是关闭状态
2. 将预装载有 Linux image 的 microSD card 插入 DE1-SoC 的 microSD card 插
槽
3. 开启 DE1-SoC 板的电源
4. 开启 putty.exe, 选择上一节提到已经存好的设定 DE1-SoC_usb 并点选 Open
5. 当系统成功 boot 起来如图 1-36 所示:Linux 系统会要求用户输入 login 信息。
输入 root 并按下 enter 后便可以登入系统
DE1-SoC Training Material
July 3, 2014
29
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
ww
图 1-36 运行 Linux 在 DE1-SoC
DE1-SoC Training Material
July 3, 2014
30
www.terasic.com.cn
第2章
DE1-SoC 硬件实验
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
DE1-SoC 开发板上的 Target FPGA 使用了 Altera Cyclone V SoC FPGA. Cyclone® V SoC
FPGA 在一个基于 ARM 的用户可定制芯片系统(SoC)中集成了分立处理器(HPS)、FPGA
和数字信号处理(DSP)功能。HPS 是基于 ARM Cortex-A9 Dual-core 处理器,具有丰
富外设和存储接口(DDR2/3)等。虽然 HPS 和 FPGA 能够独立工作,但是他们通过高性
能 AXI 总线桥接(bridge)实现高速宽带行数据通信,这个总线是双向的,HPS 总线主
机能够通过 HPS 至 FPGA 桥接访问 FPGA 架构中的总线及其外设。所有桥接兼容 AXI-3/4,
支持同时读写操作,相似的,FPGA 架构中的总线主机能够通过 FPGA 至 HPS 桥接访问
HPS 总线及其外设。所以 FPGA 系统设计将会以更佳的性能和灵活性呈现给设计者。
本文将会指导用户如何在 DE1-SoC 上运行 embedded Linux system,基于 linux system
编写示例应用程序,实现 HPS 控制 FPGA 总线(Avalon memory-mapped,以下简称 avmm)
相连的 LED。通过这个实验用户可以了解如下相关知识:
建立一个 SoC based FPGA hardware 系统
HPS 组件在 Qsys 内的设定(based on DE1-SoC board)
FPGA avmm 外设和 HPS 桥接
生成 Preloader 和 Device Tree(based on DE1-SoC board)
编译 linux 应用程序
Linux 下控制 HPS 的外设
HPS 总线到 FPGA 总线的 Address Mapping
HPS 控制 FPGA 端的 LED(based on DE1-SoC board)
ww
2.1 SoC FPGA 设计流程
基于 SoC 的 FPGA 嵌入式系统硬件与软件的开发流程如图 2-1 所示。首先要基于 Qsys
规划系统需要的外设,包括 HPS 与 FPGA 各自的接口。HPS 外设只需要根据 DE1-SoC 硬
件属性进行设定即可,FPGA 外设依旧是通过 IP 模块的方式添加。然后建立各个模块间
的连接(时钟,复位,总线),最后产生出硬件与软件开发各自所需的档案。
DE1-SoC Training Material
July 3, 2014
31
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-1 基于 SoC 的 FPGA 嵌入式系统设计
硬件开发和以往传统的基于 NiosII 的 FPGA 设计流程相同,使用 Quartus 加入 Qsys 以
及用户逻辑,然后设定 FPGA 管脚分配,最后综合编译产生 .sof 编程档案。
软件的开发则通过 Altera 的 SoCEDS 开发工具将 Qsys 所做的 HPS 硬件设定转换成产生
Preloader、uboot 和 Device Tree 所需的输入文件。这些文件可以协助 HPS 在 DE1-SoC
上运行 embedded linux system,linux 内核解析需要挂载硬件外设并完成 boot。然后
开发基于 linux 操作系统的应用程序并在 DE1-SoC 上运行。应用程序可以实现 HPS 和
FPGA 协同工作完成定制化设计。
ww
首先大致介绍下 Boot SD card 的制作流程,一般从系统设计开始到生成一个可以 boot
linux 操作系统的 SD Card,其所需要的软件工具与生成档案与如
DE1-SoC Training Material
July 3, 2014
32
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
ww
图 2-2(参考 Rockboard.org)所示:
DE1-SoC Training Material
July 3, 2014
33
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-2 Boot SD card making processure
所需要的工具如下面的表格 2-1 所示:
表格 2-1 Tools for development
Tool
Description
Part of
Quartus II
Create, edit and compile FPGA hardware designs *
ACDS
DeviceTree
Generate Device Trees
SoC EDS
Generator
Converts between Device Tree file formats
ww
Device Tree
Compiler
Preloader
Generates Preloader source code based on hardware handoff
Generator
information
DE1-SoC Training Material
July 3, 2014
34
www.terasic.com.cn
Tool
Description
Part of
ARM DS-5 AE
Software Development Suite
Bitbake
Yocto build utility
Yocto Source
Package
Script that creates the SD card image
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
SD Card Script
表格 2-2 标示出了图 2-1 所列出的输入档案的用途。
表格 2-2 Description for files
File
Description
Quartus Project
FPGA Hardware Project source code
Board XML
File describing the development board,
used in creating the Device Tree
Clocking XML
File describing the development board,
used in creating the Device Tree
Yocto Source Package
Yocto recipes and necessary packages and
tools for building Linux
Web Server Files
Additional files needed for the web server
ww
running on the board
DE1-SoC Training Material
July 3, 2014
35
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
2.2 DE1-SoC 系统框图
图 2-3 DE1-SoC 系统框图
如图 2-3 所示,在 DE1-SoC 的众多接口中,虽然都是与 SoC FPGA 相连接。但实际上可
区分为两大类:分别是左边米黄色 FPGA 区块与右边蓝色的 HPS 区块。HPS 部分的 I/O
管脚都有特定的外设定义。在保证相互间不冲突的情况下,完成 HPS I/O set 配置。
而 FPGA 区块的外设,保持了与传统 FPGA 一致的 I/O 配置方法。
2.3 定义硬件系统架构
ww
此节描述 SoC FPGA 系统设计,首先须定义好系统硬件的架构。然后使用 Qaurtus II
集成 SoC/SOPC 设计工具 Qsys。在 Qsys 内,用户可以选择对应设计需要的硬件模快加
入设计里即可。
图 2-4 是本节实验的硬件架构。和上一节提到的 DE1-SoC 的外设架构相对应,整个系
统设计也会被分为两大区块,HPS and FPGA parts。
DE1-SoC Training Material
July 3, 2014
36
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-4 SoC FPGA design on DE1-SoC
ww
首先灰色区块为 HPS 的部分,HPS 除了有 ARM 外,还内嵌了许多的接口控制器。如 DDR、
QSPI、USB OTG、Ethernet 等。使用者需要根据 DE1-SoC 系统框图描述规划设计需要的
接口并调整设定参数。
注意:DE1-SoC FPGA 开发板的 HPS 接口部分都已经随着开发板硬件设计而固定,所以
基本上用户可以更动配置的地方不多。若无特殊需求,只需在本节提供的范例基础上
做修改即可进入下阶段的设计。
DE1-SoC Training Material
July 3, 2014
37
www.terasic.com.cn
图片下方蓝色的区域内是 FPGA 的系统架构。这个区块就显得更弹性些,用户除了可以
用 Qsys 内建的 IP 来搭建系统架构外。还可以加入用户定制的 IP 模块来满足特殊的需
求。
两个区块间有三个通道可以让两部分实现传输数据,统称为 HPS-FPGA AXI Bridges。
分别为:
FPGA-to-HPS Bridge
HPS-to-FPGA Bridge
Lightweight HPS-to-FPGA Bridge
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
FPGA-to-HPS,HPS-to-FPGA 这两个 Bridge 为 FPGA 跟 HPS 间宽带高速的传输通道。
Lightweight HPS-to-FPGA 则为较低速的控制通道,本实验将使用这个通道来进行 HPS
与 FPGA 间的数据传输。关于 FPGA 与 HPS 间的传输通道详情,在接下来的课程会有更
详细的描述。用户也可以参考链接文件以获得更多信息:
http://www.altera.com/literature/hb/cyclone-v/cv_54005.pdf
正如前面所提到的,因为在 DE1-SoC 开发板上 HPS 的接口基本上都固定了,用户无需
去做进一步的调整。所以用户可以直接使用 DE1-SOC 的 CD 已经提供的基于图 2-4 描述
架构的 QuartusII 项目。使用户可以省去设定 HPS 以及构建基础 FPGA 工程的时间。一
般称之为 Golden Hardware Reference Design(GHRD)。用户可以在 CD 内的
Demonstrations/SOC_FPGA/de1_soc_GHRD/ 这个路径下找到。
下面的章节中,用户可以在 GHRD 基础上练习增添一些组件。学习如何建立一个硬件系
统。
2.4 搭建 Qsys 系统
ww
在本节中,用户将会开启一个 Qsys 工程,了解 HPS 的组件设定。并且练习添加组件进
入系统,最后生成系统档案。如图 2-5 红框标示所描述。
DE1-SoC Training Material
July 3, 2014
38
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-5 搭建 Qsys 工程
2.4.1 打开 Quartus II 工程
1. 先在 C 盘内建立一个名为"Altera_TRAN"的活页夹. 并将实验教材范例
"DE1_SoC_GHRD"活页夹复制于此。"DE1_SoC_GHRD"活页夹存放于实验教材内的路
径为"\lab\HW"。
ww
进入"DE1_SoC_GHRD"活页夹后,双击 soc_system.qpf 两下(请确认 Quartus 已被
正确安装), Quartus 窗口将会出现。
图 2-6 开启 Quartus II 工程
DE1-SoC Training Material
July 3, 2014
39
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
2. 在 Quartus II 菜单选项点击 Tools =>Qsys,打开 Qsys 自动系统开发工具窗
口,如图 2-7 所示:
图 2-7 open Qsys
ww
3. 选择 soc_system.qsys 文件并打开如图 2-8
图 2-8 open soc_system.qsys
DE1-SoC Training Material
July 3, 2014
40
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
4. 图 2-9 可以看到在 Qsys 系统中已经包含了 HPS 等基本组件,接下来将会展示
HPS 组件的特性,并练习再添加额外的组件进入系统。
图 2-9 qsys components view
2.4.2 配置 HPS 系统(Hard Processor System)
ww
如图 2-10 所示,HPS 内包含了双核的 ARM Cortex A9 处理器外,还有许多内建外设可
以使用。下面将介绍在 Qsys 内的 HPS 模块,对于这些外设与处理器有哪些特性参数可
以设置。
DE1-SoC Training Material
July 3, 2014
41
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-10 HPS
ww
1. 在 Qsys 系统中双击 hps_0 组件打开 HPS 配置窗口,查看 HPS 组件的配置信息
如图 2-11 所示:
图 2-11 hps_0
2. 如图 2-12 所示,HPS 属性有 FPGA Interfaces、Peripheral Pin
Multiplexing、HPS Clocks 和 SDRAM 等四个配置栏,下面将会简单各个介绍。
DE1-SoC Training Material
July 3, 2014
42
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-12 hps_0 properities
ww
3. 在 FPGA Interfaces 选项栏下,用户可以在 General 下使能基本的接口和信
号,配置 AXI Bridges 的参数
图 2-13 hps_0 General properties
用户可以设定 FPGA 与 HPS 相连接的 3 个 AXI Bridges 的数据宽度如图 2-14
所示:
DE1-SoC Training Material
July 3, 2014
43
www.terasic.com.cn
图 2-14 AXI Bridges data-width
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
增减 FPGA to HPS SDRAM 的接口数目如图 2-15 所示:
图 2-15 FPGA to HPS SDRAM interface
配置系统的 Reset 信号如图 2-16 所示:
图 2-16 system reset
ww
DMA Peripheral Request 如图 2-17 所示,以及使能各种 Interrupts
DE1-SoC Training Material
July 3, 2014
44
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-17 DMA Peripheral Request
ww
4. 在 Peripheral Pin Multiplexing 选项栏下,可以通过选项来启用 HPS 的外
围设备如图 2-18 所示。包括 Ethernet Media Access、NAND Flash、QSPI Flash、
SDMMC/SDIO、USB、SPI、UART、I2C、CAN、Trace Port Interface Unit 等外围
设备控制器如图 2-19 所示:
图 2-18 HPS peripherals
DE1-SoC Training Material
July 3, 2014
45
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-19 I2C、CAN and Trace Port interface
ww
每个外设都有一个 pin multiplexing 选项,这是因为 HPS I/O 如果对照 DE1-SOC
的原理图,可以发现 HPS 的管脚其实都是复用的。如 H19 这根管脚如图 2-20 所
示,除了当 EMAC1 的 TX_CLK 功能外,也可以设定成 QPSI、NAND Flash 或 GPIO
管脚来使用。但最终使用时只能固定设定成其中一种。例如当 DE1-SoC 的这根 H19
管脚被连接到 Ethernet MAC。那么在 Qsys 专案內就只能设定 EMAC1 pin
multiplexing 为“HPS I/O Set 0”。而 NAND Flash Controller 因为管脚已被
EMAC1 占去,所以只能设定为 Unused。这也是为什么我们在前面就提及了 HPS 的
外设基本都已经预先连接好,无需再做变动。
DE1-SoC Training Material
July 3, 2014
46
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-20 PIN H19
ww
若试着将 NAND Flash Controller 设定为使用状态,则系统会出现错误如图 2-21
所示,提示 EMAC1 和 NAND pin 管脚冲突。
图 2-21 EMAC1 和 NAND flash pin conflicting
DE1-SoC Training Material
July 3, 2014
47
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
在这个设定页的最底层有个 Peripherals Mux Table 如图 2-22 所示,可以帮助
用户检验整个 HPS 外设 I/O pin multiplexing 设定的状态,看看是否有所冲突。
每个 mux_select 表内,若管脚名被标注为粗体,就代表此管脚功能已被设定如图
2-23 所示:
图 2-22 HPS peripherals I/O pin multiplexing
图 2-23 HPS peripherals I/O pin setting
ww
5. 选择 HPS Clocks 选项卡,可以设置使能 HPS to FPGA 和 FPGA to HPS 之间的
时钟及其频率如图 2-24 所示:
DE1-SoC Training Material
July 3, 2014
48
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-24 HPS clocks properities
ww
6. 在 SDRAM 选项卡里,你可以配置 HPS 的外部存储器接口参数,比如
DDR2/DDR3/LPDDR2,基于 DE1-SoC 配置成 DDR3,其 clock 以及 initial(如图 2-25、
图 2-26),memory(如图 2-27)和 board(如图 2-28、图 2-29)参数。
图 2-25 HPS SDRAM clock
DE1-SoC Training Material
July 3, 2014
49
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-26 HPS SDRAM memory initialization option
ww
在 SDRAM 的 Memory Timing 选项中,设置的存储器 chip 的时序参数也必须匹
配 DDR3 chip datasheet 上的规定。
DE1-SoC Training Material
July 3, 2014
50
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-27 HPS SDRAM memory chip timing
ww
在 SDRAM 的 Board Settings 的选项下,“Setup and Hold Derating”和
“Channel Signal Integrity”一般设置为“Use Altera's default
settings”
DE1-SoC Training Material
July 3, 2014
51
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-28 HPS SDRAM board setup and hold derating
Board Skews 的参数设置如下:
图 2-29 HPS SDRAM board skews
2.4.3 添加并配置 LED 和 Button PIO 组件
ww
接下来,我们将练习如何在 Qsys 内加入定制组件,并与 HPS 系统连接。在 DE1-SoC 开
发板上有 10 个 LED 连接到 FPGA 器件的 I/O 引脚上,我们需要添加 PIO 组件来驱动这
些 LED。
1. 首先添加 LED PIO component,在左侧的搜索栏里输入 PIO,在下拉窗中选择
PIO (Parallel I/O),双击或者点击下面的 Add,将其添加到系统,如图 2-30 所
示:
DE1-SoC Training Material
July 3, 2014
52
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-30 add PIO component
2. 如图 2-31 所示,在 PIO 组件的属性框里将 Width 设置为 10,即控制连接到
FPGA 引脚上的 LED 的个数,并确保 Direction 为 Output,然后点击 Finish,完
成 LED 组件的配置。
ww
图 2-31 PIO configuration
3. 将默认的 PIO 组件名 pio_0 重命名为 led_pio 如图 2-32 所示(选中该组件(高
亮),使用右键选中 rename 对其重命名)。
DE1-SoC Training Material
July 3, 2014
53
www.terasic.com.cn
图 2-32 rename pio component
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
4. 双击 led_pio 组件下 external_connection 的 export 列,引出 led 的外部连
线,并将其重命名为 led_pio_external_connection 如图 2-33 所示:
图 2-33 pio component export
5. 接着添加 Button PIO component,再次在左侧的搜索栏里输入 PIO,在下拉
窗中选择 PIO (Parallel I/O),双击或者点击下面的 Add,再次添加 PIO 组件到
系统如之前图 2-30 所示。
ww
6. 如图 2-34 所示,在组件的基础属性栏中将 width 设置为 4,确保 Direction
为 Input。在 Edge capture register 属性栏中,选中 Synchronously capture,
并将 Edge Type 设置为 FALLING。在 Interrupt 属性栏中,选中 Generate IRQ,
并将 IRQ Type 设置为 Edge。点击 Finish 完成 Button 组件的配置。
DE1-SoC Training Material
July 3, 2014
54
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-34 Button PIO configuration
7. 将默认的 PIO 组件名 pio_0 重命名为 button_pio,如图 2-35 所所示:
图 2-35 Button PIO rename
ww
8. 双击 button_pio 组件下 external_connection 的 export 列,引出 button 的
外部连线,并将其重命名为 button_pio_external_connection,如图 2-36 所示:
图 2-36 Button PIO export
9. 新添加到系统的组件(led_pio and button_pio)由于还没有连接,会提示
DE1-SoC Training Material
July 3, 2014
55
www.terasic.com.cn
很多错误,这些错误信息将会在下面的操作中消除。如图 2-37 所示:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-37 tempory error messages
10. 表格 2-3 列出了需要连在一起的信号 :
表格 2-3 signals interconnection
Name of
Component
Name of Signal
What component
What signal of the
that the signal is to
component that is
be connected to
to be connected to
led_pio
clk
clk_0
clk
led_pio
reset
clk_0
clk_reset
led_pio
s1
master_non_sec
master
led_pio
s1
hps_0
h2f_lw_axi_master
Button_pio
clk
clk_0
clk
Button_pio
reset
clk_0
clk_reset
Button_pio
s1
master_non_sec
master
Button_pio
s1
hps_0
h2f_lw_axi_master
ww
例如: 将 leled_pio 连接到系统的方法:右键 led_pio 组件下的 clk 信号,选择
要连接的信号,其 clock、reset 以及 avmm slave 有效的连接方式如图 2-38、图
2-39 和图 2-40 所示:
图 2-38 led_pio clk signal connection
DE1-SoC Training Material
July 3, 2014
56
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-39 led_pio reset signal connection
图 2-40 led_pio avmm slave port connection
11. Button PIO 的连接设定如下:
图 2-41 Button PIO clock signal connection
ww
图 2-42 Button PIO reset signal connection
DE1-SoC Training Material
July 3, 2014
57
www.terasic.com.cn
图 2-43 Button PIO avmm slave port connection
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
12. 带中断的组件可以设置为比系统的其他组件拥有更高的优先级响应,所以系
统有必要对这些带中断的组件进行优先级分配。JTAG 和 button 都有中断,都能
被中断捕获模块捕获,这些中断将连接到 HPS 组件。其中 Qsys 系统中已对
jtag_uart 组件进行了中断分配,所以我们也要分配一个 IRQ 给刚刚添加的
button_pio 组件。
13. 右键 button_pio 组件下的 s1,选择 button_pio.irq 如图 2-44 所示
图 2-44 Button PIO interrupt signal connection
14. 设定按钮的中断优先级,选择 IRQ 列(Qsys 系统中的倒数第二列)
,分配 IRQ
的优先级,如图 2-45 所示,将框中的值设置为 1
图 2-45 IRQ index setting
ww
15. 将 led_pio 组件的基地址修改为 0x0001_0040,将 button_pio 的基地址修改
为 0x0001_00c0,并点击锁定图标锁定基地址,如图 2-46 所示:
DE1-SoC Training Material
July 3, 2014
58
www.terasic.com.cn
图 2-46 manual assign the base address for led_pio and button_pio
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
16. 至此 led 和 button components 已经添加完毕,完整的系统连接如图 1 45 所
示:
图 2-47 SoC based qsys system
2.4.4 编译生成 Qsys 系统
ww
1. 在 qsys 菜单栏下选择 Generate-> Generate 编译系统如图 2-48 所示:
DE1-SoC Training Material
July 3, 2014
59
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-48 generate Qsys system
2. 如果提示保存,请选择 Save,如图 2-49 所示,系统将开始编译
图 2-49 save qsys system
ww
3. 编译完成后,如果没有错误,窗口将显示 Generate Completed,可能会提示
一些 warning,但可以忽略,如图 2-50 所示:
DE1-SoC Training Material
July 3, 2014
60
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-50 generate complete
4. 关闭编译窗口,选择 File->Exit 退出 Qsys 回到 Quartus II 窗口。(如果提
示保存请选择保存系统)
2.5 编辑并编译 Quartus II 工程
1. 当 Qsys 生成完后,会产生出许多可以被 Quartus II 编译合成的 HDL(verilog)
文档,一般位于以 qsys 文件名命名的文件夹内。这些文件需要先被增添入 Quartus
II 工程内。我们可以通过增加 .qip 这个描述所有文件位置的目录档案完成所有
include 文档的包含。
ww
如图 2-51 所示在 Quartus II 下选择 Assignments => Settings
DE1-SoC Training Material
July 3, 2014
61
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-51 assignments 菜单
用鼠标点击
来选择对应的 .qip 文件. 如图 2-52 所示:
图 2-52 select the .qip file
ww
在 Select File 窗口内,先把右下角的文件类型换成*.* 。选择专案内
\soc_system\synthesis\目录下的 soc_system.qip 文件如图 2-53 所示:
图 2-53 select soc_system.qip file
DE1-SoC Training Material
July 3, 2014
62
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
按下 Add 把 soc_system.qip 文件增添入项目内,如图 2-54 所示:
图 2-54 add soc_system.qip file
使用同样的方法,把项目下的时序约束文件 soc_system_timing.sdc 加入项
目如图 2-55 所示:
图 2-55 adding soc_system_timing.sdc
ww
2. 回到 Quartu II 窗口,双击 Project navigator 框中的 ghrd_top,打开 top .v
file ghrd_top.v 如图 2-56 所示:
DE1-SoC Training Material
July 3, 2014
63
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-56 select and open ghrd_top.v
3. 如图 2-57 所示,找到 ghrd_top.v 里面 soc_system u0 的模块。
图 2-57 soc_system module
4. 在 soc_system u0 下面,找到 led_pio 和 button_pio 对应的 instance 输入 LED
以及 Button 的外部接口声明信号,如图 2-58 所示:
ww
图 2-58 instance add led and button pio signals
5. 编辑完成后,选取菜单选项 File->Save 保存 ghrd_top.v 文档。
6. 在 Quartus II 窗口的工具栏中选择 Analysis and Synthesis 图标(图 2-59
中红色框中的图标)。这个步骤不会进行 pin assignment 跟布线,只做预分析和
综合完成 .v 文件语法以及 instancemodules 是否完备等状况。
DE1-SoC Training Material
July 3, 2014
64
www.terasic.com.cn
图 2-59 Analysis and Synthesis button
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
7. 开始分析和综合工程,如图 2-60 所示,必须无错误的完成。
图 2-60 sucessfully analysis and synthesis
ww
8. 接下来运行 TCL 脚本文件以完成 SDRAM interface constrains(timing and
I/Os),选择菜单选项 Tools -> TCL script 在窗口中选择
hps_sdram_p0_pin_assignments.tcl 如图 2-61 所示:
DE1-SoC Training Material
July 3, 2014
65
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-61 run tcl for sdram interface
9. 选择 Run,运行脚本,当提示完成时选择 OK 如图 2-62 所示,完成 SDRAM 对应
pin I/Os constrain。
图 2-62 run tcl for sdram interface sucessfully
10. 在 Quartus 的工具栏中选择 Start Compliation 图标或者选取菜单选择
Processing-> Start Compilation,进行全编译,如图 2-63 所示:
ww
图 2-63 full complication
11. 编译如果成功完成,进度条会显示 100% 完成,但是不会再单独弹出对话框,
请注意状态栏提示。
12.
DE1-SoC Training Material
July 3, 2014
66
www.terasic.com.cn
2.6 验证硬件系统设计
首先需要配置 FPGA:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1. 在 Quartus II 窗口中,选取菜单选项 Tools -> Programmer,打开烧录窗口
Programming,按 Hardware Setup 按钮,打开 Hardware Setup 对话框,在
‘Currently selected hardware’右边下拉菜单选取“DE-Soc[USB-1]”,如图
2-64 所示,设定好后按‘Close’关闭窗口。
图 2-64 Hardware Setup
ww
2. 在 programming 窗口中选择 Auto Detect(如图 2-65 标记位置)
图 2-65 auto detect
DE1-SoC Training Material
July 3, 2014
67
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
3. 在弹出的窗口中选择“5CSEMA5”,设定完点击 OK 关闭窗口如图 2-66 所示:
图 2-66 device select
ww
4. 烧录窗口将会显示 5SCEMA5(FPGA)和 SOCVHPS(cyclone V HPS)两个 device
如图 2-67 所示:
图 2-67 detected devices
5. 选中 5CSEMA5 device,然后点击窗口左侧 Change File 按钮,弹出 select
programming file 窗口,如图 2-68 所示,选择 soc_system.sof 文件并点击 open。
DE1-SoC Training Material
July 3, 2014
68
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-68 add soc_system.sof file for FPGA programming
要 Debug 这个设计的方法很多。但因为此系统是用 Qsys 生成的,含有 jtag to avmm
bridge,所以可以用 Qsys 的 System Console 亦可以完成初步验证的工作。System
Console 通过 jtag 和 qsys avmm 及连接的 components 进行数据通信,这一般通
过使用 tcl 脚本命令完成。接下来将使用这个工具来验证 FPGA 部分组件。HPS 端
的组件将在后面的软件实验中进行验证。
ww
6. 接下来,勾选 soc_system.sof 的 program/configure 的复选框,如图 2-69
所示(由于在添加 sof 文档的时候选择 add,会增加出另外一个 5CSEMA5 器件,
可以选中多余的,并删除)
DE1-SoC Training Material
July 3, 2014
69
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-69 select the program/configure option
7. 接着图 2-70 所示,点击 Start 按钮进行烧录,烧录成功完成后 progress 的
进度会显示 100%。
图 2-70 start programmming
ww
当本实验的代码被下载入 FPGA 后,接下来就可以使用 Qsys 里面的 System
Console 来验证所搭建的硬件系统是否正常。使用的方法是直接执行预先编译好
的脚本文件来检验 LED 与 button 是否能被正确的控制。
8. 在 Quartus 窗口中选择 Tools -> Qsys,选择 soc_system. qsys 打开 Qsys 系
DE1-SoC Training Material
July 3, 2014
70
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
统,如图 2-71 所示:
图 2-71 open soc_system.qsys file
ww
9. 在 Qsys 窗口中,选择 Tools -> System Console,打开系统控制台窗口,如
图 2-72 所示:
图 2-72 open system console
10. 运行脚本文件,选择 File -> Execute Script,将会弹出一个如下图所示的
窗口,选择 Don't Create 选项如图 2-73 所示:
DE1-SoC Training Material
July 3, 2014
71
www.terasic.com.cn
图 2-73 execute scripts
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
11. 接着定位到工程文件根目录下(/DE1_SoC_ghrd),并选择 LED 测试脚本文件
test_led.tcl 如图 2-74 所示:
图 2-74 open
ww
12. 打开 test_led.tcl 文件,在 message 窗口下会显示提示信息:“Executing
‘your project path’\DE1_SoC_ghrd\test_led.tcl”成功运行脚本文件如图
2-75 所示:
DE1-SoC Training Material
July 3, 2014
72
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-75 excuting test_led.tcl
13. 在 DE1-SOC 开发板上,将看到 LEDR0~9 依次循环点亮。
ww
14. 接下来同时测试 LED 与 button。关闭 System Console 窗口,并重新打开,
重新选择 File -> Execute Script,按照和测试 LED 同样的方法,将路径定位到
工程根目录,如图 2-76 所示,选择脚本文件 test_key&led.tcl,但先不要选择
打开。
DE1-SoC Training Material
July 3, 2014
73
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-76 excute test_key&led.tcl
15. 用手保持按下 KEY0 按钮,然后选择“打开”test_key&led.tcl 文件,在
message 窗口下你会看到提示信息:0x0e 0x00,同时在 DE1-SOC 开发板上,你将
看到 LEDR0 未点亮,其他三个 LEDR 是亮的,然后松掉 KEY0,LEDR0 也不会亮。
(即
保持按下 KEY0~3 中的其中几个按钮,然后执行脚本文件,你会发现 message 打印
出按键向量值,DE1-SoC 开发板上,按键未按下时值是 1,按下为 0,LEDR 是高电
平点亮,这里直接把按键值赋值给 LED,所以按下的按键对应的 LED 是熄灭的)
16. 执行 test_key&led.tcl 脚本文件时,其他的组合情况如表格 1-4 所示:
表格 2-4 test_one.tcl excution result
Press KEY(s) then run test_one.tcl
Result for LEDs and System Console
1101 = 0x0d
按住 KEY1 的同时执行 test_key&led.tcl
(LEDR1 不会亮)
ww
按住 KEY1 和 KEY0 同时执 test_key&led.tcl
(LEDR0 & LEDR1 不会亮)
1111 = 0x0f
不按任何按钮执行 test_key&led.tcl
(All LEDRs 点亮)
按住 KEY*的同时执行 test_key&led.tcl
DE1-SoC Training Material
July 3, 2014
1100 = 0x0c
(LEDR* are not illuminated)
74
www.terasic.com.cn
2.7 Qsys 与 Qurartus II 生成的档案
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
搭建好的硬件系统,经过 Qsys generate 还有 Quartus II 编译后,会产生三种文件提
供给 SoC 系统以进行后续软件开发。如图 2-77 所示,这三別是:
图 2-77 3 kinds output files for SoC software development
1. SOPC info file(.sopcinfo):文档用于生成 Device Tree
2. Handoff Folder:里面有关于产生 preloader 相关配置文件
3. System View Descr(.svd):用于 DS-5 debug 功能
下面章节将介绍如何产生 Preloader image file 以及如何生成 Device Tree 文档。
2.8 生成 Preloader Image File
ww
Altera 的 SoC FPGA 与 ARM 专用芯片相比其有比较灵活的应用弹性。因为用户可以通过
Qsys 配置和删减 ARM 端外设,还可以添加与 FPGA 相连的组件。这些用户自定义的设定
在经过 Qsys generate 和 Quartus II compile 会产生出一些 HPS 和 FPGA 相关的配置
文件(handoff files)。在进行软件设计时,这些档案可以通过 BSP Editor 转换成
Preloader 需要的输入档案。以进一步生成 Image 文件。图 2-78 所示的是 Preloader
Image 制作流程。:
DE1-SoC Training Material
July 3, 2014
75
www.terasic.com.cn
图 2-78 Preloader Image 制作流程
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
详细步骤如下:
1. 进入 SoC EDS 的安装路径并打开 Embedded Command Shell。如图 2-79 所示,
打开 <QUARTUS_ROOT_DIR>\embedded \ 并执行
“Embedded_Command_Shell.bat”。Altera Embedded Command Shell 窗口将会
出现。
图 2-79 Embedded_Command_Shell.bat
ww
2. 启动 BSP Editor:在窗口内输入 bsp-editor 并按 enter 键,如图 2-80 所示:
DE1-SoC Training Material
July 3, 2014
76
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-80 bsp-editor
3. 产生新的 BSP:打开 bsp-editor 后选择菜单 File --> New BSP 来创建新的
BSP 如图 2-81 所示:
图 2-81 create new BSP
4. 然后设定 Preloader Setting Directory 的路径:
ww
5. 在 New BSP 的窗口下选择 Preloader Setting Directory 的路径,把路径指
向上节实验工程 DE1_SoC_ghrd\hps_isw_handoff\soc_system_hps_0\。如图 2-82
所示:
DE1-SoC Training Material
July 3, 2014
77
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-82 select the preloader setting directory
6. 选择 OK 来产生 BSP setting 文档以及文件夹,如图 2-83 所示:
图 2-83 BSP related information
ww
7. 系统将在工程內产生一个 software 的文件夹,并生成一个 settings.bsp 文
档,如图 2-84 所示:
DE1-SoC Training Material
July 3, 2014
78
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-84 settings.bsp file
ww
8. 接下来按下 Generate 生成 preloader 的原始档以及 Makefile。当生成档案完
成后,按下 exit 完成任务离开窗口。如图 2-85 所示:
图 2-85 generate BSP
DE1-SoC Training Material
July 3, 2014
79
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
9. 进入 software\spl_bsp\generated 的子文件夹并查看产生的文档。可以看到
之前在 Qsys 中有关 HPS 的相关设定已经转换成..h 头文件以配置 preloader
source code 对应设置。如图 2-86 所示:
图 2-86 generated bsp files for DE1-SoC
ww
10. 以 pinmux_config.h 为例,可以看到 HPS 的外设的配置使用情况,其中“
(1)”
代表该外设被使用,如图 2-87 所示:
图 2-87 HPS pinmux_config.h file
11. 在 shell 窗口,进入项目位置里的 softeare\spl_bsp 活页夹,然后输入 make
指令如图 2-88 所示(若 PC CPU 内核为多核,如 4 核,可输入 make -j8 进行多
DE1-SoC Training Material
July 3, 2014
80
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
线程编译以提高编译效率)。
图 2-88 compile preloader
ww
此项操作会需要一点时间,编译完成后可以在
\sotware\spl_bsp\uboot-socfpga\spl 文件夹下看到 Preloader 的 elf 和 binary
文档。
DE1-SoC Training Material
July 3, 2014
81
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-89 preloader binary file
表格 2-5 u-boot-spl file
File
Description
uboot-socfpga/spl/u-boot-spl
Preloader ELF file
uboot-socfpga/spl/u-boot-spl.bi
Preloader binary
n
file
ww
12. 下一步是产生 preloader 的 image file。
DE1-SoC Training Material
July 3, 2014
82
www.terasic.com.cn
图 2-90
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
先将\sotware\spl_bsp\uboot-socfpga\spl 下的 u-boot-spl.bin 复制到向上
两层的\sotware\spl_bsp\文件夹下,如图 2-91 所示:
图 2-91 preloader binary file
ww
在 shell 窗口下,路径也重新定位于此。
输入指令 mkpimage -o preloader_with_header.img u-boot-spl.bin 如图
2-92 所示:
DE1-SoC Training Material
July 3, 2014
83
www.terasic.com.cn
图 2-92 generate preloader .img file
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
如此便可以产生 preloader_with_header.img 文件,如图 2-93 所示:
图 2-93 preloader_with_header.img file
产生的新的 preloader image file 即可在 linux 环境下,通过输入相应命令
更新到 boot SD card。
2.9 生成 Device Tree
ww
Device Tree 是一种有关硬件系统描述的数据结构,它可以描述整个系统上挂载了多少
种类的硬件。通过 device tree 系统上的硬件信息都可以传递给 OS (linux)。如此
便可以不用在 Kernel 内放置大量的冗长的代码。这样的特性对于硬件里面有 FPGA 的
情况下提供了很大的弹性与灵活性。Altera SoC FPGA design 产生 Device Tree 的流
程如图 1 94 所示:
DE1-SoC Training Material
July 3, 2014
84
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-94 Preloader Image 制作流程
当 Qsys 产生出 FPGA 的设计后(.sopcinfo)
,可以使用 Altera SoC EDS 工具里的 Device
Tree Generator 来产生 Device Tree 的源文档(dts)。它描述了有关 HPS 的外设还有
选择使用到的 FPGA Soft IP 以及用户自定义的外设等信息。
.dtb 文件是.dts 文件被 Device Tree Compiler 编译后生成的二进制格式的 Device Tree
描述,可被 Linux 内核解析。通常在我们为开发板制作 NAND、Sdcard 启动 image 时,
会为.dtb 文件预留一个很小的存放区域(FAT 分区)。之后 bootloader 在引导 kernel
的过程中,会先读取该.dtb 到内存。更多关于 Device Tree 的介绍可以参考下面的链
接:
http://www.rocketboards.org/foswiki/Documentation/GSRDDeviceTreeGenerator
接下来将介绍如何产生 dts 与 dtb:
ww
1. 开启前面试验所用到的专案文件夹,检视是否 Qsys 有生成
soc_system.sopcinfo 文件。同时确认是否有 hps_clock_info.xml 和
soc_system_board_info.xml. Device Tree Generate 将使用这两个文件来产生
出.dts 文件。如图 2-95 和图 2-96 所示:
DE1-SoC Training Material
July 3, 2014
85
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-95 device tree input files
图 2-96 device tree input files
2. Embedded Shell 下进入工程目录文件夹,输入图 2-97 所示的命令以产生 .dts
文件:
ww
sopc2dts --input soc_system.sopcinfo --output soc_system.dts --board
soc_system_board_info.xml --board hps_clock_info.xml --bridge-removal
all
DE1-SoC Training Material
July 3, 2014
86
www.terasic.com.cn
图 2-97 command for generating .dts file
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
3. Windows 下打开工程文件夹,可以看到 .dts 已被生成。如图 2-98 所示:
图 2-98 soc_system.dts file
4. 接着输入 dtc -I dts -O dtb -o soc_system.dtb soc_system.dts 产生 .dtb
文件如图 2-99 所示:
图 2-99 command for generating .dtb file
ww
5. Windows 下打开工程文件夹,可以看到 .dtb 文件已被生成。如图 2-100 所示:
DE1-SoC Training Material
July 3, 2014
87
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 2-100 soc_system.dtb file
ww
6. 另外工程文件夹内另附有 Makefile,用户也可以直接使用命令“make dts”
来产生 .dts 文件。接着用“make dtb”命令来生成 .dtb 文件。
DE1-SoC Training Material
July 3, 2014
88
www.terasic.com.cn
第3章
DE1-SoC 软件实验(一)
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
3.1 引述
本教程介绍如何在 DE1-SOC 开发板上进行基于 SoC 的 FPGA 嵌入式系统软件设计,以下
部分提供了设计流程的快速概览。
3.1.1 软件开发流程
图 3-1 是软件设计流程图,软件开发的步骤如下:
ww
1. 编写 C 语言程序文件( .c /.h 文件)。
2. 为软件设计创建“Makefile” ,制定编译规则。
3. 使用编译器生成可执行文件。
4. 在 DE1-SoC 上启动 Linux。
5. 通过网络(ssh)传送可执行文件到 Linux 中并执行测试。
DE1-SoC Training Material
July 3, 2014
89
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 3-1 软件设计流程
3.1.2 系统要求
DE1-SoC 开发板
A bootable SD card with the Linux system
Microsoft Windows 电脑(USB 口,网口)
路由器 (DE1-SOC 网络接入)
Altera SoC EDS(Embedded Design Suite)
通用文档编辑器
PuTTY (Uart terminal)
FTDI Virtual COM driver (USB to Uart 驱动)
3.1.3 教程目的
ww
本教程主要实现以下目标:
1. 创建一个“Hello world”工程:在 Linux terminal 上打印信息。
简单的 linux 示例工程,操作简单,容易上手。
2. 熟悉 Altera SoC EDS 和 Linux 相关基础知识
DE1-SoC Training Material
July 3, 2014
90
www.terasic.com.cn
3.2 创建工程
这个章节将介绍如何创建 HPS(Hard Processer System)工程和使用 Altera So
C EDS tool(Altera Embedded Command Shell)编译工程。如果电脑上还未安装 Altera
SoC EDS 软件:请参考 DE1-SoC 的 CD 中 DE1-SoC Getting Started Guide 手册的第二
章节。
3.2.1 创建工程文件夹
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
Linux 应用程序工程通常包含了.c/.h 和 Makefile 文件。这些文件通常存放在相同的
文件夹中,创建一个工程文件夹预备给.c/.h 和 make file 文件.
本例在 Altera SoC EDS 安装路径下 创建“de1_soc_sw_lab1”文件夹,所以此文件夹
绝对路径如"C:\altera\13.1\embedded\de1_soc_sw_lab1".
3.2.2 创建程序文件
首先,在“de1_soc_sw_lab1”文件夹下创建一个名为“main.c”的 C 语言程序文本,
输入如下代码并保存。程序中头文件 “stdio.h”是为了支持 printf 函数。 它将在
标准输出设备上打印“Hello world”,这里默认的输出设备是 Uart 终端。
#include <stdio.h>
int main(int argc, char **argv) {
printf("Hello World!\r\n");
return( 0 );
}
3.2.3 创建 Makefile 文件
ww
创建 Makefile 制定 Altera Embedded Command Shell 编译工程的一系列规则,tool
编译生成可执行文件。首先,在“my_first_hps”文件夹下创建一个空白文本文档并
命名为“Makefile”。然后在文档中写入如下所示内容:
DE1-SoC Training Material
July 3, 2014
91
www.terasic.com.cn
#
TARGET = my_first_hps
#
CROSS_COMPILE = arm-linux-gnueabihfCFLAGS = -g -Wall -I
${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib/include
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
LDFLAGS = -g -Wall
CC = $(CROSS_COMPILE)gcc
ARCH= arm
build: $(TARGET)
$(TARGET): main.o
$(CC) $(LDFLAGS)
$^ -o $@
%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
.PHONY: clean
clean:
rm -f $(TARGET) *.a *.o *~
在 Makefile 中:
“TARGET” 定义了生成的可执行文件名字,这个例子中生成的可执行文件名将为
"my_first_hps"。Makefile 还指定了交叉编译环境下的编译器为
arm-linux-gnueabihf-gcc,以及编译包含的头文件路径信息。
ww
3.2.4 编译工程
使用 Altera Embedded Command Shell 编译工程。首先在 SoC EDS 安装路径下找到
Embedded_Command_Shell.bat 并双击打开如图 3-2 所示,路径如
"C:\altera\13.1\embedded",如图 3-3 所示。
DE1-SoC Training Material
July 3, 2014
92
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 3-2 Altera Embedded Command Shell Tool
图 3-3 打开 Embedded Command Shell 工具
ww
在 Command shell 中,使用 shell 命令“cd”切换路径。如图 3-4 所示, 切换路径切换
至 “C:/Altera_TRAN/SW/de1_soc_sw_lab1”, 然后,输入 “make” 命令编译
(compiling and linking) 如图 3-5 所示。
DE1-SoC Training Material
July 3, 2014
93
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 3-4 切换路径至 de1_soc_sw_lab1
图 3-5 编译 de1_soc_sw_lab1
ww
工程编译完成之后,输入"ls" 命令可以列出文件夹下所有文件。如图 2 5 所示,可执
行文件“my_first_hps” 成功生成。
图 3-6 生成 my_first_hps 可执行文件
DE1-SoC Training Material
July 3, 2014
94
www.terasic.com.cn
3.3 运行工程
这个章节描述如何在 DE1-SOC Linux 系统上运行可执行文件“my_first_hps”。这里
假设已经知道如何在 DE1-SOC 上 boot Linux。如果不熟悉,可以参考 DE1-SOC Getting
Started Guide 手册第 5 章节。PC 中需要预先安装
PuTTY (UART 终端)
Virtual Com Driver (USB to UART 驱动)
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
3.3.1 运行可执行文件
在运行可执行文件之前,需要先将可执行文件“my_first_hps” 拷贝至 SD card 或 U
盘中,如果 DE1-SoC 已经运行起 linux,用户可以通过 SD 卡读卡器或者 U 盘接入 DE1-SoC
USB connector 实现文件传递.
如果可执行文件已经放在 Linux 系统 /home/root 文件夹下,在用户以 root 账户登陆
后,可以直接输入 “./my_first_hps” 执行程序,这时"Hello World!" 信息将会打
印在 UART 终端如图 3-7 所示。如何将可执行文件放进 SD Card 中的网络传输(ssh)方
法将在下节做介绍。
图 3-7 执行 my_first_hps
3.3.2 将 my_first_hps 放入 SD Card
ww
这个段落介绍如何使用 Linux “scp”命令将可执行文件“my_first_hps” 拷贝至 SD
Card 中。首先,用 RJ45 网线将 PC 和 DE1-SOC 都接到同一个路由器上使其在同一个局域
网中,如图 3-8 所示
DE1-SoC Training Material
July 3, 2014
95
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 3-8 Ethernet Setup
启动 Linux 并自动获取 IP
( PUTTY )
ww
通过网络(ssh)传送可执行文件到 Linux
1. root 账户登陆。
2. 输入 “udhcpc” 自动获取 ip。
3. 输入 “ifconfig” 查询获取的 IP 地址这个例子中 DE1-SOC 获得的 IP 是
“192.168.1.113” ,信息如图 3 3 所示。
DE1-SoC Training Material
July 3, 2014
96
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 3-9 从 DHCP 获取 IP
ww
设定完 IP 后,由于“scp”命令需要输入密码,如果 root 账户还没有设定密码,可以
输入 “passwd” 命令创建一个密码,设置信息如图 3-10 所示。在这个例子中假设设
定密码为“terasic”。
图 3-10 为 Linux root 账户设定密码
DE1-SoC Training Material
July 3, 2014
97
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
这时,就可以使用”scp”命令拷贝可执行文件“my_first_hps”到 SD Card 中了。在
Altera SoC command shell 中(路径已 cd 至 my_first_hps 文件夹), 输入 “scp
my_first_hps root@192.168.1.113:/home/root” ,把文件拷贝到 “/home/root”
路径下. 注意:IP 需要填写之前自动获取的 IP 地址。当看到"Are you sure you want
to continued connecting (yes/no)?", 输入“yes”然后敲 ENTER 键确认。然后将会
被问到密码,输入 DE1-SOC Linux root 账户密码然后敲 ENTER 键确认,这里假设密码
是“terasic” 如图 3-11 所示。
图 3-11 scp 命令
ww
传输完毕后。可以在 PuTTY 终端中输入 ls 命令,这时候会发现“my_first_hps”已
拷贝进来。在运行它之前,需要执行“chmod 777 my_first_hps” 命令,增加文件可
执行属性,操作过程如下图 3-12 所示。
图 3-12 更改 my_first_hps 文件属性
最后,输入 “./my_first_hps” 运行程序如图 3-13 所示:
DE1-SoC Training Material
July 3, 2014
98
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 3-13 执行 my_first_hps
Hello World!将会显示在串口终端上。
3.3.3 将 my_first_hps 放入 SD Card (U 盘拷贝)
这个段落介绍如何使用 U 盘将可执行文件“my_first_hps” 拷贝至 SD Card 中。
1. 将 U 盘插入电脑,Copy 编译好的可执行文件到 U 盘。
ww
2. 将拷贝好文件的 U 盘,插入 DE1-SoC 的 USB 接口(USB1/2) 。
图 3-14 U 盘插入 DE1-SoC 显示信息
3. 在 DE1-SoC 的串口终端输入以下命令:
DE1-SoC Training Material
July 3, 2014
99
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
mount -t vfat /dev/sda1 /mnt 加载 U 盘至/mnt 路径下。
图 3-15 加载 U 盘
ww
cp –p /mnt/my_first_hps /home/root 复制可执行文件至 /home/root 路径下
umount /mnt
图 3-16 复制可执行文件
卸载 U 盘
DE1-SoC Training Material
July 3, 2014
100
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 3-17 卸载 U 盘
4. 在运行可执行文件之前,需要执行“chmod 777 my_first_hps” 命令,增加
文件可执行属性,操作过程如下图 3-18 所示。
图 3-18 更改 my_first_hps 文件属性
ww
5. 最后,输入 “./my_first_hps” 运行程序如图 3-19 所示:
图 3-19 执行 my_first_hps
6. Hello World!将会显示在串口终端上。
DE1-SoC Training Material
July 3, 2014
101
www.terasic.com.cn
第4章
DE1-SoC 软件实验(二)
4.1 引述
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
这个教程将创建一个“HPS_GPIO”软件工程,控制 HPS 端的 LED 和 KEY。由于和实验一
一样只需要控制 HPS 端外设。所以也不需要 Quartus II 工程。
软件的开发流程和实验一一致。这里我们将会在 4.2 节介绍 HPS LED/KEY 的相关理论。
然后在 4.3 节介绍创建工程。
4.2 HPS GPIO 原理
4.2.1 用户 LED 和 KEY
这个例程展示如何通过 linux 内核 memory-mapped device 驱动访问 GPIO 控制器的寄
存器而控制 HPS 端的用户 LED 和 KEY。memory-mapped device 驱动允许应用程序访问
系统所有外设寄存器物理地址空间,包括 GPIO 控制器物理地址。
4.2.2 Function Block Diagram 方块图
ww
图 4-1 是工程软体方块图。用户 LED 和 KEY 都是连接到 HPS 的 GPIO1 控制器。GPIO 控
制器的行为通过其寄存器来控制。应用程序通过内存映射设备驱动访问 GPIO1 控制器
的寄存器。
DE1-SoC Training Material
July 3, 2014
102
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 4-1 GPIO 例程的方块图
4.2.3 GPIO 接口方块图
HPS 提供了三个通用 I/O(GPIO)接口模块。图 4-2 是 GPIO 接口的方块图。GPIO[28..0]
被 GPIO0 控制器控制;GPIO[57..29]被 GPIO1 控制器控制;GPIO[70..58]和
input-onlyGPI[13..0]被 GPIO2 控制器控制。
图 4-2 GPIO 接口方块图
ww
4.2.4 GPIO 寄存器组
I/O 组引脚的行为是由 GPIO 控制器中对应的寄存器组所控制。在这个例程中,只使用
了 GPIO 控制器的三种 32-bit 寄存器:
gpio_swporta_ddr: 配置 IO 引脚方向
gpio_swporta_dr: 写数据到输出引脚
DE1-SoC Training Material
July 3, 2014
103
www.terasic.com.cn
gpio_ext_porta:
从输入引脚读数据
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
对于 LED 控制,我们通过 gpio_swporta_ddr 寄存器配置 LED 引脚为输出引脚并且通过
gpio_swporta_dr 寄存器控制其输出高低电平。在 gpio_swporta_ddr 寄存器中,32bits
data 的第一位(影响最小的位,LSB)控制相应 GPIO 控制器的第一个 I/O 引脚的方向,
第二位控制相应 GPIO 控制器第 2 个 I/O 引脚的方向,以此类推。在寄存器 bit 设定“1”
则相应 I/O 方向设定为输出,设定“0”则为输入。
gpio_swporta_dr 寄存器 data bit 和 I/O 的对应关系,和 gpio_swporta_ddr 一样,
是最低位对应着 I/O 的最低位。在相应 bit 写入“1”对应 I/O 输出高电平,写入“0”
对应 I/O 输出低电平。
用户 KEY 的状态可以通过读取 gpio_ext_porta 寄存器来查询。寄存器 data bit 和 I/O
的对应关系,和 gpio_swporta_ddr 一样,是最低位对应着 I/O 的最低位。寄存器 bit
读值"1"说明相应 IO 输入状态为高电平,读值"0"则是低电平。
4.2.5 GPIO 寄存器地址映射
ww
如图 4-3 所示,HPS 外设映射到 HPS 基地址 0xFC000000 上,共 64MB 的寻址空间。GPIO0
控制器的寄存器映射到基地址 0xFF708000 共 4KB 寻址空间,GPIO2 控制器映射到基地
址 0xFF70A000 共 4KB 寻址空间。
图 4-3 PIO 地址映射
DE1-SoC Training Material
July 3, 2014
104
www.terasic.com.cn
4.2.6 软件 API
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
开发者可以通过如下软件 API 访问 GPIO 控制器的寄存器
open: 打开内存映射设备驱动
mmap: 映射物理地址到用户空间
alt_read_word: 从指定寄存器读取一个值
alt_write_word: 写入一个值到指定寄存器
munmap:清除内存映射
close:关闭设备驱动.
开发者同样可以通过如下 MACRO 访问寄存器
alt_setbits_word: 设定指定寄存器的指定位为 1
alt_clrbits_word: 设定指定寄存器的指定位为 0
为了使用以上 API 来访问 GPIO 控制器的寄存器,程序需要包含如下头文件。
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include "hwlib.h"
#include "socal/socal.h"
#include "socal/hps.h"
#include "socal/alt_gpio.h"
4.2.7 LED 和 KEY 控制
ww
图 4-4 是 HPS 用户 LED 和 KEY 的引脚分配,LED 连接到 HPS_GPIO53,KEY 连接到
HPS_GPIO54,这两个引脚都是被 GPIO1 控制器控制,同样它还控制着
HPS_GPIO29~HPS_GPIO57。
DE1-SoC Training Material
July 3, 2014
105
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 4-4 LED and KEY Pin Assignment
图 4-5 是 GPIO1 控制器的 gpio_swporta_ddr 寄存器, bit-0 控制着 HPS_GPIO29 的方
向。bit-24 控制着 HPS_GPIO53 的方向,这个引脚连接着 HPS_LED;bit-25 控制
HPS_GPIO54 的方向,这个引脚连接 HPS_KEY。其它引脚以此类推。总言之,GPIO1 控制
器的寄存器 gpio_swporta_ddr 的 bit-24,bit-25 控制 HPS_LED,HPS_KEY 的方向。相
似的,HPS_LED 的输出状态是通过 GPIO1 控制器的 gpio_swporta_dr 的 bit-24 控制的。
HPS_KEY 的状态则可以通过查询读取 GPIO1 控制器的 gpio_ext_porta 寄存器的 bit-25。
图 4-5 GPIO1 gpio_swpport_ddr 寄存器
ww
在这个例程代码中。如下宏定义用来控制 LED 和 KEY 的方向和 LED 的输出状态。
#define USER_IO_DIR
(0x01000000)
#define BIT_LED
(0x01000000)
DE1-SoC Training Material
July 3, 2014
106
www.terasic.com.cn
#define BUTTON_MASK
(0x02000000)
如下语句可以用来配置 LED 引脚为输出引脚。
alt_setbits_word( ( virtual_base +
( ( uint32_t )( ALT_GPIO1_SWPORTA_DDR_ADDR ) &
( uint32_t )( HW_REGS_MASK ) ) ), USER_IO_DIR );
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
如下语句可以用来点亮 LED
alt_setbits_word( ( virtual_base +
( ( uint32_t )( ALT_GPIO1_SWPORTA_DR_ADDR ) &
( uint32_t )( HW_REGS_MASK ) ) ), BIT_LED );
如下语句可以用来读取 gpio_ext_porta 寄存器内容,bit 标记是用来检查 KEY 的状态。
alt_read_word( ( virtual_base +
( ( uint32_t )( ALT_GPIO1_EXT_PORTA_ADDR ) &
( uint32_t )( HW_REGS_MASK ) ) ) );
4.3 创建工程
这个章节将介绍如何创建和使用 Altera SoC EDS tool(Altera Embedded Command
Shell)编译 HPS(Hard Processer System)软体工程。
4.3.1 创建工程文件夹
本例在 C:/Altera_TRAN/SW/路径下 创建“de1_soc_sw_lab2”文件夹,所以此文件夹
绝对路径如"C:\ Altera_TRAN \ SW \ de1_soc_sw_lab2"。
ww
4.3.2 创建程序文件
首先,在“de1_soc_sw_lab2”文件夹下创建一个“main.c”的文本文档,输入如下代
码并保存。代码内容分析在 4.2 节有介绍。
DE1-SoC Training Material
July 3, 2014
107
www.terasic.com.cn
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include "hwlib.h"
#include "socal/socal.h"
#include "socal/hps.h"
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
#include "socal/alt_gpio.h"
#define HW_REGS_BASE ( ALT_STM_OFST )
#define HW_REGS_SPAN ( 0x04000000 )
#define HW_REGS_MASK ( HW_REGS_SPAN - 1 )
#define USER_IO_DIR
(0x01000000)
#define BIT_LED
(0x01000000)
#define BUTTON_MASK
(0x02000000)
int main(int argc, char **argv) {
void *virtual_base;
int fd;
uint32_t scan_input;
int i;
// map the address space for the LED registers into user space so we can
interact with them.
// we'll actually map in the entire CSR span of the HPS since we want to
access various registers within that span
if( ( fd = open( "/dev/mem", ( O_RDWR | O_SYNC ) ) ) == -1 ) {
printf( "ERROR: could not open \"/dev/mem\"...\n" );
return( 1 );
ww
}
virtual_base = mmap( NULL, HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ),
MAP_SHARED, fd, HW_REGS_BASE );
if( virtual_base == MAP_FAILED ) {
DE1-SoC Training Material
July 3, 2014
108
www.terasic.com.cn
printf( "ERROR: mmap() failed...\n" );
close( fd );
return( 1 );
}
// initialize the pio controller
// led: set the direction of the HPS GPIO1 bits attached to LEDs to output
alt_setbits_word( ( virtual_base +
( ( uint32_t )( ALT_GPIO1_SWPORTA_DDR_ADDR ) & ( uint32_t )( HW_REGS_MASK ) ) ),
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
USER_IO_DIR );
printf("led test\r\n");
printf("the led flash 2 times\r\n");
for(i=0;i<2;i++)
{
alt_setbits_word( ( virtual_base +
( ( uint32_t )( ALT_GPIO1_SWPORTA_DR_ADDR ) & ( uint32_t )( HW_REGS_MASK ) ) ),
BIT_LED );
usleep(500*1000);
alt_clrbits_word( ( virtual_base +
( ( uint32_t )( ALT_GPIO1_SWPORTA_DR_ADDR ) & ( uint32_t )( HW_REGS_MASK ) ) ),
BIT_LED );
usleep(500*1000);
}
printf("user key test \r\n");
printf("press key to control led\r\n");
while(1){
scan_input = alt_read_word( ( virtual_base +
( ( uint32_t )( ALT_GPIO1_EXT_PORTA_ADDR ) & ( uint32_t )( HW_REGS_MASK ) ) ) );
//usleep(1000*1000);
if(~scan_input&BUTTON_MASK)
alt_setbits_word( ( virtual_base +
ww
( ( uint32_t )( ALT_GPIO1_SWPORTA_DR_ADDR ) & ( uint32_t )( HW_REGS_MASK ) ) ),
BIT_LED );
else
alt_clrbits_word( ( virtual_base +
( ( uint32_t )( ALT_GPIO1_SWPORTA_DR_ADDR ) & ( uint32_t )( HW_REGS_MASK ) ) ),
BIT_LED );
DE1-SoC Training Material
July 3, 2014
109
www.terasic.com.cn
}
// clean up our memory mapping and exit
if( munmap( virtual_base, HW_REGS_SPAN ) != 0 ) {
printf( "ERROR: munmap() failed...\n" );
close( fd );
return( 1 );
}
close( fd );
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
return( 0 );
}
4.3.3 创建 Makefile 文件
创建 Makefile 制定 Altera Embedded Command Shell 编译工程的一系列规则,tool
编译生成可执行文件。首先,在“de1_soc_sw_lab2”文件夹下创建一个空白文本文档
并命名为“Makefile”。然后在文档中写入如下所示内容
#
TARGET = hps_gpio
#
CROSS_COMPILE = arm-linux-gnueabihfCFLAGS = -g -Wall -I
${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib/include
LDFLAGS = -g -Wall
CC = $(CROSS_COMPILE)gcc
ARCH= arm
ww
build: $(TARGET)
$(TARGET): main.o
$(CC) $(LDFLAGS)
$^ -o $@
%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
DE1-SoC Training Material
July 3, 2014
110
www.terasic.com.cn
.PHONY: clean
clean:
rm -f $(TARGET) *.a *.o *~
4.3.4 编译工程
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
使用 Altera Embedded Command Shell 编译工程。首先在 SoC EDS 安装路径下找到
Embedded_Command_Shell.bat 并双击打开,路径如"C:\altera\13.1\embedded"。
图 4-6 打开 Altera Embedded Command Shell 工具
ww
在 Command shell 中,使用 shell 命令“cd”切换路径。如图 4-7 所示,切换路径切换
至 “C:/Altera_TRAN/SW/de1_soc_sw_lab2”,然后,输入 “make” 命令编译
(compiling and linking)。
DE1-SoC Training Material
July 3, 2014
111
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 4-7 切换路径至 de1_soc_lab2
工程编译完成之后,输入"ls" 命令可以列出文件夹下所有文件。如图 4-8 所示,
“hps_gpio” 成功的生成。
图 4-8 查看生成的可执行文件 de1_soc_lab2
ww
4.3.5 执行例程
执行 demo 步骤:
1. 启动 DE1-SoC 中的 Linux 系统。
DE1-SoC Training Material
July 3, 2014
112
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
2. “scp”复制可执行文件“hps_gpio”到 Linux 路径下(home/root) 或使用 U
盘拷贝。
3. 串口终端中输入“chmod 777 hps_gpio”更改文件可执行属性。
4. 输入“./hps_gpio”执行 ARM 程序。我们将会看到 HPS_LED 闪烁两次,然后
再按 HPS_KEY 时候,HPS_LED 会显示 HPS_KEY 的状态。使用 ctrl+c 终止程序运行。
5. 复制文件至 SD Card Linux 路径下,和执行例程的详细方法请参考第三章
DE1-SoC 软件设计实验(一) 。
ww
图 4-9 HPS 端 LED 与 Button 位置
DE1-SoC Training Material
July 3, 2014
113
www.terasic.com.cn
第5章
DE1-SoC 软件实验(三)
5.1 引述
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
本教程主要是让 SoC FPGA 初学者了解 HPS/ARM 如何跟 FPGA 交互。“My First
HPS-FPGA”工程演示了实现方法的细节。这个工程包括 Quartus II 工程和 ARM C 工程,
它演示了 HPS/ARM 是如何去控制 FPGA 端的 LED。
注意:例程的硬件工程将会使用到硬件设计实验里面的工程。这个文档不再介绍硬件
设计。
5.1.1 知识需求
这个文档假定开发者已具备如下相关知识:
FPGA RTL 设计
熟悉 Quartus II 使用方法
熟悉 RTL 编程
熟悉 Qsys 使用方法
了解 Altera Avalon Memory-Mapped 接口协议
C 程序设计
熟悉 Altera SoC EDS(Embedded Design Suite)
熟悉 C 编程
了解 boot SD 卡制作方法
了解 DE1-SoC SD 卡 boot 方法
了解复制文件到 DE1-SoC(带卡运行 linux 系统)方法
了解 linux 常用基础 shell 命令
ww
5.1.2 Altera SoC FPGA
在 Altera SoC FPGA 中,HPS 和 FPGA 之间的协议通信主要是通过 AXI(Advanced
eXtensible Interface)-bridge. AXI bridge 是 FPGA 和 HPS 之间数据交互的接口总
DE1-SoC Training Material
July 3, 2014
114
www.terasic.com.cn
线,它包括 FPGA-to-HPS AXI、HPS-to-FPGA AXI 和 Light-weight HPS-to-FPGA AXI。
HPS 作为主端(master),其可以访问 FPGA 端 Avalon MM slave 接口的所有组件。HPS
作为主端时的 AXI-bridge 包括:
HPS-to-FPGA Bridge
Lightweight HPS-to-FPGA Bridge
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
FPGA 作为主端时的 AXI-bridge 包括:
FPGA-to-HPS Bridge
ww
图 5-1 是 FPGA 架构和连接到 HPS 的 L3 Switch 的 AXI 桥的方块图,每个主端(M)和从
端(S)都标示出了个字的位宽。这里每个连接的时钟域暂不做讨论。
图 5-1 AXI Bridge Block Diagram
HPS-to-FPGA 桥是被 level 3(L3) main switch 掌控,轻量级 HPS-to-FPGA 桥是被 L3
slave peripheral switch 掌控。在这个 Quartus II 演示程序中,HPS-to-FPGA 被 ARM/HPS
DE1-SoC Training Material
July 3, 2014
115
www.terasic.com.cn
用来控制 FPGA 端的 LEDs。
FPGA-to-HPS bridge 也可以作主端控制 L3 main switch,允许 FPGA 端的主端访问大
部分的 HPS 从端。比如,FPGA 资源可以通过 FPGA-to-HPS 桥可以访问到 HPS 端的加速
度传感器。
5.2 应用程序工程
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
本章节介绍了怎么设计实现基于 ARM 的 linux 应用程序来控制 FPGA 端 PIO 控制器
pio_led ,pio_led 连接到 HPS/ARM lightweight axi bridge 从而获得在 HPS/ARM 总
线上的物理地址空间。linux 应用程序通过 linux 内核 memory-mapped device 驱动访
问 PIO 控制器 pio_led 的寄存器物理地址进而控制 pio_led 进行相应动作。Altera SoC
EDS 用来编译应用程序。
5.2.1 HPS 头文件
linux 应用程序控制 pio_led 组件需要用到 pio_led 组件属性信息。此段描述如何使
用一个给出的 Linux batch 文件获取应用程序需要的包含 PIO 控制器 pio_led 属性信
息的头文件。
ww
batch file 文件名为 generate_hps_qsys_header.sh。它位于 my_first_hps-fpga
Quartus II 工程文件夹根目录下。生成头文件的步骤如下。
1.运行 Altera SoC EDS command shell
2.通过 shell 命令 cd 定位到 QuartusII 工程文件夹根目录。
3.输入‘./generate_hps_qys_header.sh”并按 Enter 键执行,成功执行后,会生出
名为 hps_0.h 的头文件。在头文件中,包含 pio_led 在 Qsys 中分配的相对于 lwaxi 的
基地址,它表现为一个宏定义 PIO_LED_BASE;pio_led 的位宽信息表示为宏定义
PIO_LED_DATA_WIDTH.这两个参数将会是应用程序访问 pio_led 寄存器所需要的。
DE1-SoC Training Material
July 3, 2014
116
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 5-2 hps_0.h 中定义的 pio_led 信息
5.2.2 映射 pio_led 地址
本段落将讲解怎么将 pio_led 的物理地址映射成应用程序可以访问的虚拟地址。图
5-3 展示了 C 应用程序从 pio_led 基地址转换出虚拟地址。首先,系统调用函数 open
用来打开 memory 设备驱动“/dev/mem”,然后用系统调用函数 mmap 映射 HPS 的 L3 外
设区域物理地址到虚拟地址并表示为一个空指针变量 virtual_base.然后可以通过
virtual_base 增加如下两个偏移地址计算得出 pio_led 的虚拟地址。
轻量级 HPS-to-FPGA AXI 总线相对于 HPS 的 L3 外设区域基地址的偏移地址
pio_led 相对于轻量级 HPS-to-FPGA AXI 总线的偏移地址
ww
第一个偏移地址在 hps.h 中被宏定义为 ALT_LWFPGASLVS_OFST。
hps.h 是 Altera SoC EDS 的一个头文件,它位于
Quartus 安装文件夹\embedded\ip\altera\hps\altera_hps\hwlib\include\socal
第二个偏移地址是 pio_led 在 Qsys 中分配的相对 lwaxi 的基地址,这个在之前章节提
到的头文件 hps_0.h 中,被宏定义为 PIO_LED_BASE。pio_led 的虚拟地址被定义为空
指针 h2p_lw_led_addr. 应用程序可以直接用这个指针变量访问 pio_led 控制器的寄
DE1-SoC Training Material
July 3, 2014
117
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
存器。
图 5-3 PIO 物理地址映射到可被访问的虚拟地址
5.2.3 LED 控制
开发者在控制 led 之前需要理解 PIO 控制器 pio_led 的寄存器映射。图 5-4 为 PIO 控
制器的映射关系图。每个寄存器都是 32 位宽度的。更详细的信息请参考 PIO 控制器的
datasheet。对于 LED 控制,我们仅仅需要写输出值到偏移地址为 0 的寄存器。由于
DE1-SoC 上的 LED 是高电平有效,所以写 0x00000000 到偏移地址为 0 的寄存器,十个
红色 LED 将会熄灭。写 0x000003ff 到偏移地址为 0 的寄存器,十个红色 LED 将会亮起。
在 C 程序中,写值到偏移地址为 0 的寄存器的 C 语言表达式为:
*(uint32_t *) h2p_lw_led_addr= 0x000003ff;
ww
这个申明将会将空指针转换成无符号 32 位整型指针,所以 C 编译器知道写 32 位值
0x000003ff 到 h2p_lw_led_addr 虚拟地址。
DE1-SoC Training Material
July 3, 2014
118
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 5-4 PIO 核的寄存器映射
5.3 创建程序
5.3.1 创建工程文件夹
本例在 C:/Altera_TRAN/SW/路径下 创建“de1_soc_sw_lab3”文件夹,所以此文件夹
绝对路径如"C:\ Altera_TRAN \ SW \ de1_soc_sw_lab3".
5.3.2 创建程序文件
ww
在主函数中,如图 5-6 代码所示,LED 实现成流水灯的状态,60 次循环流水灯后,程
序结束。程序文件包含 main.c 和 hps_0.h。用户可以从“\SW\code\de1_soc_sw_lab3”
拷贝 main.c。hps_0.h 是由 generate_hps_qsys_header.sh 生成的,如果直接拷贝 code
中的,需要注意更改下 PIO_LED_BASE 使其和硬件设计实验中的地址一致。
DE1-SoC Training Material
July 3, 2014
119
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 5-5 LED 流水灯 C 程序
5.3.3 创建 Makefile 文件
创建 Makefile 制定 Altera Embedded Command Shell 编译工程的一系列规则,tool
编译生成可执行文件。首先,在“de1_soc_sw_lab3”文件夹下创建一个空白文本文档
并命名为“Makefile”。然后在文档中写入如下所示内容。
#
ww
TARGET = my_first_hps-fpga
#
CROSS_COMPILE = arm-linux-gnueabihfCFLAGS = -static -g -Wall
-I${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib/include
DE1-SoC Training Material
July 3, 2014
120
www.terasic.com.cn
LDFLAGS = -g -Wall
CC = $(CROSS_COMPILE)gcc
ARCH= arm
build: $(TARGET)
$(TARGET): main.o
$(CC) $(LDFLAGS)
$^ -o $@
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
.PHONY: clean
clean:
rm -f $(TARGET) *.a *.o *~
5.3.4 编译工程
使用 Altera Embedded Command Shell 编译工程。首先在 SoC EDS 安装路径下找到
Embedded_Command_Shell.bat 并双击打开,路径如"C:\altera\13.1\embedded"。
图 5-6 打开 Altera Embedded Command Shell 工具
ww
在 Command shell 中,使用 shell 命令“cd”切换路径。如图 5-7 所示,切换路径切换
至 “C:/Altera_TRAN/SW/de1_soc_sw_lab3”,然后,输入 “make” 命令编译
(compiling and linking)。
DE1-SoC Training Material
July 3, 2014
121
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 5-7 切换路径至 de1_soc_lab3
工程编译完成之后,输入"ls" 命令可以列出文件夹下所有文件。如图 5-8 所示,
“my_first_hps-fpga” 成功的生成。
ww
图 5-8 查看生成的可执行文件 de1_soc_lab3
5.4 执行例程
执行 demo 步骤:
DE1-SoC Training Material
July 3, 2014
122
www.terasic.com.cn
1. 启动 DE1-SoC 中的 Linux 系统。
2. “scp”复制可执行文件“hps_gpio”到 Linux 路径下(home/root) 或使用 U
盘拷贝。
3. 串口终端中输入“chmod 777 my_first_hps-fpga”更改文件可执行属性。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
4. 使用 Quartus Programmer 下载 FPGA 硬件 sof 文件。
这个工程是硬件设计实验中实现的。例程中也有提供一个已做好的硬件工程,需
注意这个 PIO_LED_BASE 和硬件设计实验中的会有不同。需要更新软件中地址重新
make 生成可执行文件。
5. 回到串口终端窗口输入“./my_first_hps-fpga”执行 ARM 程序。我们将会看
到 LED 会做 60 次流水灯操作然后程序结束。
ww
6. 复制文件至 SD Card Linux 路径下,和执行例程的详细方法请参考第三章
DE1-SoC 软件设计实验(一) 。
DE1-SoC Training Material
July 3, 2014
123
www.terasic.com.cn
第6章
进阶实验
6.1 引述
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
本篇文档介绍了基于 SoC 的 FPGA 嵌入式系统中的 FPGA 与 HPS 之间的数据交互,并通
过实例和实验详细展示了如何通过 HPS/ARM AXI 总线 bridge 实现 FPGA 与 HPS 之间的
通信。通过本文档学习可以实现以下目标:
了解 Altera SoC FPGA 中 FPGA 与 HPS 接口.
了解 SoC FPGA 中三种 AXI bridge 特点
学习基于 Qsys 构建实现 FPGA 与 HPS 之间的数据交互的 SoC 硬件系统
学习基于 Linux 操作系统的 FPGA 与 HPS 之间数据交互的应用程序设计
文档包括三部分:
FPGA 与 HPS 接口介绍
HPS to FPGA 数据传输(1 demo)
FPGA access HPS DDR3(2 demos)
6.2 FPGA 与 HPS 接口介绍
为实现 FPGA 与 HPS 之间的存储器共享和数据传输,Altera SoC FPGA 提供了两种方式
用于 FPGA 和 HPS 通信。他们是 FPGA to SDRAM 和 AXI bridge 接口. FPGA to SDRAM 接
口是 HPS 内部的 SDRAM 控制器提供给 FPGA 访问 HPS 内存的接口. AXI bridge 是 FPGA 和
HPS 总线之间数据交互的接口,包括 FPGA-to-HPS AXI、HPS-to-FPGA AXI 和
Light-weight HPS-to-FPGA AXI。
ww
首先看下 HPS SDRAM 控制器 . 其结构框图如图 6-1 所示:
DE1-SoC Training Material
July 3, 2014
124
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 6-1 FPGA-to-SDRAM interface
由图 6-1 可以看出 FPGA 可以通过 FPGA to SDRAM 接口直接访问 HPS 端的内存区域。
FPGA –to-SDRAM 接口支持 AXI-3/4 协议和 Avalon-MM 协议,其中 Avalon-MM 协议可
以设定为只读,只写或者读写双向。接口数目和位宽都可以根据用户的实际需要在 Qsys
中进行设定,如图 6-2 所示:
图 6-2 FPGA-to-SDRAM interface configuration
ww
另外,SoC FPGA 提供的另外一种 FPGA 和 HPS 的通信接口是 AXI bridge。AXI bridge
是统称,包括三种类型:FPGA-to-HPS Bridge、HPS-to-FPGA Bridge 和 Light-weight
HPS-to-FPGA Bridge。AXI bridge 在 HPS 端使用的是 AMBA AXI 协议,用户在 FPGA 中
逻辑设计时可以使用 AXI 协议与 HPS 通信。另外 Qsys interconnect 也实现了 AXI 协
议到 Avalon-MM 协议的自动转换,所以用户可以在 Qsys 中实现 Avalon-MM 接口与 AXI
bridge 的 IP 直接互联。
DE1-SoC Training Material
July 3, 2014
125
www.terasic.com.cn
在通信过程中,如果使用了 FPGA-to-HPS Bridge,FPGA 作为 Master 不仅可以访问 HPS
的内存,还能访问到 HPS 的外设。FPGA-to-HPS Bridge 的位宽可设置为 32-bit、64-bit
或者 128-bit.如果使用了 HPS-to-FPGA Bridge 或者 Light-weight HPS-to-FPGA
Bridge,FPGA 作为 slave 设备供 HPS 进行访问,Lightweight HPS-to-FPGA Bridge 的
性能比较低,寻找空间只有 2M,位宽固定为 32-bit,而 HPS-to-FPGA Bridge 具有
0x3FFF0000,接近 1G 的寻址空间。HPS-to-FPGA Bridge 的位宽也可以设置为 32-bit、
64-bit 或者 128-bit,适合进行存储器的访问和大量数据的传输。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
6.3 HPS to FPGA 数据传输
本节设计展示了如何使用 HPS-to-FPGA Bridge 和 Light-weight HPS-to-FPGA Bridge
进行 FPGA 与 HPS 之间的通信。HPS 通过 HPS-to-FPGA Bridge 把图片数据传送到 FPGA
的 SDRAM 存储器,并通过 Light-weight HPS-to-FPGA Bridge 控制 FPGA 中的 IP 模块,
助 FPGA 从 SDRAM 读出图片数据并显示在 VGA 上。
6.3.1 硬件构架
本系统包括 FPGA 硬体和 HPS 软体设计。FPGA 硬件工程位于
soc-training-axi\demo1_axi\hardware 目录。用户使用 Quartus II 打开
DE1_SOC_golden_top.qpf 工程,并启动 Qsys 工具,选择 soc_system.qsys 打开。就
可以看到本设计在 Qsys 工具中构架的系统。双击 HPS 模块,进入 HPS 模块的编辑页面。
AXI bridge 的编辑框设定如下:
图 6-3 AXI bridges
ww
由于不需要使用 FPGA-to-HPS Bridge,所以 FPGA-to-HPS interface 选择 unused。
HPS-to-FPGA interface 位宽配置为 128-bit,Light-weight HPS-to-FPGA 位宽固定
为 32-bit。点击
关闭编辑页面。在 Qsys system contents 中可以看到 HPS
light-weight(h2f_lw_axi) 和
axi (h2f_axi) HPS-to-FPGA 这两个供 FPGA 通信的
DE1-SoC Training Material
July 3, 2014
126
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
axi 接口,如图 6-4 所示:
图 6-4 AXI bridges in Qsys
接下来关注系统的逻辑互联。HPS-to-FPGA Bridge 把数据传送到 FPGA 端的 SDRAM,所
以把 HPS 的 h2f_axi_master 接口与 SDRAM 的 slave 接口相连。如图 6-5 所示:
图 6-5 h2f_axi_master interconnect with SDRAM slave port
ww
SDRAM 作为 HPS 向 FPGA 写数据缓存设备,同时也供 frame_reader IP 读取数据。所以
Frame Reader 的 Avalon master 接口也与 SDRAM 的 slave 接口相连。如图 6-6 所示:
DE1-SoC Training Material
July 3, 2014
127
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 6-6 Frame Reader master interconnect with SDRAM
为对 SDRAM 进行同步操作,所以 h2f_axi_clock 与 SDRAM 的 clock 以及 frame reader
的 clock_master 采用同一时钟,本系统采用的是 PLL 产生的 pll_sdram.outclk0
(120Mhz).如图 6-7 所示:
ww
图 6-7 Clock for h2f_axi,Frame Reader and SDRAM
HPS 通过 light weight HPS-to-FPGA 接口控制 Frame Reader 和 alpha blending mixer
IP,这通过 HPS 的 h2f_lw_axi_master 接口与其 salve 接口连接实现。如图 6-8 所示:
DE1-SoC Training Material
July 3, 2014
128
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 6-8 h2f_lw_axi_master interconnect with frame reader and mixer
在系统中对这两个 IP 分配 Light weight HPS-to-FPGA Bridge 地址空间中的基址,供
HPS 对 IP 模块进行寻址访问。
6.3.2 图像处理 IP 功能的分析
本系统中使用到到 Altera 图像处理套件中的 IP 模块,这些 IP 都具有点对点传输的
ST 接口。Frame Reader 通过 Avalon master port 从 SDRAM 中读出 HPS 缓存的数据后
并通过 ST 接口传送给 mixer 模块。HPS 需要通过 Light weight HPS-to-FPGA Bridge
控制 Frame Reader 读取数据的地址和数据位宽。Frame Reader 中设定图像 frame 大
小为 640x480。Test pattern generator 输出黑色的背景到 mixer,分辨率为
1280*1024。LOG_Generate IP 产生出来“Terasic-Altera” logo 图片数据也输出到
mixer。然后 Alpha blending mixer 把三个独立的数据源按层叠加,叠加采用默认的
上层覆盖下层的方式进行。另外 Mixer 还可以实现图层显示的位置的动态调整,这通
过 Light weight HPS-to-FPGA Bridge 控制实现 。Clocked Video output IP 把混合
后的数据送给 VGA 显示模块,VGA IP 把数据按照 VGA 时序送到 VGA 显示器进行显示。
数据流在这些 IP 的 ST 接口上的时钟速率为 150MHz。
ww
图 6-9 是整个系统的构架示意图: 红色为数据传输通道,灰色为控制通道。
DE1-SoC Training Material
July 3, 2014
129
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 6-9 系统结构框图
6.3.3 软件设计
ww
软件部分需要完成两个主要功能,一是获取图片数据并解码为 raw RGB 格式并传输到
FPGA side SDRAM,二是控制 Frame Reader 和 mixer 的工作。为简化软件设计,采用在
Linux 嵌入式系统的基础上开发应用软件。由于 Embedded Linux 支持文件系统,程序
可以通过读取文件的数据。本设计中为避免复杂的图片解码工作,图像格式使用位图
文件,软件中只需要读出原始图片数据进行简单的处理就能得到 RGB 格式的图片数据。
软件放在目录 soc-training-axi\demo1_axi\demo1_axi,其中 lib_bitmap.c 是对 bmp
图片文件的处理程序。
程序中首先使用 mmap()函数把 HPS-to-FPGA Bridge 和 Lightweight HPS-to-FPGA
Bridge 的物理地址空间映射到 Linux 内核虚拟地址空间以供应用程序可以访问的虚拟
地址后才能访问到 FPGA 的资源。
unsigned char GetBmpData(unsigned char *bitCountPerPix, unsigned int *width,
unsigned int *height, const char* filename,unsigned long *memory_vip_frame);
完成映射后通过 IP 模块在 Qsys 中分配的基址访问到 IP 模块。
DE1-SoC Training Material
July 3, 2014
130
www.terasic.com.cn
lw_axi_virtual_base = mmap( NULL, HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ),
MAP_SHARED, fd, HW_REGS_BASE );
axi_virtual_base = mmap( NULL, HW_FPGA_AXI_SPAN, ( PROT_READ | PROT_WRITE ),
MAP_SHARED, fd,ALT_AXI_FPGASLVS_OFST );
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
Bmp 图像处理函数通过读取 bmp 文件数据后把 RGB 数据按照 RGB x4 byte 的方式传送
到 FPGA 的 SDRAM。由于 Frame Reader 在读取数据的时候会按照总线位宽每次读取 4
个字节,所以在写数据的时候需要填空一个 byte 的空字节。数据传输的起始地址由函
数中的 memory_vip_frame 参数决定。完成 VIP 的控制和数据传输后,程序会动态控制
图片数据在 Mixer 中的显示位置,可以看到图片在 VGA 的移动效果。
6.3.4 编译软件和运行
Linux app 需要在 x86 机器上完成交叉编译后在 DE1_SoC 开发板上运行。在
Embedded_Command_Shell.bat 执行 make 可以交叉编译软件。如图 6-10 所示:
图 6-10 app 编译
ww
完成编译后,把 boot SD 卡插入到 DE1_SoC,上等等待 Linux boot 后登陆。使用 scp
命令把目标文件 demo1_axi 和 bmp 测试文件 demo1.bmp 拷贝到 SD 的/home/root 目录(如
果使用 soc_traning image 中文件已经 copy 好,可以直接在目录下搜寻)。VGA 接口上
接上显示器,打开 Quartus II 的 programmer 配置 FPGA,如图 6-11 所示:
DE1-SoC Training Material
July 3, 2014
131
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 6-11 Download FPGA sof file
在 Puttty 中执行目标文件,使用命令 ./ demo1_axi 会看到图片显示在 VGA 上,并在
屏幕上动态移动。按下 Ctrl+C 停止程序运行,图片会静态显示在 VGA 上
6.4 FPGA acess HPS DDR3
本节验证 FPGA 通过 FPGA-to-HPS axi bridge 端口访问 HPS 的 DDR3。在 system console
工具中使用 JTAG 对 HPS DDR3 的一段存储区域进行读写,同时在 Linux 系统中对 DDR3
的同一片区域读写。通过数据对比验证 FPGA 可以通过 FPGA-to-HPS 端口访问 HPS 的
DDR3。
6.4.1 软硬件设计
ww
本设计使用 DE1_SoC_ghrd 范例工程。GHRD 工程中 FPGA-to-HPS 接口已经使能。如图
6-12 所示:
DE1-SoC Training Material
July 3, 2014
132
www.terasic.com.cn
图 6-12 FPGA-to-HPS
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
在 Qsys 中可以看到 JTAG to Avalon master IP ( master_secure )与 HPS 模块的
FPGA-to-HPS slave 接口相连。如图 6-13 所示:
图 6-13 master_secure interconnect with f2h_axi_slave
ww
Qsys 中提供的 System console 工具可以通过 JTAG 访问到 JTAG to Avalon master IP
所连接的 slave 设备,在本系统中即 FPGA-to-HPS 接口所能访问的 HPS 的外设或者 HPS
端的 DDR3。
Linux 内核具有内存管理系统(MMU),Linux 按照虚拟地址访问外设和存储器。而在
FPGA 端 JTAG to Avalon master 按照物理地址访问。所以需要在 Linux 内核中实现一
段内存地址的分配,并把物理地址映射到虚拟地址。Linux 内核分配内存使用到内核
模块加载方式,我们提供内核模块程序编译出来的目标文件,内核模块加载完成后,
内核会分配出一段内存区域供用户测试使用。在 system console 中使用 JTAG 读写这
段内存区域,与 Linux 中运行的 shell 文件读写的结果进行比较验证。
6.4.2 实验步骤
DE1-SoC Training Material
July 3, 2014
133
www.terasic.com.cn
把 boot SD 卡插入开发板以后上电启动,登陆后需要把本实验用到的内核模块文件
(mymodule.ko)和 shell(stat_mydriver.sh、read_mydriver.sh 和
write_mydriver.sh)文件拷贝到 SD 的 /home/root 目录下(如果使用 soc_traning
image 中文件已经 copy 好,可以直接在目录下搜寻)。
在 Putty 中使用 insmod 命令加载内核模块,具体如图 6-14 所示:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 6-14 Load mymodule.ko file
内核模块加载后 linux 系统会分配一段存储区域并把这段内存映射到虚拟地址。通过
执行 stat_mydriver.sh 查看物理地址和虚拟地址以及分配的内存区域大小。如图
6-15 所示:
图 6-15 物理地址和虚拟地址空间
ww
图中显示分配的内存起始物理地址为:0x3F131000,映射到 Linux 系统中的虚拟地址
为:0xBF131000。分配的地址大小为:0x00001000。
配置 FPGA,启动 Quartus II 的 programmer 下载 sof 文件。如图 6-16 所示:
DE1-SoC Training Material
July 3, 2014
134
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 6-16 Download FPGA sof file
ww
在 Qsys 中启动 system console 工具。如图 6-17 所示:
图 6-17 system console
在 tcl console 中使用 tcl 命令查看 jtag master 设备,并打开与 FPGA-to-HPS 端
口连接的 master_secure 在 tcl console 中依次执行下面的命令
DE1-SoC Training Material
July 3, 2014
135
www.terasic.com.cn
get_service_paths master
set jtag_master [lindex [get_service_paths master] 1]
open_service master $jtag_master
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
执行后结果如图 6-18 所示:
图 6-18 tcl console result
ww
接下来可以使用 JTAG 的 master_read 和 master_write 命令读写 HPS 内存,同时在
Linux 中执行 read_mydriver.sh 和 write_mydriver.sh 脚本实现内存的读写验证。
通过写命令 master_write_32 往 DDR3 中的某一地址写入 32-bit 的数据。如使用命令
master_write_32 $jtag_master 0x3F131000 0xabcd1234 向 0x3F131000 写入数据
0xabcd1234。如图 6-19 所示:
图 6-19 master_write_32 command
DE1-SoC Training Material
July 3, 2014
136
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
在 Linux 中执行 read_mydriver.sh shell 文件从内存中读出这个数据。
read_mydriver.sh 中使用的是偏移地址的访问方式,即访问相对于虚拟地址
0xBF131000 的偏移地址。由于刚执行的 FPGA 写数据语句中的使用的地址 0x3F131000
相对于分配的内存区域偏移地址为 0,所以使用 read_mydriver.sh 读取该地址的偏移
地址也为 0。在 putty 中执行的命令为:./ read_mydriver.sh 0x00
执行结果如图 6-20 所示:
图 6-20 master_write_32 command
结果中可发现读出的数据与写入的数据是一样的,说明 FPGA 可以对 HPS DDR3 写入数
据。
在 Linux 中执行 write_mydriver.sh 可以向分配的内存区域中写入数据,
write_mydriver.sh 访问到的也是 0xBF131000 的偏移地址。在 putty 中执行命令:
./write_mydriver.sh 0x00 0x2345aeb2 如
图 6-21 所示:
图 6-21 write_mydriver.sh 执行结果
ww
在 system console 中使用 tcl 命令让 jtag 读出该地址的数据,使用 tcl 命令:
master_read_32 $jtag_master 0x3F131000 0x01
此命令表示从 0x3F131000 读出一个 32-bit 的数据。带上参数后,会自动增加地址后
读取多个 32-bit 数据。这里读取 32-bit 数据,所以参数设置为 1,如图 6-22 所示:
图 6-22 master_read_32 执行结果
本实验中 Linux 分配的内存大小为 0x1000,所以在读写过程中的偏移地址大小不能超
DE1-SoC Training Material
July 3, 2014
137
www.terasic.com.cn
过 0x1000。可以在范围内选择任意地址进行读写验证。如在 0x800 的偏移地址验证.
如图 6-23 所示:
图 6-23 address offset 0x800 verify
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
6.5 FPGA 访 HPS 内存 DEMO
本节展示 FPGA 通过 FPGA-to-HPS 端口把 test pattern 产生的 color bar 的 RGB 数据
存入到 HPS DDR3 中,Linux 读出数据后按照 bmp 格式把 RGB 数据存储为一张图片,并
写入 SD 卡。本设计展示 FPGA 和 HPS 通过存储器共享实现协同工作。
6.5.1 硬件设计
本设计的硬件 project 位于目录 lab2_axi/bmp_save/hardware/bmp_save,使用
DE1_SOC_golden_top.qpf 打开 Quartus II 工程,启动 Qsys 后选择 soc_system.qsys
打开。可以看到本设计在 Qsys 工具中构架的系统。双击 HPS 模块,进入 HPS 模块的
编辑页面。AXI bridge 的设定如图 6-24 所示:
图 6-24 AXI bridge setting
ww
使能 FPGA-to-HPS 接口用于图片数据的传输,使能 Lightweight HPS-to-FPGA Bridge
用于 VIP_CAPTURE 模块的控制。FPGA-to-HPS interface 位宽配置为 32-bit,Light
weight HPS-to-FPGA 位宽固定为 32-bit。点击 关闭编辑页面。
在 Qsys 可以看到 HPS 的接口如图 6-25 所示:
图 6-25 f2h_axi and f2h_lw_axi bridge
DE1-SoC Training Material
July 3, 2014
138
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
本系统中使用 VIP_CAPTURE,这个模块是通过 Avalon ST 接口的 sop 和 eop 信号捕获
到一个完整的 package 数据。经过 FIFO 缓存后,数据通过 Avalon master 接口被写入
到 slave 设备。 DEMO 中的数据由 test pattern generator 产生一个分辨率为 640x480
的 color bar。HPS 的 Light Weight HPS-to-FPGA Bridge 与 VIP_CAPTURE 的 slave 接
口相连,完成相应的控制和状态的读取。系统的逻辑连接如图 6-26 所示:
图 6-26 components interconnection in Qsys
VIP_CAPTURE 在 Lightweight HPS-to-FPGA Bridge master 总线上分配的基址为
0x00000000。
6.5.2 软件设计
ww
软件部分需要完成两个主要功能,一是控制 VIP_CAPTURE 的工作并获取具体状态,二
是等待 VIP_CAPTURE 完成数据传输后把数据从内存中读取出来并存储为 bmp 格式的图
片。
Linux 内核的内存管理系统不允许程序直接访问到物理内存单元。内存单元需要经过系
统分配后并映射到虚拟地址。设计提供 linux 内核模块完成物理内存的分配。然后通
过字符设备的 read 方法函数把内存区域的数据传送到用户空间。用户可以直接打开字
符设备都使用 read 函数来读取数据。由于数据格式为 RGB888,数据传输工程中使用的
总线位宽为 32-bit,所以 VIP_CAPTURE 写数据会按照 xRGB 格式写入。x 为自动填充的
0 字节。分配的内存区域大小为 640*480*4 bytes。读取数据后需要把填充的一个字节
数据舍弃后再写入 bmp 文件。
VIP_CAPTURE 模块的控制程序中先通过 mmap()函数把 Light weight HPS-to-FPGA
Bridge 映射到 Linux 应用程序可以访问的虚拟地址,然后再通过 Qsys 中分配的基址
就访到 VIP_CAPTURE 模块。
VIP_CAPTURE 模块中具有四个 register,每个 register 的描述见表 1:
DE1-SoC Training Material
July 3, 2014
139
www.terasic.com.cn
表 1:VIP_CAPTURE 的寄存器描述
偏移
地址
REG_CONTROL
读写
功能描述
只写
控制 VIP_CAPTURE 抓取数据开始和停
止
写 1 表示开始抓取数据,0 表示停止
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
0x00
寄存
器名
0x01
REG_STATUS
只读
VIP_CAPTURE 的工作状态寄存器,具体
状态描述见表 2
0x02
REG_BASE_ADDRESS
只写
数据写区域的起始地址
0x03
REG_PIXEL_CNT
只读
已写入的像素个数
VIP_CAPTURE 模块的 REG_STATUS 的各个状态信息的具体描述见表 2:
表 2:VIP_CAPTURE 的各个工作状态的描述
状态名
具体描述
0x00
ST_STANDY
系统开始后,没有收到主控制器的开始信号,
REG_CONTROL 一直为 0 状态
0x01
ST_WAIT_SOP
REG_CONTROL 被写入 1 后,模块开始等待 package
的 SOP 信号
0x02
ST_PROCESS
模块开始采集数据并通过 avalon master 接口写入
存储设备
0x03
ST_SUCCESS
正确获取到 eop 信号后,FIFO 没有溢出的情况下数
据全部写入存储器
0x04
ST_FIFO_OVERFLOW
FIFO 溢出
0x05
ST_BAD_FRAME
发现 eop 信号出现在 sop 之前的状态
ww
状态
代码
Bmp 文件的产生函数定义为:
int GenBmpFile(unsigned char *pData, unsigned char bitCountPerPix, unsigned int
width, unsigned int height, const char *filename)
DE1-SoC Training Material
July 3, 2014
140
www.terasic.com.cn
pData 为数据的起始地址,bitCountPerPix 为数据的每个像素的位宽,width 和 height
分别表示图像的宽度和高度,filename 表示存储的 bmp 的文件名。
6.5.3 编译和运行
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
Linux 运行的软件程序位于目录 lab2_axi/bmp_save/lab2_axi,打开
Embedded_Command_Shell.bat 后进入到软件目录,使用 make 编译源文件。如图 6-27
所示:
图 6-27 compile app
ww
产生的目标文件为 demo2_axi _app.
设计提供运行程序的脚本文件 test.sh。脚本自动加载内核模块文件后创建文件节点,
并运行 app 后把产生的 bmp 文件拷贝到 SD 卡的 fat 分区。用户只需要执行一次该脚
本,所有工作都会自动完成。等待 SD 卡 boot 完成以后,把
soc-training-axi\bmp_save\demo2_axi\destfile 下的文件拷贝到 micro SD 的
/home/root 目录中(果使用 soc_traning image 中文件已经 copy 好,可以直接在目录
下搜寻)。
配置 FPGA,启动 Quartus II 的 programmer 下载 sof 文件。如图 6-28 所示:
图 6-28 sof file download
DE1-SoC Training Material
July 3, 2014
141
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
再进入 putty 在 terminal 下执行 ./test.sh 其结果如图 6-29 所示:
图 6-29 test.sh 执行结果
在 Embedded_Command_Shell.bat 中使用 scp 把 axi_demo2.bmp 文件拷贝到 windows 机
器上,scp 执行成功后在本地目录下,拷贝方法如图 6-30 所示:拷贝完成后可以查看
axi_demo2.bmp 文件,即是 test pattern generator 产生的 pattern,如图 6-31 所示。
ww
图 6-30 使用 scp 复制 axi_demo2.bmp 到本地
DE1-SoC Training Material
July 3, 2014
142
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
ww
图 6-31 查看 axi_demo2.bmp 文件
DE1-SoC Training Material
July 3, 2014
143
www.terasic.com.cn
第7章
DS-5 (Altera Edtion)
应用设计
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
7.1 引述
Altera 版 ARM DS-5 是 Altera 提供的基于 ARM Development Studio5(DS-5)工具包的
特定设备,是一个强大的基于 Eclispe 的综合集成开发环境,特征如下:
支持文件编辑,语法高亮以及源代码索引
支持基于 Makefiles 编译
裸机调试
Linux 应用程序调试
Linux 内核及驱动程序调试
多核调试
访问 HPS 外设寄存器
访问 FPGA soft IP 设备寄存器
通过 PTM 跟踪程序的执行
通过 STM 跟踪系统事件
HPS 及 FPGA 之间的交叉控制
使用 Altera USB Blaster II 连接目标板
本章将通过三个实例向用户展示如何使用 DS-5 调试及在 DE1-SoC 上运行应用程序。
7.2 打印 Hello World
ww
此应用程序将在调试控制面板(debugger console)打印“Hello World”的信息。范
例没有使用引脚,所有的通信都是通过 JTAG 完成。
7.2.1 创建新工程
10. 在 C:\Altera_TRAN 路径下新建文件夹,并命名为“DS-5 Workspace_Hello_World”
DE1-SoC Training Material
July 3, 2014
144
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑1 创建工程活页夹
ww
11. 如图 7‑2 所示,在 windows 下选择 "开始 -> 所有程序 ->
for DS-5", 打开 DS-5。
ARM DS-5 -> Eclipse
图 7‑2 开启 DS-5
12. 在 Workspace 路径输入: C:\Altera_TRAN\DS-5 Workspace_Hello_World 如图 7
‑3 所示。
DE1-SoC Training Material
July 3, 2014
145
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑3 选择 workspace
ww
13. 关闭“Welcome to DS-5”页面, 如图 7‑4 所示。
图 7‑4 关闭欢迎页
14. 建立一个新的工程, 选择 File->New->C Project,如图 7‑5 所示。
DE1-SoC Training Material
July 3, 2014
146
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑5 选择 C 工程
15. 在出现的 C Project 窗口中如图 7‑6 所示进行工程设置。点击 Finish 完成设置,
完成后回到主窗口如图 7‑7 所示。
图 7‑6 工程设置
Project name : SoCFPGA-HelloWorld-Baremetal-GNU
Project type : Makefile project->Empty Project
Toolchains :
Other Toolchain
ww
DE1-SoC Training Material
July 3, 2014
147
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑7 创建新工程
ww
16. 进入 Quartus II 13.1 的安装目录,如 :
“C:\altera\13.1\embedded\examples\software”
解压 Altera-SoCFPGA-HelloWorld-Baremetal-GNU.tar.gz 如图 7‑8 所示。
图 7‑8 解压缩 Altera 范例工程
17. 打开解压后的 Altera-SoCFPGA-HelloWorld-Baremetal-GNU 文件夹,将
DE1-SoC Training Material
July 3, 2014
148
www.terasic.com.cn
altera-socfpga-hosted.ld
hello.c
Makefile
semihost_setup.ds
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
等 4 份文件复制至新建工程中,如图 7‑9 所示。此 4 份文件的说明如表格 7-1
图 7‑9 复制文件至新建工程
表格 7-1 文件说明
文件名
描述
hello.c
应用程序源代码
altera-socfpga-hosted.ld
链接脚本
semihost_setup.ds
下载应用程序的调试器脚本
Makefile
编译应用程序
ww
18. 回到 DS-5 主窗口如图 7‑10 所示,右击 SoCFPGA-HelloWorld-Baremetal-GNU,选
择“Paste”,活页夹内的文件会被自动加入工程如图 7‑11 所示。
DE1-SoC Training Material
July 3, 2014
149
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
ww
图 7‑10 复制工程文件(1)
图 7‑11 复制工程文件(2)
DE1-SoC Training Material
July 3, 2014
150
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
19. 右击 SoCFPGA-HelloWorld-Baremetal-GNU,选择“Properties”, 如图 7‑12 所
示
图 7‑12 选择“Properties”
ww
20. 在 Properties 窗口选择 C/C++ Build->Tool Chain Editor,将 Current toolchain
设置为 Linux GCC,如图 7‑13 所示
图 7‑13 设置 toolchain
DE1-SoC Training Material
July 3, 2014
151
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
21. 选择 C/C++ Build->Environment,单击 Add,添加环境变量,如图 7‑14 所示
图 7‑14 添加环境变量
需要添加的变量共有 3 个, 编辑 Name 及 Value,单击“OK”,如图 7‑15 所示
图 7‑15 添加变量 GNU_BAREMETAL_TOOLCHAIN
设定如下:
变量 1:
Name: GNU_BAREMETAL_TOOLCHAIN
Value: ${SOCEDS_ROOT}/host_tools/mentor/gnu/arm/baremetal/bin
ww
变量 2:
Name: PATH
Value: ${GNU_BAREMETAL_TOOLCHAIN}${PathDelimiter}${PATH}
DE1-SoC Training Material
July 3, 2014
152
www.terasic.com.cn
变量 3:
Name: SOCEDS_ROOT
Value: ${ds5_install_path}/..
“ OK” 完成 Properties 的设置,如图 7‑16 所示。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
单击“Apply”
图 7‑16 完成 Properties 设置
7.2.2 编译工程
ww
1. 右击 SoCFPGA-HelloWorld-Baremetal-GNU 选择 Build Project, 编译工程,如图 7
‑17 所示
DE1-SoC Training Material
July 3, 2014
153
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑17 编译工程
ww
2. Project Explorer 会显示编译生成的可执行文件 hello.axf,如图 7‑18 所示
图 7‑18 生成可执行文件
DE1-SoC Training Material
July 3, 2014
154
www.terasic.com.cn
7.2.3 调试配置
运行应用程序之前,需执行以下操作:
确认 DE1-SoC 没有插上 Micro SD Card
USB 电缆连接 DE1_SoC 的 USB Blaster 至 PC 机。
连接 12V 电源至 DE1_SoC,按下 POWER ON/OFF。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1. 选择 Run>Debug Configurations,如图 7‑19 所示
图 7‑19 选择 Debug Configurations
ww
2. 右击 DS-5 Debugger,选择 New,如图 7‑20 所示
DE1-SoC Training Material
July 3, 2014
155
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑20 新建 DS-5 Debugger
ww
3. 编辑 Name: SoCFPGA-HelloWorld-Baremetal-Debug,如图 7‑21 所示
图 7‑21 编辑 Name 及配置 Connection
DE1-SoC Training Material
July 3, 2014
156
www.terasic.com.cn
Connection 页设置:
a. 如图 7‑22 所示,Select Target 选项配置为 Altera->Cyclone V SoC->Bare
Metal Debug->DebugCortex-A9_0 via Altera USB-Blaster.
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑22 配置 Altera USB-Blaster
ww
b. 如图 7‑23 所示 ,点击 Browse, USB Blaster connection 选择 DE_SoC USB-1
图 7‑23 选择 DE_SoC USB-1
DE1-SoC Training Material
July 3, 2014
157
www.terasic.com.cn
Files 页设置:
单击 Workspace, 如图 7‑24 所示;
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑24 配置 Files(1)
ww
选择 hello.axf,点击 OK,如图 7‑25 所示
图 7‑25 配置 Files(2)
DE1-SoC Training Material
July 3, 2014
158
www.terasic.com.cn
Debugger 页设置:
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
选择 Run target initialization debugger script,点击 Workspace…如图 7
‑26 所示;
图 7‑26 配置 Debugger(1)
ww
选择 semihost_setup.ds,单击 OK,如图 7‑27 所示
图 7‑27 配置 Debugger(2)
DE1-SoC Training Material
July 3, 2014
159
www.terasic.com.cn
7.2.4 下载及运行
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1. 单击“Apply”“ Debug”, 如图 7‑28 所示;在视窗转换窗口单击 Yes,如图 7‑
29 所示,选择打开 debug 视窗。
图 7‑28 Debug
图 7‑29 视窗转换
ww
2. 调试器通过 JTAG 将应用程序下载至 DE1_SoC,并运行至 main 函数;单击绿色按钮
Continue(F8),运行应用程序,如图 7‑30 所示。
DE1-SoC Training Material
July 3, 2014
160
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑30 单击 Continue
ww
3. Application Console 中将显示“Hello Tim”的信息,如图 7‑31 所示。
图 7‑31 显示 Hello World
DE1-SoC Training Material
July 3, 2014
161
www.terasic.com.cn
7.3 点亮 HPS LED
此实验展示如何用 DS-5 运行工程控制 FPGA 端 LED。。
7.3.5 复制工程
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
将实验材料路径 lab\DS-5\ 内的 "DS-5 Workspace_HPS_LED""DS-5_HW"两个活页夹
复制至 C:\Altera_TRAN 如图 7‑32 所示
图 7‑32 复制工程
7.3.6 编译工程
1. 在 windows 下选择 "开始 -> 所有程序 ->
开 DS-5。
ARM DS-5 -> Eclipse for DS-5", 打
ww
2. 如图 7‑33 所示,选择 File -> Switch Workspace -> Other 来切换 Workspace。
DE1-SoC Training Material
July 3, 2014
162
www.terasic.com.cn
图 7‑33 切换 Workspace
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
3. 如图 7‑34 所示,在 Workspace 下输入路径:
C:\Altera_TRAN\DS-5 Workspace_HPS_LED
完成后按 ok。
图 7‑34 输入 workspace 路径
4. 如
ww
图 7‑ 35,所示展开工程,双击 Makefile 文件进行编辑,修改 preloader 文件
(u-boot-spl)路径至 :
C:/Altera_TRAN/DS-5_HW/software/spl_bsp/uboot-socfpga/spl/u-boot-spl
完成後請儲存結果
DE1-SoC Training Material
July 3, 2014
163
www.terasic.com.cn
注: 你也可以使用 2.8 节实验产生的 preloader 文件与工程. 详情请至 2.8 节查
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
看。
图 7‑35 切换 Workspace
ww
5. 选择 Project->Build All,生成可执行文件,如图 7‑36 所示
图 7‑36 编译工程
DE1-SoC Training Material
July 3, 2014
164
www.terasic.com.cn
7.3.7 调试配置
运行应用程序之前,需执行以下操作:
确认 DE1-SoC 没有插上 Micro SD Card
USB 电缆连接 DE1_SoC 的 USB Blaster 至 PC 机。
连接 12V 电源至 DE1_SoC,按下 POWER ON/OFF。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1. 选择 Run->Debug Configurations,如图 7‑37 所示。
图 7‑37 选择 Debug Configurations
ww
2. 选择 DS-5 Debugger-> SoCFPGA-HardwareLib-GUN-Debug,如图 7‑38 所示
DE1-SoC Training Material
July 3, 2014
165
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑38 选择 DS-5 Debugger
ww
Connection 页设置:
a. 如图 7‑39 所示, Target 选项已配置为 Altera->Cyclone V SoC->Bare
MetalDebug->DebugCortex-A9_0 via Altera USB-Blaster.
图 7‑39 配置 Connection
DE1-SoC Training Material
July 3, 2014
166
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
b. 点击 Browse, USB Blaster connection 选择 DE_SoC USB-1 图 7‑40
图 7‑40 选择 DE_SoC USB-1
ww
Debugger 页设置:
指定 debugger 脚本,如图 7‑41 所示
图 7‑41 配置 Debugger
DE1-SoC Training Material
July 3, 2014
167
www.terasic.com.cn
7.3.8 下载及运行
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1. 如图 7‑42 所示,点击"Debug"开始执行调试器脚本
图 7‑42 执行 Debug
ww
2. DS-5 首先下载 Preloader image 并在末尾处设置断点,Preloader image 运行至此
断点时将根据 GHRD 配置 HPS 组件,然后开始下载应用程序可执行文件图 7‑43。
图 7‑43 运行应用程序
DE1-SoC Training Material
July 3, 2014
168
www.terasic.com.cn
3. 应用程序下载后将运行至 main 函数,点击
Continue(F8),运行应用程序 ,
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
此时可看到 HPS LED 被点亮,并可查看相应寄存器,如图 7‑44 和图 7‑45 所示
图 7‑44 运行应用程序
ww
图 7‑45 DE1-SoC HPS LED 位置
DE1-SoC Training Material
July 3, 2014
169
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
7.3.9 原理
1. 如图 7‑46 所示,DE1_SoC 的 HPS_LED 连接至 HPS_GPIO53,由 GPIO1 控制器的 bit-24
控 制 。 更 多 关 于 HPS GPIO 信 息 可 以 查 阅 4.2.3 节 以 及 Altera 用 户 手 册
General-Purpose I/O Interface 部分 :
http://www.altera.com/literature/hb/cyclone-v/cv_54022.pdf
图 7‑46 GPIO 接口
2. GPIO 寄存器 :
gpio_swporta_ddr:配置 IO 引脚方向
gpio_swporta_dr :写数据到输出引脚
ww
3. GPIO1 控制器及寄存器的偏移地址分别为:
GPIO1 controller
0xFF709000
gpio_swporta_ddr
0x4
gpio_swporta_dr
0x00000000
关于 CycloneV 的 hps address map 可以参考下面的连结 :
DE1-SoC Training Material
July 3, 2014
170
www.terasic.com.cn
http://www.altera.com/literature/hb/cyclone-v/hps.html
4. API:
配置 LED 引脚为输出引脚:
alt_write_word(GPIO1_OFFSET + gpio_swporta_ddr_OFFSET, 0x1000000);
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
点亮 LED:
alt_write_word(GPIO1_OFFSET + gpio_swporta_dr_OFFSET, 0x1000000);
5. 在 DS-5 的 窗 口 内 如 图 7 ‑ 47 所 示 , 将 Register 页 面 下 的 gpio1 内 的
gpio1_gpio_swporta_dr 的值由 0x0100000 改为 0x0000000 将可以看到 DE1-SoC
的 HPS LED 被熄灭:
ww
图 7‑47 修改 GPIO1 缓存器
DE1-SoC Training Material
July 3, 2014
171
www.terasic.com.cn
7.4 点亮 FPGA LED
此实验展示如何用 DS-5 运行工程控制 FPGA 端 LED。
7.4.1 复制工程
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
将实验材料路径 lab\DS-5\ 内的 " DS-5 Workspace_FPGA_LED""DS-5_HW"两个活页夹
复制至 C:\Altera_TRAN 如图 7‑48 所示。
图 7‑48 复制工程
7.4.2 编译工程
1. 在 windows 下选择 "开始 -> 所有程序 ->
开 DS-5。
ARM DS-5 -> Eclipse for DS-5", 打
ww
2. 如图 7‑49 所示,选择 File -> Switch Workspace -> Other 来切换 Workspace。
图 7‑49 切换 Workspace
DE1-SoC Training Material
July 3, 2014
172
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
3. 如图 7‑50 所示,在 Workspace 下输入路径:
C:\Altera_TRAN\DS-5 Workspace_FPGA_LED
完成后按 ok。
图 7‑50 输入 workspace 路径
4. 如图 7‑51,所示展开工程,双击 Makefile 文件进行编辑:
因為此實驗需要控制 FPGA 端器件, 需要下載.sof 文件。將 makefile 內的
soc_system.sof 路徑修改為 :
C:/Altera_TRAN/DS-5_HW/soc_system.sof
修改 preloader 文件 (u-boot-spl)路径至 :
C:/Altera_TRAN/DS-5_HW/software/spl_bsp/uboot-socfpga/spl/u-boot-s
pl
ww
完成後請儲存結果。
DE1-SoC Training Material
July 3, 2014
173
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑51 切换 Workspace
5. 选择 Project->Build All,生成可执行文件,如图 7‑52 所示。
图 7‑52 编译工程
ww
7.4.3 调试配置
运行应用程序之前,需执行以下操作:
确认 DE1-SoC 没有插上 Micro SD Card。
DE1_SoC 的 MSEL[4:0]设置为 01110。
USB 电缆连接 DE1_SoC 的 USB Blaster 至 PC 机。
DE1-SoC Training Material
July 3, 2014
174
www.terasic.com.cn
连接 12V 电源至 DE1_SoC,按下 POWER ON/OFF。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1. 选择 Run->Debug Configurations,如图 7‑53 所示。
图 7‑53
选择 Debug Configurations
ww
2. 选择 DS-5 Debugger-> SoCFPGA-HardwareLib-GUN-Debug,如图 7‑54 所示。
图 7‑54
DE1-SoC Training Material
July 3, 2014
选择 DS-5 Debugger
175
www.terasic.com.cn
Connection 页设置
a. 如图 7‑55 所示,Target 选项已配置为 Altera->Cyclone V SoC->Bare
Metal Debug->DebugCortex-A9_0 via Altera USB-Blaster。
b. 点击 Browse, USB Blaster connection 选择 DE1_SoC USB-1。
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑55
Files 页设置
a. 选择 “Add peripheral description files from directory”
b. 点击 File System,选择 SVD 文件所在的目录,SVD 文件包含了 HPS 寄存
器及 FPGA Soft IP 寄存器的描述,如图 7‑56 所示。
ww
配置 Connection
DE1-SoC Training Material
July 3, 2014
176
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑56
Debugger 页设置
指定 debugger 脚本, 如图 7‑57 所示。
ww
Files 配置
图 7‑57
DE1-SoC Training Material
July 3, 2014
Debugger 配置
177
www.terasic.com.cn
7.4.4 下载及运行
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1. 如图 7‑58 所示单击 Debug,开始执行调试器脚本,下载 Preloader image 及应用
程序可执行文件。
图 7‑58 执行 Debug
2. ,点击 Continue(F8),运行应用程序,如图 7‑59 所示。
ww
应用程序运行并执行以下 API:
alt_fpga_control_enable() ,允许 HPS 控制 FPGA;
alt_fpga_cfg_mode_get() ,检测 MSEL 配置模式;
alt_fpga_configure() ,配置 FPGA;
alt_write_word() ,切换板上的 LED;
alt_fpga_control_disable() ,禁用 HPS 控制 FPGA;
DE1-SoC Training Material
July 3, 2014
178
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑59
运行应用程序
7.4.5 原理
在 DS-5_HW 工程內的 qsys 中可查看 FPGA 端 led_pio 位移地址,如图 7‑60 所示。
图 7‑60 QSYS
ww
Address
ALT_LWFPGA_BASE
ALT_LWFPGA_LED_OFFSET
0xFF200000
0x00010040
API:
alt_write_word(ALT_LWFPGA_BASE + ALT_LWFPGA_LED_OFFSET, 0x3ff); 点亮 LED
DE1-SoC Training Material
July 3, 2014
179
www.terasic.com.cn
7.4.6 调试应用程序
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
1. 断开连接,如图 7‑61 所示。
图 7‑61 断开连接
ww
2. 选择 Run->Debug Configurations,单击 Debug,如图 7‑62 所示。
图 7‑62
Debug
3. 点击“Step Over Source Line”按钮,应用程序将运行至下一行,如图 7‑63 所示。
DE1-SoC Training Material
July 3, 2014
180
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
图 7‑63
Step Over Source Line
ww
4. 运行至 API alt_write_word() ;FPGA_LED 将会被点亮,点击 Register,可查看相
应寄存器,如图 7‑64 所示。
图 7‑64
DE1-SoC Training Material
July 3, 2014
181
点亮 LED
www.terasic.com.cn
友
w.
te 晶
ra 科
si
c. 技
co
m.
cn
5. 寄存器是可编辑的,如图 7‑65,双击相应寄存器 Value,设置新的寄存器值,单击
其它任意区域,可看到 LEDR【9:6】被点亮。
设置寄存器
ww
图 7‑65
DE1-SoC Training Material
July 3, 2014
182
www.terasic.com.cn
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )