AXI突发类型设备是否有内置的Linux方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了AXI突发类型设备是否有内置的Linux方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1218字,纯文字阅读大概需要2分钟。
内容图文
![AXI突发类型设备是否有内置的Linux方法?](/upload/InfoBanner/zyjiaocheng/948/8e7ab56177314b7f9356bdde7dbaeb9b.jpg)
我需要与基于AXI突发接口的FPGA器件进行通信.在不涉及DMA的情况下通过Linux访问此类设备的方法有哪些?突发是AXI标准的固有属性,通常在传输大量数据时应自动触发.更大的问题是FPGA设计为仅响应AXI总线上的突发类型请求.因此,当应用程序尝试顺序复制时,这会在Linux上引起严重的问题.我已经尝试过memcpy,但是它不起作用.
解决方法:
我假设您的“ FPGA设备”是一个自定义模块,通过AXI接口与Cortex-A9进行了内存映射.我认为您可以通过2或3种方式来完成这项工作.
1)可缓存的映射.缓存硬件接口一次完成整个缓存行的突发传输.您将需要手动清理(写入之后)和使它们无效(读取之前).
2)不可缓存的映射,并具有ARM汇编语言例程来处理低级传输.我认为“加载和存储多个寄存器”指令可以满足您的需求.
我有一个类似的问题,其中需要通过从Cortex-A9处理器进行8字节传输来访问AXI外设(自定义内存控制器).当然,通常的ARM指令会传输1、2或4个字节(字节,半字,字).那些通过可缓存的映射起作用,但不是通过不可缓存的映射起作用. LDM/STM,每次2个字,同时适用于两个映射.
当然,AHB / AXI传输模式取决于实现.根据您的描述,您需要INCR或WRAP模式而不是SINGLE.但这不是必须的.这提出了使这项工作可行的第三种方式:
3)与您的数字硬件设计师交谈,使他意识到实施对软件的影响.
我认为,您不必进行异常/自定义的低级MMU操作. Linux具有高级方法,您可以在设备驱动程序和/或board.c中放置标准钩子,主要选项是是否取消缓存??(即COHERENT).请参考LDD3.
内容总结
以上是互联网集市为您收集整理的AXI突发类型设备是否有内置的Linux方法?全部内容,希望文章能够帮你解决AXI突发类型设备是否有内置的Linux方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。