我正在开发用于在嵌入式 ARM 系统上控制 mmap 设备的软件,但遇到了一些可用的调试和开发工具不够用的情况。即,诸如 valgrind 和更高端线程分析器之类的检测工具不可用。
我想做的是在 x86 机器上编译我的代码,使用相同大小映射一个“虚拟”内存段,然后通过网络将这些读/写代理到嵌入式机器,然后嵌入式机器可以做出相应的响应.
我意识到这可能需要一个客户端/服务器机制,而且速度会非常慢,但是拥有这个选项的好处将使 mmap 接口(interface)本身之外的机制(异步事件处理、线程管理)可用于使用 x86 开发的仪器工具会非常有用。
我在一些用于模拟的 ASIC 开发中听说过这种技术,但从未使用过提供这种功能的任何东西。这里的关键点是我想在两个平台上使用相同的代码,而不必重写一堆东西,或者必须编写一个包含任何硬件处理逻辑的内核模块。我想通过mmap把所有的设备控制逻辑都保留在userland
最佳答案
如果您考虑清楚,基本上可以归结为实现远程文件系统。
- “最简单的”可能是如果你
嵌入式设备可以实现
NFS 客户端的简单版本
一边,
mmap
一个文件在你的 台式机 - 反过来也应该是可能的,
即拥有 nfs 服务器模块
在您的嵌入式系统上运行并
将类似
/dev/shm
的内容作为 nfs 挂载点导出到您的桌面。
对于这两种方法(任何其他使用 mmap
的方法),您都必须非常小心数据同步。但是只要你有一个典型的调试设置,基本上只有一个编写器和一个读取器,这是可行的。如果这变得更复杂,可以使用作为 nfs 扩展的远程文件锁定。
关于c - 我如何通过网络代理 mmap 读取和写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796414/