Russ の言うとおりです。BeagleBone の AM335x プロセッサには 2 つの PRU コアがあるため、その PRU プログラムの 4 つのインスタンスを同時に実行する方法はありません。1セットのピン用にコンパイルされたものをロードし、測定を行い、停止してから、センサー用にコンパイルされた別のバイナリを別のピンにロードできると思いますが、それはかなり非効率的な(そして醜い、IMHO)方法です.
アセンブリがわかっている場合は、そのコードを更新して 4 つのセンサーすべてを駆動するのは非常に簡単です ( PRU アセンブリ手順)。または、C でゼロから始めて、Russ が提案したように PRU C コンパイラを使用することもできますがclpru
、AFAIK はまだベータ状態にあり、そこにはあまり情報がありません。いずれにせよ、4 つのセンサーから並行して、または次々に読み取り、測定値を異なるオフセットで PRU メモリにロードし、単一の信号を ARM に送信することをお勧めします。
リンクしたそのコードでは、次の行:
SBCO roundtrip, c24, 0, 4
register (ファイルの先頭にある register )から4
バイトを取得し、それを PRU データ RAM ( 39 ~ 41 行目でデータ RAM の先頭に定数が設定されている) にロードします。したがって、4 つのレジスタに 4 つの異なる測定値がある場合、RAM 内のデータをオフセットできます。たとえば、次のようになります。roundtrip
r4
#define roundtrip r4
c24
0
SBCO roundtrip1, c24, 0, 4
SBCO roundtrip2, c24, 4, 4
SBCO roundtrip3, c24, 8, 4
SBCO roundtrip4, c24, 12, 4
次に、C プログラムでこれら 4 つの連続する 32 ビット整数を読み取ります。