我在带有ARM Mbed OS的K64F板上运行了一个应用程序。我利用RTOS功能,并运行一些不同的线程来执行各种操作。线程之间的通信是使用在代码的第一部分定义为全局变量的队列完成的(如RTOS示例中所定义)。
MemoryPool<cMsg, 16> NMPool;
Queue<cMsg, 16> NMQueue;
这样每个线程都可以访问队列。
我想将这些线程转换为uvisor隔离框。我已经成功地以这种方式运行独立线程,但我发现无法在不同的盒子之间共享公共变量。我没有找到关于如何将变量提供给使用uvisor编译为单个项目的box文件中定义的代码的参考。任何想法,例子或帮助?
答案 0 :(得分:2)
你不能在盒子之间共享内存,uVisor盒子在隔离的内存空间中运行(这是使用uVisor的全部要点)。
盒子之间通信的唯一方法是通过RPC通道。请参阅“公开安全入口点到安全框”部分下的this article。
我认为你只能通过RPC通道传递基元和结构(因为它们是固定大小),但这值得进行实验。