私はRPI2 OS用のGPIOドライバを作成しています。そして私はそれについて本当に長い時間サーフィンをしていましたが、Linuxのデータしか見つかりませんでした。ドライバのためのCのような機能をどのようにしてbcm2836でGPIOを使用する
void gpio_set(int pin);
void gpio_clr(int pin);
とするべきですか?それとも、インラインアセンブリーのおかげですか?
私はRPI2 OS用のGPIOドライバを作成しています。そして私はそれについて本当に長い時間サーフィンをしていましたが、Linuxのデータしか見つかりませんでした。ドライバのためのCのような機能をどのようにしてbcm2836でGPIOを使用する
void gpio_set(int pin);
void gpio_clr(int pin);
とするべきですか?それとも、インラインアセンブリーのおかげですか?
としては、BCM2836で、基礎となるアーキテクチャは、BCM2835と同一であるhere
を説明します。唯一の大きな違いは、ARM1176JZF-Sプロセッサの取り外しとクアッドコアCortex-A7クラスタへの置き換えです。
BCM2836の入手可能なドキュメントには、周辺ハードナリ、A7のみが記載されています。代わりにBCM2835のドキュメントが必要です。 peripheral specificationセクション6はGPIOを扱います。レジスタはメモリマップされているため、C言語で直接書き込むことができます。
Cで実装するのは非常に簡単です。周辺アドレスRPi2は0x20000000(RPi)ではなく0x3F000000です。使用可能なドキュメントはRPi(BCM2835)用ですが、メモリアドレスの変更やプロセッサの変更(Cortex-A7)などRPi2にも適用されます。クイックジャンプの場合は、ベアメタル開発の場合はvalver's blogです。
ありがとうございました! –