完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本文由FPGA爱好者小梅哥编写,未经作者许可,本文仅允许网络论坛复制转载,且转载时请标明原作者。
1、添加SoC硬件相关头文件 添加路径D:intelFPGA17.1embeddedipalterahpsaltera_hpshwlibinclude 添加路径D:intelFPGA17.1embeddedipalterahpsaltera_hpshwlibincludesoc_cv_av 2、指定硬件平台 修改D:intelFPGA17.1embeddedipalterahpsaltera_hpshwlibinclude下的hwlib.h文件,在第54行加上下面一句话: #define soc_cv_av 该句话的意思是指定我们的开发平台为Cyclone V SoC平台或者Arriv V SoC平台。如果不加这句话,编译时会报以下错误: In file included from ../led.c:2:0: D:intelFPGA17.1embeddedipalterahpsaltera_hpshwlibinclude/hwlib.h:56:2: error: #error You must define soc_cv_av or soc_a10 before compiling with HwLibs #error You must define soc_cv_av or soc_a10 before compiling with HwLibs ^ make: *** [subdir.mk:23: led.o] Error 1 3、映射自定义IP到用户空间 将FPGA侧逻辑的寄存器挂载到Linux用户空间,以LED为例 [code=Cpp] int ret; void *virtual_base; int fd; int i; //将LED的寄存器地址段映射到Linux系统的用户空间,以便我们能够在Linux系统能够直接操作他们 // 打开MMU if( ( fd = open( "/dev/mem", ( O_RDWR | O_SYNC ) ) ) == -1 ) { printf( "ERROR: could not open "/dev/mem"...n" ); return( 1 ); } //映射得到外部总线在Linux用户空间 virtual_base = mmap( NULL, HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ), MAP_SHARED, fd, HW_REGS_BASE ); if( virtual_base == MAP_FAILED ) { printf( "ERROR: mmap() failed...n" ); close( fd ); return(1); } //得到LED的寄存器基地址虚拟地址 h2p_lw_led_addr=virtual_base + ( ( unsigned long )( ALT_LWFPGASLVS_OFST + LED_PIO_BASE ) & ( unsigned long)( HW_REGS_MASK ) ); [/code] 4、程序中用到的几个宏定义 暂时不清楚什么意思,应该是HPS硬件部分在MMU上的映射信息。 #define HW_REGS_BASE ( ALT_STM_OFST ) #define HW_REGS_SPAN ( 0x04000000 ) #define HW_REGS_MASK ( HW_REGS_SPAN - 1 ) |
|
相关推荐
|
|
1367 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1046 浏览 0 评论
2442 浏览 1 评论
2146 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2408 浏览 0 评论
1895 浏览 50 评论
6018 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 22:02 , Processed in 0.636768 second(s), Total 66, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号