• 【友晶科技Terasic】 用sopc-create-header-files工具生成 FPGA 硬件地址信息 用于与linux 程序交互 generate_hps_qsys_header.sh


     

     

    一、有初学者问 generate_hps_qsys_header.sh 是哪里来的?

    二、遇到报错Module 'hps_0' not found in the SOPC Builder system?

    三、附上头文件 hps_0.h 说明

    一、有初学者问 generate_hps_qsys_header.sh 是哪里来的?

    这个是可以自己编写的一个脚本:

     

    第2行——调用工具sopc-create-header-files 

    第3行——当前文件夹下的qsys generate 以后生成的.sopcinfo文件,必须是自己工程的名字,比如我的工程名字是Computer_System.sopcinfo, 但是其他资料里面一般会用这个名字soc_system.sopcinfo,请记得改成自己工程里面的名字。

    第4行——要生成的文件名字,可以自行修改

    第5行——模块名,这个模块名是指在qsys中添加hps模块时的名字,不是指工程中模块的名字

    二、遇到报错Module 'hps_0' not found in the SOPC Builder system?

    swinfo2header: Module 'hps_0' not found in the SOPC Builder system.
    sopc-create-header-files: swinfo2header --swinfo C:intelFPGA18.1embeddedhost_toolscygwin mpsopc-create-header-files.12132.tmp.swinfo --sopc ./Computer_System.sopcinfo --single hps_0.h --module hps_0 failed

    前面提到这个模块名是指在qsys中添加hps模块时的名字,不是指工程中模块的名字,所以这里修改成ARM_A9_HPS 就不会有 问题了。

    三、附上 hps_0.h 说明

    Qsys系统和Linux应用程序之间通过一个名为hps_0.h的文件交互硬件信息,例如总线上添加了哪些外设,每个外设相对于HPS外部总线的偏移地址,每个外设所占的地址空间等,类似于开发NIOS II应用程序时候的system.h文件。

    每当Qsys系统中更新了硬件之后,如果需要直接在Linux中编写应用程序以直接操作寄存器的方式来控制这些外设,则需要重新生成一次该文件,然后将该文件添加到软件工程下作为头文件包含。


    那么如何得到hps_0.h文件呢?需要借助SoCEDS Command Shell,首先打开SoC EDS Command Shell,然后使用cd命令将路径切换到Quartus 工程所在目录,例如我是用的是友晶科技的DE1-SOC开发板,DE1-SoC_v.5.1.3_HWrevF.revG_SystemCDDemonstrationsSOC_FPGAmy_first_hps-fpgafpga-rtl路径,则切路径的命令为:
      
    cd  C:/DE1-SoC_v.5.1.3_HWrevF.revG_SystemCDDemonstrationsSOC_FPGAmy_first_hps-fpgafpga-rtl
      
    然后,输入以下命令就可以得到hps_0.h文件了:
      
    sopc-create-header-files  "./soc_system.sopcinfo" --single hps_0.h --module hps_0
      
    注意,soc_system.sopcinfo是Qsys编译得到的一个硬件信息文件,工程名称不一样,该文件的名字也不一样,需要根据自己的工程名称进行修改。


    另外,输入ls命令,也可以看到工程目录下存在一个名为generate_hps_qsys_header.sh的文件,这是一个脚本文件,包含了生成hps_0.h文件的具体命令。我们可以到工程目录下打开该文件查看具体内容,实际内容就是我们上面输入的那条命令,因此,如果经常需要生成hps_0.h,可以直接执行该脚本即可。如果工程名不一样,修改为自己的sopcinfo文件名即可。
      
    #!/bin/sh
      
    sopc-create-header-files 
      
    "./ soc_system.sopcinfo" 
      
    --single hps_0.h 
      
    --module hps_0
      
    执行该脚本的命令为:
      
    ./  generate_hps_qsys_header.sh
      

  • 相关阅读:
    进程间通信(一):竞争条件与相互排斥方案
    (素材源代码) 猫猫学iOS 之UIDynamic重力、弹性碰撞吸附等现象牛逼Demo
    <html>
    模运算的规则
    ubuntu16.04重置root密码
    rancheros在vm主机部署
    基于centos7.6离线部署开k3s
    centos7.6在线yum安装docker-ce
    centos在线安装ffmpeg
    tar.bz2解压异常
  • 原文地址:https://www.cnblogs.com/DoreenLiu/p/15308574.html
Copyright © 2020-2023  润新知