前回までで独自にビルドしたハードウェアを使ってLinuxを立ち上げることに成功した。
次に、ZedBoardに付属しているLEDを制御する。LEDを制御するためのハードウェアは、myLEDというIPとして実装し、あらかじめPL部に組み込んである。
devmem2を使えるようにするための環境
LEDを制御するためのデバイスドライバを開発する前に、devmem2
を利用してメモリアドレスにマッピングしたLEDが利用できることを確かめる。
- devmem2
devmem2を利用すれば、任意の物理アドレスに対してメモリの読み書きを実行することができる。
参考にしたのは以下の記事だ。
上記の記事ではdevmem2をapt-getにて取得しているのだが、なぜか私のデザインではEthernetに接続することができない。
仕方がないので、あらかじめdevmem2が入っているLinaroのパッケージを代わりにダウンロードして展開し、起動させることにした。
上記のページから、linaro-vivid-developer-20151215-714.tar.gz
をダウンロードしてSDカードのパーティション2に展開する。
sudo mount /dev/sdb2 /mnt/ZED_ROOTFS/ wget https://releases.linaro.org/ubuntu/images/developer/latest/linaro-vivid-developer-20151215-714.tar.gz sudo tar --strip-components=1 -C /mnt/ZED_ROOTFS/ -xzpf linaro-vivid-developer-20151215-714.tar.gz umount /mnt/ZED_ROOTFS
これでSDカードをZedBoardに指して起動すると、devmem2のあらかじめインストールされているUbuntuを起動することができた。
devmem2を使ってLEDにアクセスする
myLEDのIPは、ZedBoardのPL部内で、以下のアドレスにマッピングされている。
したがって、以下のようにアクセスすればよかろう。
devmem2 0x43c00000 b 0x0f
LEDが点灯した!うまく制御できているようだ。