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/
  • 相关阅读:
    带返回值的多线程
    ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案
    Java后端WebSocket的Tomcat实现
    Jackson将对象转换为json字符串时,设置默认的时间格式
    java构造器和构建器
    java静态工厂
    离散-理解只有 才
    数据结构之链式表
    数据结构之顺序线性表
    期末作业验收
  • 原文地址:https://www.cnblogs.com/schips/p/xilinx_sdk_how_bare-machine_program_read-write_pl_side_regs.html
Copyright © 2011-2022 走看看