Runtime Loadable Procedures
FezPandaIIボードのUSBiziチップ上の.Netmicroframeworkで使用したい。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製の別のマイクロコントローラー/ボード/プラットフォーム)でのみ使用できます。FezPandaIIはGHIの製品です。したがって、Fez Panda IIはEMXではなくUSBiziで実行されているため、与えられた例に従うほど簡単ではありません。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()
。それは1つ下、もう1つです。
では、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を実装する方法に関するヒントはありますか?