zoukankan      html  css  js  c++  java
  • Xilinux PS与PL交互:裸机程序读写FPGA-REG

    背景

    当时在搞ZYNQ驱动的时候,出于TDD的思想,从最简单的功能开始验证。因此就涉及到了下面的需求。

    PL侧会提供寄存器地址供PS端读写,这部分的寄存器在PL侧作为Avalon的IP,对PS端来说,就是一片物理地址。

    PL

    不做修改,但在其中Launch SDK

    只要确保platform.h的内容是正确的,不这么做也没问题。

    PS

    工具是SDK。

    NEW - Application,建一个HelloWord

    使用Vivado生成的BSP

    只使用以下代码:

    
    #include <stdio.h>
    #include "platform.h"
    #include "xil_printf.h"
    #include "xil_io.h"
    
    int main()
    {
    	int i = 0, loop = 0;
        init_platform();
    
        print("Hello World
    
    ");
        while(1)
        {
        	loop++;
        	i++;
        	Xil_Out32(XPAR_M_AVALON_0_BASEADDR, i);
        	if(Xil_In32(XPAR_M_AVALON_0_BASEADDR) !=loop)
        	{
        		printf("loop %x, read %x
    ",loop, Xil_In32(XPAR_M_AVALON_0_BASEADDR));
        
        	}else{
        		printf("loop %x, OK
    ",loop);
        	}
    
    
        	if(Xil_In32(XPAR_AXI_GPIO_1_BASEADDR))
        	{
        		 Xil_Out32(XPAR_AXI_GPIO_0_BASEADDR , 1) ;
        	}else
        	{
        		Xil_Out32(XPAR_AXI_GPIO_0_BASEADDR , 0) ;
        	}
        
        }
        
        cleanup_platform();
        return 0;
    }
    
    
    

    右键 项目 Run As --RunConfiguration

    • 双击System Debugger
    • 勾选 全部

    运行,测试。查看结果是否与PL端的预期一致(或者可以使用逻辑分析仪抓一下时序图)

    如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。
    若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
    博客地址:https://www.cnblogs.com/schips/
  • 相关阅读:
    Linux 日志管理
    Linux 备份与恢复
    Linux 启动管理
    Linux 用户和用户组管理
    产生指定时间区间序列、按指定单位变化时间 python实现
    python上数据存储 .h5格式或者h5py
    数据预处理之独热编码(One-Hot Encoding)
    残差网络
    GBDT为什么不能并行,XGBoost却可以
    百融金服、趣店、中航信面试总结
  • 原文地址:https://www.cnblogs.com/schips/p/xilinx_sdk_how_bare-machine_program_read-write_pl_side_regs.html
Copyright © 2011-2022 走看看