
SoC FPGA学习之Cyclone V
基于小梅哥SOC Cyclone V SoC开发板,记录SOC FPGA学习开发笔记。
ReCclay
优快云认证博客专家、优快云万粉博主、优快云嵌入式领域优质创作者、优快云-2020博客之星年度总评选Top25。自入站以来,凭借坚持与热爱,以博文的方式分享所学,累计博文数量达1千余篇,受益人次达300w+次,涉及领域包括但不限于前/后端软件开发、嵌入式软件开发、Linux驱动开发、自动驾驶算法研究、视觉SLAM算法研究、ROS机器人开发、FPGA开发、IC设计与验证等。欢迎您的关注,我们一起进步!
展开
-
【SoC FPGA学习】十四、基于 Linux 标准文件 I/O 的设备读写
一、什么是文件 I/OLinux 下的输入输出(I/O),设计成“一切皆文件”,把各种各样的输入输出(I/O)当成文件来操作,统一用文件 I/O 函数的形式,提供给应用程序调用。Linux 下的文件概念不仅仅是我们日常所理解的文件例如 txt 文本、 sh 脚本, Linux 系统下一个目录,一个设备也会被当做文件。尤其是字符设备, 对一个设备的操作, 就像是操作实际的文件一样方便。对于文件,可以执行打开(open)、 读取(read)、 写入(write)、 关闭(close) 等操作,而对于一个设备原创 2020-08-31 21:11:03 · 977 阅读 · 0 评论 -
【SoC FPGA学习】十三、编译嵌入式 Linux 系统内核
一、简单介绍SoC FPGA 上的 HPS 能够运行标准的 Linux 系统。而 Linux 系统是一个高度可裁剪的系统,支持用户根据自己实际的硬件平台,选择需要的驱动和功能,并编译得到 Linux 系统镜像。 通过此种方式,可以使得编译得到的 Linux系统镜像文件尺寸非常的小,以便于部署到各种嵌入式硬件板卡上。开发基于 SoC FPGA 的嵌入式系统应用, 如果仅仅使用基于虚拟地址映射的方式开发 Linux 应用程序,无需开发 Linux 内核驱动和修改 Linux 内核配置,实际上是可以不用安装原创 2020-08-30 00:16:11 · 2415 阅读 · 0 评论 -
【SoC FPGA学习】十二、Linux 设备树的原理与编写I2C控制器应用实例
在《【SoC FPGA学习】八、从零开始体验一把为 HPS 添加外设,以 UART 外设为例》章节,学习了如何使用SoC EDS 软件为创建好的包含 HPS 的 Qsys 系统添加 UART 外设并生成相应的设备树(dts) 文件。在《【SoC FPGA学习】十一、基于 Linux 应用程序的 HPS 配置 FPGA》章节,提到了使用开发软件安装包提供的不含 FPGA 逻辑部分的设备树文件来配合启动 Linux 系统。那么什么是设备树,如何得到适配硬件系统的设备树, linux系统又是如何使用设备树信息来加原创 2020-08-29 22:38:15 · 1870 阅读 · 0 评论 -
【SoC FPGA学习】十一、基于 Linux 应用程序的 HPS 在线配置 FPGA
在众多的嵌入式系统应用中, 有一类应用可能需要根据不同的应用场景,动态的更改 FPGA 内部的逻辑设计, 以适配不同的工作环境。 例如在一个数据采集系统中,连接不同型号的模拟数据采集卡, 其所需要的 FPGA 接口逻辑以及内部的数据变换处理逻辑都有可能不同。不同性能的 ADC 芯片其所能工作的采样率不一样, 即所需的接口时钟频率不一样,而在 FPGA 中针对高速时钟信号希望动态修改频率,传统的方案只能使用多路时钟切换电路, 或者使用PLL 动态重配置方案。 而基于 SoC FPGA 的在系统重配置 FPGA原创 2020-08-31 10:10:47 · 2912 阅读 · 0 评论 -
【SoC FPGA学习】十、SoC FPGA 开发板的 FPGA 配置数据下载和固化
生成配置数据二进制文件一、SoC FPGA 启动配置方式介绍Intel Cyclone V SoC FPGA 支持在上电时根据启动设置引脚的电平状态选择从 EPCS 或者 HPS 中启动。一般的硬件板卡在设计时,都使用拨码开关来设置启动设置引脚的电平。具体是通过 EPCS 还是 HPS 启动,由一个 6 位拨码开关通过设置不同的值来决定。 下图所示为 AC501-SoC 开发板上的启动设置拨码开关。Cyclone V SoC FPGA 有 5 位的启动设置引脚用于启动方式的设置,为MSEL0~MSEL原创 2020-08-28 23:01:13 · 3143 阅读 · 0 评论 -
【SoC FPGA学习】九、为新添加的 UART 外设编写应用程序
一、更新hps_0.h文件我们是在 FPGA 侧添加的uart外设,对应的需要更新这些外设的硬件信息。详细介绍可参考《SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动》中的4.2小节,这里直接操作。打开 SoC EDS Command Shell,使用 cd 命令切换到对应的 Quartus 工程目录下(即GHRD工程目录),最后在其中输入./generate_hps_0.sh命令以执行 hps_0.h 文件生成脚本,即可在工程目录下生成或更新名为原创 2020-08-27 17:18:03 · 874 阅读 · 0 评论 -
【SoC FPGA学习】八、从零开始体验一把为 HPS 添加外设,以 UART 外设为例
在本系列教程中 《【SoC FPGA学习】二、SoC FPGA硬件初探,基础扫盲 》一节中的2.5小结简单介绍了一下 SOC FPGA添加timer外设的方法,但是此外设并没有实际的引出脚,并且在那篇文章的介绍中也并没有实际的跑进来timer,这一节我们就拿UART外设为例,从来开始了解添加 SOC FPGA 外设并使用起来的全部流程!本节将通过完全手把手的形式介绍如何修改AC501_SoC_GHRD工程文件,通过在 Platform Designer(原 Qsys)加一个 Altera UART 外设原创 2020-08-27 16:42:06 · 5018 阅读 · 2 评论 -
【SoC FPGA学习】七、基于虚拟地址映射的 I2C 编程应用
在前面两节的内容中, 通过虚拟地址映射的形式,已经完成了基于虚拟地址映射的 PIO、 UART IP 核的使用。这些 IP 核对于使用过基于 NIOS II 的SOPC 技术开发的读者,应该来说已经是十分的熟悉了。而这个 oc_i2c 核,则是一个第三方开源的 IP 核, 不仅提供了完整的 IP 手册, 而且 Linux 系统中也有对该 IP 核的驱动支持。使用起来非常的方便。 而 Intel 在 Platform Designer 中提供的 Avalon I2C (Master) IP 核,由于 Linu原创 2020-08-26 22:21:52 · 1697 阅读 · 1 评论 -
【SoC FPGA学习】六、基于虚拟地址映射的 UART 编程应用
上一节的实验,完成了虚拟地址的映射和基于虚拟地址的按键和 LED指示灯的编程控制。 本节将继续使用该种方法,完成对 AC501_SoC_GHRD 工程中添加的 uart_0 外设进行控制。一、UART (RS-232 Serial port) 核介绍UART (RS-232 Serial port) 核是 Platform Designer 中提供的一个经典的字符型串行通信外设,使用该外设,能够方便的通 FPGA 片外的设备进行通信。该 IP 核实现了 RS-232 协议的时序,并提供可调整的波特率速度原创 2020-08-26 19:55:59 · 1914 阅读 · 0 评论 -
【SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动
参考教程中的以下章节:传统的单片机得到的是外设寄存器的绝对地址。而在HPS中,得到的是经过MPU转化过后的虚拟地址(虚拟地址映射),这样CPU 访问外设寄存器就像直接访问内存总线上的某个地址一样方便了。这样在编写 Linux 应用程序的时候通过简单的操作完成虚拟地址映射,就能够非常方便的去操作这些外设 IP 了,无需再编写 Linux 内核驱动程序, 降低了开发难度。...原创 2020-08-18 15:45:21 · 3716 阅读 · 0 评论 -
【SoC FPGA学习】四、使用gdbserver远程调试Linux应用程序
gdbserver调试实验保证电脑能够网络访问开发板配置IP地址有两种方式:ifconfig eth0 192.168.×××.×××或者编辑/etc/network/interfaces使用passwd命令为root账号设置密码将希望调试的程序拷贝到开发板中为程序添加可执行权限 chmod 777 hello_world在DS-5软件里面设置调试相关配置debugger - gbdserver选择gdb.execonnect:tcp ip address在开班上启动调原创 2020-08-05 21:52:23 · 1151 阅读 · 2 评论 -
【SoC FPGA学习】三、通过Hello World快速上手SOC FPGA的应用程序开发
Hello world创建流程打开SoC EDS Command shell软件输入eclipse&file -> new -> C project创建main.c文件编写c程序编译可得到可执行程序制作开发板Linux系统镜像SD卡将编译得到的可执行程序拷贝到开发板的SD卡用Micro USB数据线连接开发板和电脑将SD卡插入开发板的卡槽中查看电脑上的串口号,打开putty软件,打开该串口,波特率115200给开发板上电输入root进入系统查看分区 fdis原创 2020-08-05 19:27:13 · 3094 阅读 · 2 评论 -
【SoC FPGA学习】二、SoC FPGA硬件初探,基础扫盲
FPGA:现场可编程逻辑门阵列编程语言:HDL(Verilog VHDL)FPGA - 高效并行执行FPGA和ARM可以互补Intel PSG(原ALTER)SOPC:(NIOS II + FPGA)通过Avalon MM 以及 Avalon ST总线进行通信SOPC是使用FPGA做CPUSoC FPGA:同一个芯片集成了FPGA和高性能的硬线逻辑固话的处理器Cyclon...原创 2020-08-05 11:43:57 · 7046 阅读 · 2 评论 -
【SoC FPGA学习】一、AC501-SOC FPGA开发板介绍
少一些功利主义的追求,多一些不为什么的坚持。 本系列学习笔记基于小梅哥SOC Cyclone V SoC开发板。年前朋友便把开发板寄给我玩了,可我手残的扔到了学校吃灰。没错,该系列可能是没有开发板的学习笔记,hhh…一、什么是SoC FPGA 随着信息技术的高速发展,各行各业趋向于通过资源整合,并购的方式来获得更强更稳固的竞争力,芯片架构亦是如此。单“芯”SoC方案(System...原创 2020-03-28 16:01:22 · 3979 阅读 · 2 评论 -
【SoC FPGA学习】番外篇一、SOC FPGA常见问题集锦
小梅哥论坛已有的:【SoC FPGA开发常见问题合集】SoC FPGA开发过程中常见问题问题:SOC-EDS5(Eclipse)出现“You are opening a large file.Scalability mode has been turned on for this editor to help improve performance. Do you want to change scalability settings now?”大意是:打开了一个大文件,编辑器自动启用了可伸缩性原创 2020-08-26 20:08:23 · 1445 阅读 · 0 评论