zynqmp Linux + 裸机 (A53-0 Linux,A53-1 2 3 裸机大数据量实时处理,R5-0 协议处理,R5-1 屏幕显示逻辑等)填坑笔记

文章探讨了FPGA和ARM在内存优化中的问题,包括预留内存使用MMap和缺页中断导致的性能瓶颈,以及自己编写DMA驱动的风险。对比了在Linux系统下的CPU调度和算法优化效果与裸机的差异,强调了实时处理在不同架构上的挑战和解决方案。

fpga 和arm 采用预留内存的方式,采用neon 协处理器只能做到 250M/S 的速度,预留内存采用mmap的方式,当读取内存页的时候采用缺页中断的方式,导致速度拖沓而且预留内存没有进行Linux系统的内存管理(在系统内 memcpy的速度 可以到 5G/S),自己写DMA驱动,虽然可以用Linux 本身的框架,但是结果不确定,
1.首先CPU 涉及Linux的调度损失,可能数据处理的实时性受到影响,即使用cpu的亲和性属性,但是结果还是存在风险
2.DMA 传递到 Linux管理的内存 类似内存拷贝,FPGA的乒乓结构+ DMA,在DDR 会存在叁份拷贝,况且3个通道,会导致内存的极大浪费
3.算法优化,Linux调用库函数,存在层层调用的问题,即使编译器极大优化,我认为跟与在裸机层面的优化 存在差距

现状:
1.实时处理在裸机上运行,算法C 实现,编译器开 -O2 优化,查看汇编代码,效率很高,经测试效果达到预期
2.3个通道分别用3个cpu 处理,读取,处理,结果输出,内存访问完全分开,互不影响
3.一个A53 跑Linux 系统,方便使用第三方库,和其他几个核的交互采用共享内存的方式
4.2个R5 核虽然是实时核,但是主频只有 500M ,且只是 32bit cpu ,经测试算法处理比较拉跨,只能做协议处理,屏幕驱动显示,同步相关的工作

裸机步骤:
1.分别开发裸机程序,并测试通过 (注意各个cpu内存的位置配置)按需求来且不需要太大

2.在裸机端先把除运行Linux系统的CPU的其他核都运行起来,测试是否正常,这可以参考官方AMP 手册,我是参考黑金Vitis 应用教程 双核AMP的使用,重点如下:

Note:前面我们已经建立了一个cpu0 的工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值