Cambridge University Raspberry Piオペレーティングシステム開発ガイドの質問


9

私は高レベルのアプリ開発者(C#、python)です。低レベルの組み込みアプリケーション開発で手を汚したいと思います。ケンブリッジ大学は、ベイキングPiと呼ばれるRaspberry Piのオペレーティングシステムを作成する方法を教える一連のチュートリアルを投稿しました。私はこのチュートリアルに関する私の質問をここに投稿し、進むにつれて答えを更新するつもりでした。多分私が自分で理解したいくつかのポイントを投稿します。

だから私はレッスン1に従ってきましたが、私はすでに混乱しています。こちらがページリンクです。

チュートリアルの最初の部分では、値0x20200000をレジスタr0に書き込むことで、GPIOコントローラをオンにする必要があると(私は想定しています)しています。データシートのどこにもそのような関連情報はありません。(リンク)。GPIOセクションを確認しましたが、16個のレジスタまたはr0の兆候はありませんでした。この情報はどこにありますか?

更新

まず、チュートリアルでは、ステータスLEDであるOK LEDの点灯について説明します。マニュアルのどこにGPIO 16がOK LEDに接続されていると記載されているのかと思われるかもしれません。それはしません。Raspberry Schematicsを見て、status_ledが接続されているGPIOを見つける必要があります。ここに回路図のリンクがあります。ページ2、BCM2835をブロックします。

したがって、目標はGPIO16ピンを選択することです。(今後追加されるアップデート...)

回答:


5

そのチュートリアルの関連情報は次のとおりです。

コンピューター内のアドレスは単なる数値であるため、0x20200000という数値は偶然にもGPIOコントローラーのアドレスです。これは、製造元による設計上の決定にすぎず、他のアドレスを使用できた可能性があります(他のアドレスと競合しない場合)。私がこのアドレスを知っているのは、マニュアルで調べたからです[3]。アドレスに特定のシステムはありません(ただし、それらはすべて16進数の大きな丸数字であることを除きます)。

r0プロセッサ上のメモリの一部であり、好きな情報を保存できます。これらは、汎用レジスターと呼ばれます。GPIOコントローラーの場所をこの場所に書き込んで、通常は高水準プログラミングで変数を使用する場合と同様に、後で再利用できるようにします。

値0x20200000は、実際には90ページの表の最初のメモリ位置を参照していると思います。レジスタに書き込む前に、4ずつインクリメントすることに気付くでしょうFunction Select 1(表を参照)、いくつかのピンを制御するレジスタ、書き込みたいものを含みます。

それはまったく役に立ちますか?


私の質問は、データシートのどこにこの情報が関係するのですか?
ArmenB 2012年

@ArmenB .:セクション6.1、ページ90
Jivings

ドキュメントには、「GPIOには41のレジスタがあります」と記載されています。チュートリアルでは16と書かれています。そのセクションにはレジスタr0の表示もありません。また、それを有効にする0x20200000の番号もありません。
ArmenB 2012年

@ArmenB .:申し訳ありませんが、アーメン、もう少し詳しく説明します。
Jivings

3

質問に答えてくれたJivingsとemcconvilleに感謝します。

データシートpdfの6ページの「ARM物理アドレス」セクションには、

ペリフェラルの物理アドレスの範囲は0x20000000〜0x20FFFFFFです。周辺機器のバスアドレスは、0x7E000000から始まる周辺機器のバスアドレス範囲にマップするように設定されています。したがって、ここでバスアドレス0x7Ennnnnnでアドバタイズされるペリフェラルは、物理アドレス0x20nnnnnnで使用できます。

90ページに進むと、表の最初の行は次のように述べています。

0x7E200000 GPFSEL0 GPIO機能選択0 32 R / W

したがって、0x7E200000は、物理アドレス0x20200000に変換されます。これは、GPIO機能選択0ビットです。

r0と同様に、ARMには16個の汎用レジスターがあり、これを使用して数値を格納できます。そのため、チュートリアルでは最初のフリーレジスターであるr0を選択しています。


助けてくれてうれしいし、素晴らしい自己回答です。これで他の2つがうまくまとめられました。
Jivings

回答に時間を割いていただきありがとうございます。私はこれをコミュニティウィキとして投稿したので、他の人が投稿を編集/修正/完了できます。
ArmenB 2012年

1

登録しr0r12汎用されています。当然、から始めるのが最も簡単r0です。ジャイビングスが指摘したように、マニュアルは各アドレスをリストし、述べています:

ペリフェラルの物理アドレスの範囲は0x20000000〜0x20FFFFFFです。


正解を2つ選択できません。これはラメです。このウェブサイトを修正してください...ご協力ありがとうございます。ようやくRTFMの意味がわかりました。
ArmenB 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.