首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当访问Xilinx ARM SoC上的io内存时,Linux会冻结。

当访问Xilinx ARM SoC上的io内存时,Linux会冻结。
EN

Unix & Linux用户
提问于 2018-01-10 08:25:32
回答 1查看 2K关注 0票数 1

我正在尝试读取Xilinx Zynq板 (zc702)上的FPGA内存,作为将RTEMS驱动程序移植到Linux的一部分。我使用的devmem2mmap_测试程序,我交叉编译为董事会使用Yocto交叉编译器。该板有1GB的正常内存。这意味着0x0和0x40000000之间的任何读取都会返回有效内存。然而,问题是,当从0x7AA00000读取时,内核会立即崩溃,甚至不会将内核恐慌消息打印到终端(带有minicom和ssh的串口)。我甚至编写了一些小的示例内核模块,以便从这个地址读取并使用kprint,但是它会导致同样的崩溃。由于驱动程序与RTEMS一起工作,物理内存地址已被证实是正确的。

为了能够在没有Linux崩溃的情况下从FPGA内存/寄存器中读取数据,需要采取哪些步骤?

EN

回答 1

Unix & Linux用户

发布于 2018-01-12 07:30:31

我终于明白了为什么它总是崩溃。这是两个因素的结合(就像棘手的问题一样)。

  1. 通过/dev/mem访问内存时,必须与页面对齐。
  2. 当访问FPGA内存时,必须先加载位流。

最初,我加载了FPGA比特流(使用cat stream.bit > /dev/xdevcfg),然后尝试使用直接去引用物理地址(没有映射)访问寄存器。稍后,我查看了使用/dev/mem读取devmem2,但没有加载比特流。两者都导致了类似的错误,程序崩溃和内核冻结,并且花了一段时间才发现有两个错误。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/416003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档