2017-09-05 3 views
0

投稿フォームthis質問昨日、私はthis図書館を私の掲示板に移植することに決めました。私は何かを変える必要があることを知っていたので、図書館をコンパイルし、それを小さなプログラムで呼び、何が起こるかを見ました。第1の問題はここにあります:device-treeはどこにありますか?

// Check for GPIO and peripheral addresses from device tree. 
    // Adapted from code in the RPi.GPIO library at: 
    // http://sourceforge.net/p/raspberry-gpio-python/ 
    FILE *fp = fopen("/proc/device-tree/soc/ranges", "rb"); 
    if (fp == NULL) { 
     return MMIO_ERROR_OFFSET; 
    } 

このlibは、私のボード上のシステムの構造は同じではありません。だから私は誰かが私がこのファイルを見つけることができたか、それがどのように見えるのか教えてくれるかどうか、私が仕事を進めるために自分自身で見つけることができるかどうか疑問に思っていました。

ありがとうございました。

+0

おそらく、あなたはRaspbian OSをダウンロードしてファイルを調べることができます。 – Julien

+0

* "このファイルを見つけることができた場所" * - * "ファイル" *は特別なprocfsファイルシステムにのみ存在し、**/proc/device-tree/**サブディレクトリはボードのデバイスツリーブロブ。 DTのソースコードで**範囲** * "ファイル" *はファイル内に1行しか存在しません(例:** arch/arm/boot/dts/bcm2835.dtsi **)。あなたのボード(詳細を提供することを怠る)は、PPCまたはARM SoCがあればDTだけを使用し、DTの構造もこのBroadcomの例とは異なる場合があります。 – sawdust

+0

このようなドライバをユーザー空間で実行するのは、最善の方法ではないようです。 – 0andriy

答えて

0

「ファイル」(正確には/ procノード)は必ずしも必要ではありません。

これは、レジスタ、ハードウェアの特別な機能を露光するデバイスドライバの/dev/memタイプのPI特異GPIO風味バージョンであるように見えるものを用いて直接メモリマップドI/Oを行うように設定されているに見出されるコードユーザー空間。

これをボードに移植するには、まず、起動可能なカーネルに/dev/memまたは類似の機能があるかどうかを判断する必要があります。次に、GPIOピンの適切なI/Oレジスタを決定する必要があります。 pi固有のコードはこれを理解するためにデバイスツリーを読み取っていますが、実行中のSoCのプログラママニュアルを手動で読むなど、他の方法もあります。

もう1つのアプローチは、いくつかの小型マイクロコントローラ(またははい、ベアボーン***デュイノ)をシステムに追加し、それを使ってさまざまなセンサーや周辺機器から情報を収集することです。これをUARTリンク経由でSoCに転送したり、I2Cなどを介して問い合わせたりすることができます。これはわずかなコストとボトルネックの程度を追加するだけでなく、SoC上のソフトウェアが非常に移植性が高くなることを意味します同等のチップ、あるいは開発中にデスクトップPC上で実行することさえ可能です。

+0

私は実際に同じpiコードを使用することができますが、Gpioのレジスタを変更するとデバイスにはうまくいくでしょうか? – Lomezno

+0

これは、デバイスの機能に依存します。これは、あなたが識別するのを奇妙に避けています。 –

関連する問題