2013-02-21 47 views
0

我想在Fez Panda II板的USBizi芯片上使用.net微框架中的Runtime Loadable Procedures。 RLP用於在託管代碼中運行時執行C或彙編代碼(例如,來自enlf文件)。用於CPU密集型或時間關鍵型操作。如何在USBizi上使用RLP

我有一些PIC32和Atmega芯片的經驗,所以我有一些本地代碼芯片的經驗。託管代碼非常棒,我相信這是一個強大的功能,可以將其與本機代碼混合使用(以充分發揮芯片本身的潛力,如DMA或ISR)。所以我明確想要使用RLP。

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

例子僅適用於GHI的EMX平臺(的somekind的由GHI由另一微控制器/板/ platoform),非斯熊貓II是GHI的產物。所以它不像下面的例子那麼容易,因爲Fez Panda II運行在USBizi上,而不是在EMX上運行。 Fez Panda II的用戶手冊說可以使用RLP。

我知道我必須設置RLP的地址和大小,具體取決於RLP.h文件中的平臺。我發現這些設置爲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毫秒的響應是很好的。但是爲了計算@〜50kHz的頻率,它太慢了。好吧,我可以使用(7位?)數字分頻器(觸發器IC),但會降低分辨率。

有關如何在USBizi上實現RLP的任何提示?

回答

0

首先你要下載示例代碼:http://www.ghielectronics.com/downloads/NETMF/Library%20Documentation%20v4.1/RLP_User.zip

的包裝上面幷包含用於例子USBizi。那裏有RLP_user.zip軟件包沒有。所以確保你已經下載了正確的軟件包。

然後在您的代碼中,您必須致電RLP.Enable() 設備將重新啓動。那麼你不應該再次調用它,因爲你做了固件升級/修復。 沒有下一個,你將不得不在GHI上創建一個帳戶,如果你還沒有:http://www.ghielectronics.com/ 然後轉到your account並點擊this tab,同意和RLP.Unlock()你必須在你的代碼中實現的方法發送給你通過電子郵件。

您可以實現下面的代碼(注意,開鎖論據您的電子郵件地址不同):

try 
{ 
      //If unlocking succeeds, RLP is enable.d 
    RLP.Unlock("[email protected]", 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,希望有人發現這個Q &一個有用的。