DE1-SoC软件实验(二)—— 点亮LED灯(头文件hwlib.h及socal/socal.h等的配置,及hps_0.h头文件的生成,解决soc_cv_av 没有声明)

文章目录

  • 第一部分
    • 环境变量配置
    • hps_0.h头文件的生成
    • 补充:解决soc_cv_av 没有声明
  • 第二部分
    • 实验目的
    • 实验原理
    • HPS GPIO的原理
    • 软件API
    • LED和KEY控制
    • 具体代码分析
    • 点亮LED的完整代码
    • 上板测试,成功点亮LED

第一部分

软件实验二是通过采用QSYS创建一个硬核工程,控制HPS端LED和KEY
由于只需要控制HPS端的外设,因此其实现方法和实验一是相同的,编写软件程序即可。

在软件实验二的程序中,通过C程序编写点亮LED灯的时候,包含如下的头文件,这些头文件的环境配置以及hps_0.h头文件的生成都是重点要学习的地方。其中hps_0.h头文件就是通过我们创建的硬核工程通过命令生成的。下面均会一 一讲述。

D:intelFPGA17.1embeddedipalterahpsaltera_hpshwlibinclude

点击Add,输入路径,然后勾选 Add to all configurations 和 Add to all languages 选项, 然后点击 OK 即可,同样的方式可添加socal./hps.h头文件

D:intelFPGA17.1embeddedipalterahpsaltera_hpshwlibincludesoc_cv_av

最终得到如下:

通过ls命令可查看,现在定位成功。

环境配置完成,且有了hps_0.h头文件,那么代码无错误的情况下即可成功编译。

补充:解决soc_cv_av 没有声明

分析完原理后,我们就要采用软件的方式来完成地址映射。可以通过如下软件API访问GPIO控制器的寄存器。(所用到的函数)

头文件的说明:
#include “hwlib.h” :针对与HPS硬件编程有关的一些常量进行定义
#include “socal/socal.h” :该文件中是一些基本的底层操作函数(位,字节,字的读写)
#include “socal/hps.h” : 对HPS中各种外设地址信息进行了定义(虚拟地址映射的时候会用到)

LED和KEY控制

如下为HPS的KEY和LED的引脚分配,分别连接到54和53,由GPIO1控制器控制,另外该控制器还控制29~57

具体代码分析

采用宏定义的方式来控制LED和KEY的方向,以及LED的输出状态

GPIO1_SWPORTA_DDR寄存器组可设置IO引脚方向,alt_setbits_word 设定寄存器的指定位为1,如下语句是配置LED引脚为输出引脚

ALT_GPIO1_SWPORTA_DR寄存器组是写数据到输出引脚,alt_setbits_word 设定寄存器的指定位为1,如下语句是点亮LED

alt_clrbits_word设定寄存器的指定位为0

ALT_GPIO1_EXT_PORTA寄存器组是从输入引脚读数据,从而检查KEY是0还是1,(按下还是释放)

点亮LED的完整代码

如下是教材中提供的KEY控制LED的C程序:(根据错误提示进行一定修改),这部分采用DS-5软件来进行工程创建,并创建c文件。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月16日
下一篇 2022年3月16日

相关推荐