linux访问vdma的数据,zynq-7000学习笔记(十一)——Linux下VDMA的使用

PC平台:WINDOWS 10 64位 + 虚拟机Ubuntu 14.04

Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4

开发板:Zed Board

USB摄像头:罗技 C270(720P)

Linux源码:2016_R1

Linaro文件系统:linaro-vivid-developer-20150618-705.tar.gz

在zynq平台做视频应用,VDMA是一定会用到的,在linux下如何使用呢?我在网上找到了一个例子,稍微做了一下修改,代码没怎么整理,将就着先用

#include

#include

#include

#include

#include

/* Register offsets */

#define OFFSET_PARK_PTR_REG 0x28

#define OFFSET_VERSION 0x2c

#define OFFSET_VDMA_MM2S_CONTROL_REGISTER 0x00

#define OFFSET_VDMA_MM2S_STATUS_REGISTER 0x04

#define OFFSET_VDMA_MM2S_VSIZE 0x50

#define OFFSET_VDMA_MM2S_HSIZE 0x54

#define OFFSET_VDMA_MM2S_FRMDLY_STRIDE 0x58

#define OFFSET_VDMA_MM2S_FRAMEBUFFER1 0x5c

#define OFFSET_VDMA_MM2S_FRAMEBUFFER2 0x60

#define OFFSET_VDMA_MM2S_FRAMEBUFFER3 0x64

#define OFFSET_VDMA_MM2S_FRAMEBUFFER4 0x68

#define OFFSET_VDMA_S2MM_CONTROL_REGISTER 0x30

#define OFFSET_VDMA_S2MM_STATUS_REGISTER 0x34

#define OFFSET_VDMA_S2MM_IRQ_MASK 0x3c

#define OFFSET_VDMA_S2MM_REG_INDEX 0x44

#define OFFSET_VDMA_S2MM_VSIZE 0xa0

#define OFFSET_VDMA_S2MM_HSIZE 0xa4

#define OFFSET_VDMA_S2MM_FRMDLY_STRIDE 0xa8

#define OFFSET_VDMA_S2MM_FRAMEBUFFER1 0xac

#define OFFSET_VDMA_S2MM_FRAMEBUFFER2 0xb0

#define OFFSET_VDMA_S2MM_FRAMEBUFFER3 0xb4

#define OFFSET_VDMA_S2MM_FRAMEBUFFER4 0xb8

/* S2MM and MM2S control register flags */

#define VDMA_CONTROL_REGISTER_START 0x00000001

#define VDMA_CONTROL_REGISTER_CIRCULAR_PARK 0x00000002

#define VDMA_CONTROL_REGISTER_RESET 0x00000004

#define VDMA_CONTROL_REGISTER_GENLOCK_ENABLE 0x00000008

#define VDMA_CONTROL_REGISTER_FrameCntEn 0x00000010

#define VDMA_CONTROL_REGISTER_INTERNAL_GENLOCK 0x00000080

#define VDMA_CONTROL_REGISTER_WrPntr 0x00000f00

#define VDMA_CONTROL_REGISTER_FrmCtn_IrqEn 0x00001000

#define VDMA_CONTROL_REGISTER_DlyCnt_IrqEn 0x00002000

#define VDMA_CONTROL_REGISTER_ERR_IrqEn 0x00004000

#define VDMA_CONTROL_REGISTER_Repeat_En 0x00008000

#define VDMA_CONTROL_REGISTER_InterruptFrameCount 0x00ff0000

#define VDMA_CONTROL_REGISTER_IRQDelayCount 0xff000000

/* S2MM status register */

#define VDMA_STATUS_REGISTER_HALTED 0x00000001 // Read-only

#define VDMA_STATUS_REGISTER_VDMAInternalError 0x00000010 // Read or write-clear

#define VDMA_STATUS_REGISTER_VDMASlaveError 0x00000020 // Read-only

#define VDMA_STATUS_REGISTER_VDMADecodeError 0x00000040 // Read-only

#define VDMA_STATUS_REGISTER_StartOfFrameEarlyError 0x00000080 // Read-only

#define VDMA_STATUS_REGISTER_EndOfLineEarl

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值