C/嵌入式Linux中的内存映射设备访问
我有一个运行嵌入式 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当您标记此“嵌入式Linux”时,我将假设您想要做的是写入内存映射设备的内存。
我可以想到几种方法,但我不确定第一种方法在 Linux 中是否可行:
使用系统调用将设备的物理内存空间映射到虚拟内存空间 正在运行的进程的内存空间
写入虚拟文件
/dev/mem
创建块设备驱动 处理设备的内存,然后针对
/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:
Use system calls to map the device's physical memory space into the virtual memory space of a running process
Write to the virtual file
/dev/mem
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).您可以简单地声明所需类型的指针并为其分配内存位置。然后将您的值设置为正常值。
You can simply declare a pointer of the type you require and assign the memory location to it. Then set your values as normal.