linux访问vdma的数据,Xilinx VDMA 24位流输出与32位AXI总线的内存流数据关系
测试方法采用了VDMA仅有MM2S通道, 内存中的图像帧是用MicroBlaze核写入的一个colorbar.
VDMA的mhs部分如下, 因为我的输出用了Digilent的HDMI核,而这个HDMI核是32位的,我自己写了个axis_24_32的位宽转换的ip,这个暂且按下不表:
BEGIN axi_vdma
PARAMETER INSTANCE = axi_vdma_0
PARAMETER HW_VER = 5.04.a
PARAMETER C_USE_FSYNC = 0
PARAMETER C_M_AXIS_MM2S_TDATA_WIDTH = 24
PARAMETER C_MM2S_LINEBUFFER_DEPTH = 4096
PARAMETER C_MM2S_LINEBUFFER_THRESH = 2048
PARAMETER C_INCLUDE_S2MM = 0
PARAMETER C_BASEADDR = 0x7e220000
PARAMETER C_HIGHADDR = 0x7e22ffff
BUS_INTERFACE S_AXI_LITE = axi4lite_0
BUS_INTERFACE M_AXI_MM2S = axi4_0
BUS_INTERFACE M_AXIS_MM2S = axi_vdma_0_M_AXIS_MM2S
PORT s_axi_lite_aclk = clk_100_0000MHzPLL0
PORT m_axi_mm2s_aclk = clk_100_0000MHzPLL0
PORT m_axis_mm2s_aclk = axi_hdmi_0_S_AXIS_MM2S_ACLK
PORT mm2s_fsync_out = axi_vdma_0_mm2s_fsync_out
PORT mm2s_buffer_almost_empty = axi_vdma_0_mm2s_buffer_almost_empty
PORT mm2s_buffer_empty = axi_vdma_0_mm2s_buffer_empty_to_chipscope_ila_0
END
结论:
我也不知道手册上究竟有没有讲这个AXI宽度是32bit,而AXIS宽度是24bit的问题,我反正似乎是没看到.
不过最终实验得到的结论是RAM被充分利用了,也就是比如两个像素A(aabbcc)和像素B(112233)存在RAM中,
最终存储的是(aabbcc112233)而不是(00aabbcc00112233)或(aabbcc0011223300)等之类数据.
实验数据:
1.VDMA设置
2.CPU写RAM
for(offset = VERT * HORI * 1/2; offset < VERT * HORI ; )
{
Xil_Out32LE(Addr+4*offset, 0xefcdab89);
offset++;
}
用的是Xil_Out32LE写RAM,那么实际RAM中存储的顺序是89abcdef 89abcdef ..............
3.Chipscope对AXIS mm2s的监测
(其实我对S_AXI也监测了,不过忘记截图了,也没仔细分析.印象是内存对齐读取,也就是一次读取32bit的有效数据然后分别放到AXIS流的不同字节里)
工程文件与源代码下载
linux访问vdma的数据,Xilinx VDMA 24位流输出与32位AXI总线的内存流数据关系相关推荐
- Linux下的32位C程序,linux系统c语言生成.so文件,生成64位可执行文件,在64位系统中运行32位的可执行文件...
1.linux 系统c语言生成.o文件,---->gcc -m64 -c -fPIC test.c -o test.o 2.linux 系统c语言生成.so文件,----->gcc -sh ...
- 64位FME Server 与32位FME Desktop协同处理MDB格式数据
作者:ZJ 在FME所支持的数据格式中,部分数据格式受限于软件位数,例如常见的GIS数据格式包含SHP(Esri Shapefile).GDB(File Geodatabase).MDB(Person ...
- 32位安装linux系统下载,CentOS 5.0 i386官方正式版系统(32位)
CentOS 5.0 是一个企业级的 Linux 发行版本,它是由上游操作系统提供者(UOP)1提供的可自由使用的源代码重新编译而成.CentOS 完全遵守上游提供者的再发行政策,并且以百分之百的软件 ...
- matlab修改图片位深度_BMP位图32位转为24位深度
帮朋友做一个视频采集和基本处理功能,要求的是.bmp格式 几天下来,通过directshow进行视频采集,并抓去图片保存,按照要求进行业务处理,以前的处理程序是基于RGB24 而显示器是32位真彩色, ...
- linux上运行gfortran,linux – gfortran:在64位系统中编译32位可执行文件
我在AMD Athlon(tm)64 X2双核处理器5200×2上运行Ubuntu 12.10(64位), Linux内核3.5.0-51通用.我有GNU Fortran(Ubuntu / Linar ...
- linux内核手帐_linux N卡 steam启动失败解决方案 (32位 库缺失)
摘要 关于解决 Steam.sh 报错 VERSION_ID: 未绑定的变量 下方 libGL error: unable ****** rm对应steam官方库后的必装依赖 记录一下之前遇到的li ...
- linux64位系统需要安装32位mysql_在Ubuntu16.04 Linux 64位环境下安装二进制版本MySQL 8.0.13...
a.MySQL依赖于libaio库.如果此库不在本地安装,则数据目录初始化和随后的服务器启动步骤将失败.如果需要,请使用适当的包管理器安装它.例如,基于云计算的系统: hell> apt-cac ...
- linux 64位兼容32位,linux的64位操作系统对32位程序的兼容-全面分析
1.结构体ioctl_trans: struct ioctl_trans { unsigned long cmd; ioctl_trans_handler_t handler; struct ioct ...
- Linux内核由32位升到64,将Ubuntu从32位版本升级到64位版本
问题描述 有没有办法将我的32位版本的Ubuntu升级到64位版本?我使用Ubuntu 9.10. 如果没有简单的方法,如果我仅将home和/etc目录复制到新的安装中,该怎么办? 最佳答案 不幸的是 ...
- 【32位系统与64位系统可访问内存的大小】
64位系统究竟能支持多大内存? 1.理论计算 对较大存储数据的形象解释: 一卷磁带:200MB 一张CD光盘:500MB 一部广播级质量电影:1GB 一卷大型数字磁带:100GB 五万棵树制成的纸:1 ...
最新文章
- CCNet 的 Build 流程
- Canonical 开源 MicroK8 | 云原生生态周报 Vol. 25
- 技术系统进化法则是_技术系统进化法则
- Jerry入职SAP成都研究院14周年纪念日
- Codeforces 999F Cards and Joy 【dp】【性质】
- 微服务架构的核心技术问题
- C#建立手机号段全库
- CSR8670项目实战:BlueSiri轻智能蓝牙音箱
- UART 协议以及概念
- java有有哪些锁_java编程中锁状态的分类都有哪些
- 8086中寻址方式详解
- matlab病毒模拟传播
- #原创分享# DDD领域建模---老调新弹之【实体】
- 底层小程序员 练手做一个网站不小心赚了几十亿
- 概率论基础知识(二) 随机变量及其分布
- PDF图片文字如何编辑?ORC图文识别一招搞定
- 血战Maven,各种问题,Eclipse控制台乱码,Maven打包时Javadoc失败-UTF-8-BOM编码
- 施一公:清华70%的高考状元都去哪了?
- android root权限破解分析
- 精益生产制造的三要素,了解一下