本文由FPGA爱好者小梅哥编写,未经作者许可,本文仅允许网络论坛复制转载,且转载时请标明原作者。
Qsys系统和Linux应用程序之间通过一个名为hps_0.h的文件交互硬件信息,例如总线上添加了哪些外设,每个外设相对于HPS外部总线的偏移地址,每个外设所占的地址空间等,类似于开发NIOS II应用程序时候的system.h文件。每当Qsys系统中更新了硬件之后,如果需要直接在Linux中编写应用程序以直接操作寄存器的方式来控制这些外设,则需要重新生成一次该文件,然后将该文件添加到软件工程下作为头文件包含。
那么如何得到hps_0.h文件呢?需要借助SoCEDS Command Shell,首先打开SoC EDS Command Shell,然后使用cd命令将路径切换到Quartus 工程所在目录,例如D:\fpga\work_debug\ModBus_Processor\SoC_TXGLJ,则切路径的命令为:
cd d://fpga/work_debug/ModBus_Processor/SoC_TXGLJ
然后,输入以下命令就可以得到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
|