如何在网络上代理mmap读写?

时间:2010-09-26 02:47:23

标签: c linux embedded kernel mmap

我正在研究在嵌入式ARM系统上控制mmap'd设备的软件,但是在一些情况下,可用的调试和开发工具还不够。即valgrind和高端线程分析器等仪器工具不可用。

我想要做的是在x86机器上编译我的代码,使用相同的大小mmap一个“虚拟”内存段,然后将这些读/写代码通过网络代理到嵌入式机器,然后可以相应地做出响应

我意识到这可能需要客户端/服务器机制并且速度极慢但是使用此选项的好处将使mmap接口本身之外的机制(异步事件处理,线程管理)可用于使用x86开发的仪器工具非常有用。

我在一些用于仿真的ASIC开发中听说过这种技术但从未使用任何提供此功能的东西。这里的关键点是我想在两个平台上使用相同的代码,而不必重写一堆东西,或者必须编写一个内核模块,其中包含任何硬件处理逻辑。我想通过mmap将所有设备控制逻辑保留在userland中

2 个答案:

答案 0 :(得分:1)

如果您认为这一点,基本上归结为实现远程文件系统。

  • “最简单”可能是你的 嵌入式设备可以实现一个 简单版本的NFS客户端 一边,mmap你的文件 台式机
  • 逆也应该是可能的, 即拥有nfs服务器模块 在你的嵌入式系统上运行并运行 将/dev/shm之类的内容导出为桌面的nfs挂载点。

对于这两种方法(使用mmap的任何其他方法),您必须非常小心数据同步。但只要你有一个基本上只有一个编写器和一个阅读器的典型调试设置,这可能是可行的。如果这变得更复杂,则可以使用远程文件锁定作为nfs扩展。

答案 1 :(得分:0)

我过去曾想要类似的东西,但从来没有真正实现它。但是你可能想给memcached这样的东西看一下,我知道它通常用于基于web / db的东西,但是为了这个目的可能会滥用它,特别是因为它是用于调试。