Raspberry Pi Mouse(移行中)

Raspberry Pi Mouse 研修[12]

RaspberryPiMouse Raspberry Pi Mouse(移行中)
RaspberryPiMouse

こんにちは。seyaです。今回から新しい挑戦をしていきたいと思います。

挑戦内容は、”デバイスドライバを使用せずにRaspberry Pi Mouseで迷路走行ができるようにする!”です。LEDやスイッチなどの周辺機能をプログラムの中で書いて動かしていくということをしていきたいと思います。

プログラムはGithubのこちらのリポジトリにあります。Raspimouse_samples

今回は、Lチカをするために、GPIOのレジスタを確認していきたいと思います。

Raspberry Piには、bcm2835チップが乗っています。GPIOなどの制御はこのチップで行われているそうです。今回は、bcm2835のGPIOレジスタを設定していきたいと思います。データシートを見ていきます。

出展: BCM2835 ARM Peripherals

この表より、レジスタのオフセットが0x200000であることがわかりました。また、このレジスタのそれぞれの説明を読んでいくことでどのように設定を行えばGPIOの制御ができるのかということもわかるようになりそうです。

このレジスタの概要より、GPIO Functuion SelectでGPIOの設定ができそうということが読み取れます。早速見ていきます。

出展: BCM2835 ARM Peripherals

出展:出展: BCM2835 ARM Peripherals

 

それぞれのGPIOポートに対応する3bitの値を設定を行うことでOKということがわかります。LEDの点灯消灯を行うためには、outputモードに設定をすればよさそうです。

GPIOの出力設定は、GPIO Ooutput Pin Set 0/1やGPIO Ooutput Pin Clear 0/1レジスタで可能のようです。このレジスタ設定レジスタと同様にして確認をすると、それぞれのビットがGPIOに対応していました。

レジスタの設定方法がわかったので、Raspberry Piでこのレジスタをたたくためのプログラムを書いていきます。

bcm2835のレジスタにアクセスするために、物理的なアドレスの取得を行い、レジスタにアクセスをするということをしていきます。

使用する関数はopen,nmap関数などです。

今回は、長くなったのでプログラムに関しては次回書いていきたいと思います。

さいごに

Raspberry PiのGPIOをレジスタにアクセスをしてたたくというとてもローレイヤーの内容について書いてみました。マイコンと似たような感じでした。マイコンとは違って簡単にレジスタにアクセスをすることができないため、マイコンよりも難しく感じました。

この記事の最初に紹介をさせていただいたGithubのリポジトリにプログラムがあるので、見ていただければと思います。

タイトルとURLをコピーしました