memory-mapped-file

为什么 Linux 在尝试访问连接到轻量级 hps-to-fpga 桥(或任何桥)的外设时会冻结?
memory-mapped-file

为什么 Linux 在尝试访问连接到轻量级 hps-to-fpga 桥(或任何桥)的外设时会冻结?

我在 Altera DE1-SoC 开发板上工作了 8 个月。我正在开发的系统包括 Cyclone V FPGA 芯片,特别是 5CSEMA5F31C6N。它在芯片上运行嵌入式 Linux 操作系统。 一切都很好,开发正在进行中。两周前,公司的硬件工程师组装了一块新的定制板。设计和组件与开发板基本相似。所有与 HPS 相关的引脚都以相同的方式接线,主要区别在于默认控制台端口是 UART1。该问题现已解决,我现在可以通过 UART1 接收 U-boot 和内核消息。 但系统并没有完全启动。我已经指出了这一点有多种原因。首先,我有一个 init.d 脚本,用于导...

Admin

两个进程是否可以使用相同的共享内存,而无需借助文件来获取它,无论是内存映射文件还是 /dev/shm 文件?
memory-mapped-file

两个进程是否可以使用相同的共享内存,而无需借助文件来获取它,无论是内存映射文件还是 /dev/shm 文件?

我很好奇,因为今天我知道如何为两个不同的进程提供相同的共享内存的唯一方法是通过内存映射文件,换句话说,两个进程打开相同的内存映射文件并写入/读取它。 由于操作系统需要在磁盘和内存之间交换,因此这会带来惩罚/缺点。 如果这是一个愚蠢的问题,请提前道歉,但是进程之间是否存在纯粹的共享内存,而不是由文件支持。如果是,如果不使用内存映射文件或 /dev/shm 文件,进程将如何获取它? ...

Admin

尝试理解 Linux 环境中 C++ 的内存映射
memory-mapped-file

尝试理解 Linux 环境中 C++ 的内存映射

我的任务是探索内存映射,看看我们是否可以利用它。 我正在尝试理解这个概念以及如何编写代码。我一直在尝试以下视频和博客文章中的代码,但我也会在此处重复我的步骤,以便轻松重新创建。我正在 Linux 系统上使用 C++(gcc 版本 11.2.0) https://www.youtube.com/watch?v=m7E9piHcfr4 https://bertvandenbroucke.netlify.app/2019/12/08/memory-mapping-files/ 这是我的代码 write_mmap.cpp #include <fcntl.h&g...

Admin

使用内存映射文件时数据传输的路径是什么?
memory-mapped-file

使用内存映射文件时数据传输的路径是什么?

在文件上使用 read()/write() 和使用 mmap() 的数据传输路径有什么区别吗? "kernel" 是什么意思https://stackoverflow.com/a/41419353? mmap 不需要来自的文件数据的副本核心到用户空间。 read() 将数据从文件复制到内核空间的缓冲区,然后从内核缓冲区复制到用户空间的缓冲区,这是否正确? 当在文件上调用 mmap() 时,它是否将虚拟内存地址直接映射到文件,而中间没有任何内容(例如内核空间中的缓冲区)? 访问mmap()返回的虚拟内存地址时,数据传输的路径是什么?幕后中间是否涉及内核空间...

Admin

用于处理大型代码段的内存映射
memory-mapped-file

用于处理大型代码段的内存映射

我知道pmap一个进程显示了内存映射是如何完成的。例如,pmap 输出的第一行显示了到进程可执行文件的文本段的内存映射。假设我有一个非常大的可执行文件并且我的代码大小很大。对于小文本段(小可执行文件),pmamp 显示400000 - 401000 - 4096 B - 4 KiB映射的文本段。 (1) 如果文本段真的很大,它如何映射? (2) 它是否根据代码执行进度所需的页面动态映射? ...

Admin

允许 /dev/mem 的部分内存映射
memory-mapped-file

允许 /dev/mem 的部分内存映射

我有一个 SoC-FPGA(DE0-nano-soc),其中在单个芯片上包含一个 ARM-Cortex-A9 cpu 和一个 Cyclone V FPGA。 CPU 可以访问 1GB DDR3 内存,但 FPGA 也可以访问该内存,以便它们可以共享数据。 现在我已经使用引导参数将 Linux 配置为仅看到 900M 的总 RAM mem=900M。这样我就有了一些 Linux 不接触的 RAM,我可以用它来与 FPGA 通信。我想使用 写入 RAM 的那部分/dev/mem。当我内存映射适当的地址时,我收到权限被拒绝错误,我猜测这是因为我的内核已CONFI...

Admin

内存映射 I/O 是否仅由操作系统内部使用,不向 Linux 上的程序员公开和使用?
memory-mapped-file

内存映射 I/O 是否仅由操作系统内部使用,不向 Linux 上的程序员公开和使用?

在操作系统概念中,内存映射文件和内存映射 I/O 是两个不同的东西。请参阅下文有关内存映射 I/O 的内容。 要使用内存映射文件,我们有mmap(). 要使用内存映射I/O,我们可以使用哪些函数?内存映射 I/O 是否仅由操作系统内部使用,不向 Linux 上的程序员公开和使用? 谢谢。 对于 I/O,如第 1.2.1 节所述,每个 I/O 控制器都包含用于保存命令和正在传输的数据的寄存器。通常,特殊的 I/O 指令允许在这些寄存器和系统内存之间进行数据传输。为了更方便地访问 I/O 设备,许多计算机体系结构提供了内存映射 I/O。在这种情况下...

Admin

共享内存映射文件和共享内存区域是基于彼此实现的吗?
memory-mapped-file

共享内存映射文件和共享内存区域是基于彼此实现的吗?

共享内存映射文件和共享内存区域是基于彼此实现的吗?下面两句话似乎是这么说的,对我来说似乎是一个先有鸡还是先有蛋的问题。 下面操作系统概念介绍共享内存映射文件。多个进程是否通过共享保存文件内容的同一物理内存区域来共享同一个文件? 可以允许多个进程同时映射同一个文件,以允许共享数据。任何进程的写入都会修改虚拟内存中的数据,并且可以被映射文件同一部分的所有其他进程看到。鉴于我们之前对虚拟内存的讨论,应该清楚如何实现内存映射部分的共享: 每个共享进程的虚拟内存映射都指向物理内存的同一页,即保存磁盘块副本的页。这种内存共享如图 9.22 所示。 ...

Admin