我正在开发在嵌入式ARM系统上控制mmap设备的软件,但遇到了一些可用的调试和开发工具还不够充分的情况。也就是说,像valgrind和更高端的线程分析器这样的工具是不可用的。
我想要做的是在x86机器上编译我的代码,映射一个使用相同大小的“虚拟”内存段,然后通过网络将这些读/写代理到嵌入式机器上,然后嵌入式机器可以做出相应的响应。
我意识到这可能需要客户端/服务器机制,并且会非常慢,但拥有此选项的好处将使mmap接口本身之外的机制(异步事件处理,线程管理)可用于使用x86开发工具的仪器将是非常有用的。
我在一些用于模拟的ASIC开发中听说过这种技术,但从来没有使用过提供这种功能的任何东西。这里的关键点是,我希望在两个平台上使用相同的代码,而不必重写一堆东西,或者编写一个包含任何硬件处理逻辑的内核模块。我希望通过mmap将所有设备控制逻辑保留在用户空间中。
发布于 2010-09-26 12:27:03
如果您仔细考虑,基本上可以将其归结为实现远程文件系统。
mmap
一个文件/dev/shm
这样的东西作为一个nfs挂载点导出到你的桌面。对于这两种方法(任何其他使用mmap
的方法),您必须非常小心地进行数据同步。但只要你有一个典型的调试设置,基本上只有一个写入器和一个读取器,这是可行的。如果这变得更加复杂,则可以使用远程文件锁定作为nfs扩展。
发布于 2011-06-09 02:17:33
我在过去也想要类似的东西,但从来没有真正地去实现它。但是你可能想看看像memcached这样的东西,我知道它通常用于基于web/db的东西,但也可能出于这个目的而滥用它,特别是因为它是用于调试的。
https://stackoverflow.com/questions/3796414
复制