您好!
目前、我正在探索内核之间的共享存储器。
(我应该提到、使用 OpenVx 和视觉应用中的内容对我来说不是一个选择。)
因此、在 C71上有一个类似如下的代码:
易失性 uint32_t* testPtr =(uint32_t*) 0xBC000000; uint32_t 计数器= 0U; while (true) { * testPtr = counter++;
睡眠;// 1秒 }
现在、在 A72 Linux 上、我可以使用 busybox 中的"devmim"或微笑实现等工具、并读取该地址处的值。
当我这样做时:
true 时;执行 sudo ./devmem 0xBC000000;完成
它工作正常、计数器每秒递增一次。
但是,当我实施使用/dev/mem 和 mmap()(如 devmem dose)并在循环中读取值的程序时,它不起作用。
数字每隔几秒突然跳过一次。 因此、它仅在关闭和重新创建之间的映射时起作用。
我认为这是 Linux 中的缓存问题。 如何在 Linux 用户空间中使用共享内存?
如何防止缓存或同步内存?
此致
1月