我想Runtime Loadable Procedures
在 Fez Panda II 板的 USBizi 芯片上使用 .Net 微框架。RLP 用于在运行时在托管代码中执行 C 或汇编代码(例如来自 en elf 文件)。对于 CPU 密集型或时间关键型操作很有用。
我对 PIC32 和 Atmega 芯片有一些经验,所以我对芯片的本机代码有一些经验。托管代码很棒,我相信将它与本机代码混合是一项强大的功能(以充分利用芯片本身的潜力,如 DMA 或 ISR)。所以我肯定想使用RLP。
示例仅适用于 GHI 的 EMX 平台(GHI 制造的另一种微控制器/板/平台),Fez Panda II 是 GHI 的产品。所以这并不像下面给出的例子那么简单,因为 Fez Panda II 是在 USBizi 上运行的,而不是在 EMX 上。Fez Panda II 的用户手册说可以使用 RLP。
我知道我必须根据 RLP.h 文件中的平台设置 RLP 的地址和大小。我为 USBizi 平台找到了这些设置:RLP Address: 0x40000440. RLP Size: 0x000027FC.
到目前为止一切顺利。
现在我遇到以下问题:
USBizi: by default, RLP is not enabled and locked.
文档说,再多几行:To enable RLP call RLP.Enable()
. 一个下来,一个去。
现在如何解锁 RLP?
USBizi 的示例代码给出,见下文
public static void Main()
{
// Program start up on USBizi
// Unlock RLP if needed
// Load ELF file first because it might be large
byte[] elf_file = Resources.GetBytes(Resources.BinaryResources.RLP_test);
RLP.LoadELF(elf_file);
// now load all RLP.Procedure(s)
// ......
// dispose of the elf file to reclaim memory
elf_file = null;
Debug.GC(true);
// start the application
// ...
现在方法在// Unlock RLP if needed
哪里?那就是我卡住的地方。
在托管代码中,我可以在上升沿 @ ~3.6kHz 使用中断。对于按下按钮的用户,< 1 ms 的响应非常好。但是对于计算频率@~50kHz 来说太慢了。好的,我可以使用(7 位?)数字分频器(触发器 IC),但这会降低分辨率。
关于如何在 USBizi 上实现 RLP 的任何提示?