FC2カウンター FPGAの部屋 2011年11月26日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

DE0でuClinux 6(デバイスドライバの組み込み)

DE0でuClinux 5(アプリケーションの作成)”の続き。

今回は本の通りにuClinuxに7セグメントLEDのデバイスドライバを組み込んでみる。
(追加:カーネルのmoduleを選べないのは、Kernel ConfigurationでEnable loadable module supportに*を入れてなかったのが原因でした。もう一度ブログを書きなおします。)

(追加の追加:デバイスドライバを動的モジュールにすると、uClinux起動時にbooting the kernel.で止まってしまって、uClinuxが起動しなかった。これは、起動時に動的モジュールを呼び出しているのが原因だった。menuconfigで明示的にmoduleをunloadする必要がある。参考文献、Build loadable module

1.nios2-linux/uClinux-dist/linux-2.6.x/source/driversディレクトリに行く。

2.Kconfigに7セグメントLEDの項目を追加した。
nois2_uClinux_32_111126.png

3.Makefileにも同様に追加した。
nois2_uClinux_33_111126.png

4.nios2-linux/uClinux-distディレクトリに戻って、make menuconfigを実行した。

4A.Linux Kernel ConfigurationでEnable loadable module support に*を入れた。更にリターンキーを押して設定を続ける。
nois2_uClinux_42_111126.png

4B.Module unloadingとForce module unloadingに*を入れる。これで起動時にデバイスドライバの動的モジュールは読まれない。(こうしないとuClinuxが起動しなかった)
nois2_uClinux_43_111126.png

5.設定を行って一旦Exitし、もう一度立ち上がった設定画面で、7 segment LED driver をスペースで選択してMを選択した。(追加:カーネルのmoduleを選べないのは、Kernel ConfigurationでEnable loadable module supportに*を入れてなかったのが原因でした。)

nois2_uClinux_34_111126.png

6.makeコマンドを実行して、makeした。

6A.nios2-linux/uClinux-dist/romfs/lib/modules/2.6.30/kernel/driversにleddev.ko ができていた。
nois2_uClinux_40_111126.png

7.今度は、nios2-linux/mywork/leddevに移動して、leddev_test.cをコンパイルする。nios2-linux/mywork/leddevに移動した。

8.MakefileのROOTDIRを自分のパスに変更した。

9.makeを実行して、leddev_test.cをコンパイルした。

10.make romfsを実行した。
nois2_uClinux_37_111126.png

11.nios2-linux/uClinux-dist/romfs/binを見るとleddev_testが出来ていた。
nois2_uClinux_38_111126.png

12.nios2-linux/uClinux-distに移動して、make imageを実行した。

13.nios2-linux/uClinux-dist/images にzImageができた。zImageをzImage_7segleddrv に変更した。
nois2_uClinux_35_111126.png

14.zImageをzImage_7segleddrvをUSBメモリ経由でWindowsに移した。

15.Quartus II 11.0を立ち上げて、DE0にダウンロードした。
nios2_ucliunx_18_111124.png

16.Nios2 11.0 Command Shellを開いて、zImage_7segleddrvの置いてあるフォルダに移動した。

17.nios2-download -g zImage_7segleddrvを実行して、zImage_7segleddrvをダウンロードした。
nios2_ucliunx_36_111126.png

18.nios2-terminalでuClinuxを起動し、動的モジュールをロードした。
nios2_ucliunx_44_111126.png

19.leddev_testを起動して、7セグメントLEDのテストを行った。無事に動作した。
nios2_ucliunx_45_111126.png

いろいろミスって、動作するまでが大変だった。やっと動作して安心した。特にデバイスドライバの動的モジュールをunloadする設定を見つけるまでが大変だった。
  1. 2011年11月26日 06:36 |
  2. FPGAボードで学ぶ組込みシステム開発入門[Altera偏]
  3. | トラックバック:0
  4. | コメント:5