Arm 在Mbed(核仁L476RG)上运行libnaude-ISR上下文中不允许使用互斥

Arm 在Mbed(核仁L476RG)上运行libnaude-ISR上下文中不允许使用互斥,arm,mbed,libsodium,isr,nucleo,Arm,Mbed,Libsodium,Isr,Nucleo,我正在尝试运行一些在Mbed板上使用libnail的代码。 当只包含库并运行Nasdiu init()时,在mbed sterm上抛出以下错误: ++ MbedOS Error Info ++ Error Status: 0x80010133 Code: 307 Module: 1 Error Message: Mutex: 0x200027EC, Not allowed in ISR context Location: 0x80026B5 Error Value: 0x200027EC Cur

我正在尝试运行一些在Mbed板上使用libnail的代码。 当只包含库并运行
Nasdiu init()
时,在
mbed sterm
上抛出以下错误:

++ MbedOS Error Info ++
Error Status: 0x80010133 Code: 307 Module: 1
Error Message: Mutex: 0x200027EC, Not allowed in ISR context
Location: 0x80026B5
Error Value: 0x200027EC
Current Thread: main  Id: 0x20000EF0 Entry: 0x800257F StackSize: 0x1000 StackMem: 0x200017B8 SP: 0x100004C8 
For more info, visit: https://mbed.com/s/error?error=0x80010133&tgt=NUCLEO_L476RG
-- MbedOS Error Info --
LibNaude似乎试图使用某种不允许的互斥。不是LibNade或Mbed操作系统的专家,是什么导致了这个问题? 国家

使用用于ARM嵌入式处理器的GNU工具交叉编译到ARM

这是可能的。然而,他们也注意到

如果存在侧通道问题,则不建议在手臂皮质M0、M3和M4 CPU上使用LibNasdium


这有关系吗?有没有一种方法可以编译适用于核子板的libnaude?

首先,检查您是否正在运行最新版本的编译器工具链。看起来这是个bug

如果这不起作用,或者这不是一个选项,您可以尝试在编译标志中添加
——而不使用pthreads

该CPU是Cortex M4,因此如果物理安全性是线程模型的一部分,那么关于侧通道的警告仍然适用

对于这个平台来说,可能是比LibNade更好的选择