0

我想Runtime Loadable Procedures在 Fez Panda II 板的 USBizi 芯片上使用 .Net 微框架。RLP 用于在运行时在托管代码中执行 C 或汇编代码(例如来自 en elf 文件)。对于 CPU 密集型或时间关键型操作很有用。

我对 PIC32 和 Atmega 芯片有一些经验,所以我对芯片的本机代码有一些经验。托管代码很棒,我相信将它与本机代码混合是一项强大的功能(以充分利用芯片本身的潜力,如 DMA 或 ISR)。所以我肯定想使用RLP。

现在我找到了这些资源:http ://www.ghielectronics.com/downloads/NETMF/Library%20Documentation%20v4.1/html/f608e398-6573-8adc-5d59-b904dfa3fcee.htm

示例仅适用于 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 的任何提示?

4

1 回答 1

0

首先您必须下载示例代码:http ://www.ghielectronics.com/downloads/NETMF/Library%20Documentation%20v4.1/RLP_User.zip

上面的包确实包含 USBizi 的示例。有 RLP_user.zip 包没有。因此,请确保您已下载正确的软件包。

然后在您的代码中,您必须调用RLP.Enable() 设备将重新启动。那么你不应该再次调用它,除非你进行固件升级/修复。不,如果您还没有 GHI 帐户,接下来您将不得不在 GHI 上创建一个帐户:http ://www.ghielectronics.com/ 然后转到您的帐户并单击此选项卡,同意您拥有的 RLP.Unlock() 方法在您的代码中实施是通过电子邮件发送给您的。

您可以实现以下代码(请注意,您的电子邮件地址的解锁参数不同):

try
{
            //If unlocking succeeds, RLP is enable.d
    RLP.Unlock("YOUR@EMILADDRESS.COMSOMEMOREBOGUS", new byte[] { 0xB7, 0xE0, some more bytes });
}
catch (Exception ex)
{
            //If unlocking fails, it means RLP is not enabled yet, do so now, assuming your unlock credentials are correct.
    RLP.Enable();
}

现在继续使用您从下载包中获得的 USBizi 平台的示例解决方案。

我一直在解锁 RLP,希望有人觉得这个问答很有用。

于 2013-02-22T12:53:24.870 回答