【发布时间】:2014-08-07 15:42:46
【问题描述】:
我正在将代码从 Linux 迁移到 Vxworks。该代码需要打开物理/主内存,然后使用 mmap 将物理内存映射到虚拟内存。
在 Linux 中,主存由以下方式访问
fd = open("/dev/mem", O_RDONLY);
能否请您告诉我如何在 Vxworks 中实现这一点。
提前致谢
【问题讨论】:
我正在将代码从 Linux 迁移到 Vxworks。该代码需要打开物理/主内存,然后使用 mmap 将物理内存映射到虚拟内存。
在 Linux 中,主存由以下方式访问
fd = open("/dev/mem", O_RDONLY);
能否请您告诉我如何在 Vxworks 中实现这一点。
提前致谢
【问题讨论】:
这取决于您迁移的代码将运行的编程环境。
对于内核模式,这要容易得多,因为通常您可以在只读模式下访问系统内存中的任何地方,只要它的内存区域映射到页表中即可。您的代码中不需要特殊的 API 即可访问内存。
对于用户模式(也称为实时进程,仅从 VxWorks 6.0 开始可用),事情有点复杂。您需要编写一对代码块,一个在内核模式下运行,另一个在用户模式下运行。代码示例请参考VxWorks源码中的注释块@vxworks-6.9/target/usr/src/os/mm/devMemLib.c(以VxWorks 6.9为例)。
【讨论】: