C/嵌入式Linux中的内存映射设备访问

发布于 2024-10-22 04:30:43 字数 89 浏览 1 评论 0原文

我有一个运行嵌入式 Linux 的 pxa270 处理器套件,它具有内存映射设备。

如何在这些设备的外部存储器中存储值(如果我知道它们的物理地址)?

I have a pxa270 processor kit running embedded Linux that has memory-mapped devices.

How can I store a value in those devices' external memory (if I know their physical address)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晨光如昨 2024-10-29 04:30:43

当您标记此“嵌入式Linux”时,我将假设您想要做的是写入内存映射设备的内存。

我可以想到几种方法,但我不确定第一种方法在 Linux 中是否可行:

  1. 使用系统调用将设备的物理内存空间映射到虚拟内存空间 正在运行的进程的内存空间

  2. 写入虚拟文件 /dev/mem

  3. 创建块设备驱动 处理设备的内存,然后针对 /dev 中的条目执行(文件)操作。

(实际上,#1 和 #2 一起使用可能会起作用,对 /dev/mem 使用 mmap() ,以便您可以使用正常的内存读取和写操作而不是文件操作)。

As you've tagged this "embedded-linux", I'm going to assume that what you want to do is write to the memory of a memory mapped device.

There are a few approaches I can think of, but I'm not sure whether the first is possible in Linux:

  1. Use system calls to map the device's physical memory space into the virtual memory space of a running process

  2. Write to the virtual file /dev/mem

  3. Create a block device driver which handles your device's memory, and then perform (file) operations against its entry in /dev.

(Actually #1 and #2 together might work, using mmap() against /dev/mem so that you can use normal memory read and write ops instead of file operations).

一枫情书 2024-10-29 04:30:43

您可以简单地声明所需类型的指针并为其分配内存位置。然后将您的值设置为正常值。

int *pointer_to_memory = (int *)address_of_external_memory;
*pointer_to_memory = value;

You can simply declare a pointer of the type you require and assign the memory location to it. Then set your values as normal.

int *pointer_to_memory = (int *)address_of_external_memory;
*pointer_to_memory = value;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文