• 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/
  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/schips/p/xilinx_sdk_how_bare-machine_program_read-write_pl_side_regs.html
Copyright © 2020-2023  润新知