基于soc fpga的linux系统丢数问题?
最近项目中使用的intel soc fpga来进行数据采集,FPGA采集完数据后通过Master_Template ip核来将数据发送到hps中去hps部分通过module将物理地址数据copy到了用户空间,但是在用户空间计算时会发现数据有丢失。
请问有大佬能帮忙指点分析一下吗? (1)先加调试信号(计数器等)确认哪个模块丢数,哪里丢数,(2)检查异步信号有没有处理好。 intel的soc不是很贵嘛? 1. 数据吞吐量是否设计合理,到底丢了多少数?0.1% 1% 还是10% ?
2. 是否采用了中断,如果是LINUX里面处理中断,实时性是得不到保障的,建议用RTOS。
3. 是否采用了DMA,如果有,请考虑边界数据保护和CACHE数据的缓冲问题。 dellric 发表于 2023-3-30 15:28
1. 数据吞吐量是否设计合理,到底丢了多少数?0.1% 1% 还是10% ?
2. 是否采用了中断,如果是LINUX里面处理 ...
(引用自4楼)
1.丢都是一整包丢的,每5分钟有时候会丢个五六包,有时候会七八十包,数据频率是500hz
2.没有使用中断
3.使用了DMA,是直接通过dma发送到arm中的,边界数据保护和CACHE数据没有考虑,我了解一下 wye11083 发表于 2023-3-30 11:53
(1)先加调试信号(计数器等)确认哪个模块丢数,哪里丢数,(2)检查异步信号有没有处理好。 ...
(引用自2楼)
1.加了模块,数据应该是已经通过fpga测发送到了ARM核中,在arm物理地址读到linux用户空间时候丢的
2.dma那个模块带FIFO的,这个应该是没啥问题
zxq6 发表于 2023-3-30 14:28
intel的soc不是很贵嘛?
(引用自3楼)
用的最低端的,cyclone 5 这个是我linux中读的模块 读写没有加锁吗? 本帖最后由 多啦爱梦 于 2023-3-31 16:05 编辑
tangnyzl 发表于 2023-3-31 15:54
读写没有加锁吗?
(引用自9楼)
没,我读直接是一直read,当标志位来的时候就开始处理,这样是不是不对 自己顶一下{:cry:}
页:
[1]