芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 7271|回复: 1

【小梅哥SoC】使用DS-5控制FPGA侧逻辑时的相关操作

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 423

    主题

    782

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    15855
    QQ
    发表于 2018-4-9 12:33:09 | 显示全部楼层 |阅读模式


    1、添加SoC硬件相关头文件
    添加路径D:\intelFPGA\17.1\embedded\ip\altera\hps\altera_hps\hwlib\include
    添加路径D:\intelFPGA\17.1\embedded\ip\altera\hps\altera_hps\hwlib\include\soc_cv_av


    2、指定硬件平台
    修改D:\intelFPGA\17.1\embedded\ip\altera\hps\altera_hps\hwlib\include下的hwlib.h文件,在第54行加上下面一句话:
    #define soc_cv_av
    1.png
    该句话的意思是指定我们的开发平台为Cyclone V SoC平台或者Arriv V SoC平台。如果不加这句话,编译时会报以下错误:
    In file included from ../led.c:2:0:
    D:\intelFPGA\17.1\embedded\ip\altera\hps\altera_hps\hwlib\include/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 )


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-6-29 15:57
  • 13

    主题

    246

    帖子

    3625

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    3625
    发表于 2018-4-9 17:09:10 | 显示全部楼层
    沙发~小梅哥的soc出来了~赞一个!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-4-26 03:56 , Processed in 0.114430 second(s), 35 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表