FC2カウンター FPGAの部屋 FPGAボードで学ぶ組込みシステム開発入門[Altera偏]
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

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

DE0でuClinux 4(uClinuxの起動)”の続き。

今回は本にしたがって、アプリケーション作りを練習してみることにする。
まずは、hello worldから。
romfsの下に放り込むとイメージファイルにまとめられるそうだ。知らなかった。勉強になる。

1.WindowsからmyworkをUSBメモリ経由でUbuntu11.10のホームの下のnios2-linuxにコピーした。
nois2_uClinux_24_111124.png

2.myworkの下のhelloディレクトリでMakefileのROOTDIRを自分のパスに変更した。
nois2_uClinux_25_111125.png

3.makeを実行した。成功。

4.make romfsを実行した。エラーが出てしまった。
nois2_uClinux_26_111125.png

5.本にも書いてあるが、これで大丈夫だそうだ。nios2-linux/uClinux-dist/romfsを見ると、helloがあった。
nois2_uClinux_27_111125.png

6.nios2-linux/uClinux-distに移動して、make imageを実行した。
nios2-linux/uClinux-dist/imageに移動すると、zImageが出来ていた。これをzImage_helloに名前を変更した。
nois2_uClinux_28_111125.png

7.zImage_helloをUSBメモリ経由でWindowsにコピーした。

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

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

10.nios2-download -g zImage_helloを実行して、zImage_helloをダウンロードした。
nios2_ucliunx_19_111124.png

11.nios2-terminalでuClinuxを起動して、helloコマンドを入れたら、Hello Worldが表示された。成功。
nios2_ucliunx_29_111125.png

次に、pioを試したが、SWの操作(2進数)により、7セグメントLEDに値が16進数で表示された。
nios2_ucliunx_30_111125.png

nios2_ucliunx_31_111125.jpg
  1. 2011年11月25日 05:50 |
  2. FPGAボードで学ぶ組込みシステム開発入門[Altera偏]
  3. | トラックバック:0
  4. | コメント:0

DE0でuClinux 4(uClinuxの起動)

DE0でuClinux 3(カーネルのビルド)”の続き。

1.USBメモリ経由でUbuntuからWindowsへzImageをコピーした。
nios2_ucliunx_17_111124.png

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

3.Command Shellを起動。zImageをダウンロードした。
nios2_ucliunx_19_111124.png

4.nios2-terminalを立ち上げると、uClinuxが立ち上がった。linuxがFPGAボード上で立ち上がったのは始めてなので、嬉しいです。。。
nios2_ucliunx_20_111124.png

5.ルートディレクトリでlsすると、bin dev etc home init lib mnt proc sbin sys tmp usr var ディレクトリが見えた。
nios2_ucliunx_21_111124.png

6.PATHは /bin:/usr/bin:/etc:/sbin:/usr/sbin だった。確かに本に書いてあるとおり、大したコマンド入っていません。
nios2_ucliunx_22_111124.png

7.Ubuntuに戻ってvi, diff, find, grep, less, kill をbusyboxで追加した。下はviを起動した所です。
nios2_ucliunx_23_111124.png

やった。初めてFPGAボードでuClinuxとはいえlinuxが動いた。とっても嬉しいです。。。

FPGAボードで学ぶ組み込みシステム開発入門[Altera編]はとても良い本だと思った。初心者でもうまくいくように丁寧に書いてある。しかもデバイスドライバの作り方まで書いてあって、とてもお得だと思った。2冊買ったくらいの価値はあるね。
作者の方とお知り合いになったからというわけではなく、本当にそう思いました。
  1. 2011年11月24日 05:26 |
  2. FPGAボードで学ぶ組込みシステム開発入門[Altera偏]
  3. | トラックバック:0
  4. | コメント:0

DE0でuClinux 3(カーネルのビルド)

DE0でuClinux 2(Quartus IIとSOPC Builder)”の続き。

1.まずは、”DE0でuClinux 2(Quartus IIとSOPC Builder)”のuclinuxフォルダのuclinux_sopc.ptfファイルをUbuntuにUSBメモリ経由でコピーした.(UbuntuはVirtualBox上にインストールしてある)
nois2_uClinux_13_111123.png

2。nois2-linux/uClinux-distに移動して、make menuconfig を実行した.
nois2_uClinux_14_111123.png

3。カーネルのビルド方法はを参照のこと。

4。ptfファイルをカーネルのビルドに反映させた。
nois2_uClinux_15_111123.png

5。make を行った。nois2-linux/uClinux-dist/images にzImageができた。
nois2_uClinux_16_111123.png
  1. 2011年11月23日 09:16 |
  2. FPGAボードで学ぶ組込みシステム開発入門[Altera偏]
  3. | トラックバック:0
  4. | コメント:0

DE0でuClinux 2(Quartus IIとSOPC Builder)

DE0でuClinux 1(uClinxとツールチェーンのダウンロード)”の続き。

今回はQuartus IIを立ち上げて、uClinuxを動かすNois IIシステムを作成する。と言っても、FPGAボードで学ぶ組込みシステム開発入門 ~Altera編~のサポートページからダウンロードしたプロジェクトを使用する。

ファイルをダウンロードして、展開すると、DE0という名前のフォルダが出来る。DE0\dai9sho\uclinuxが目的のプロジェクトだ。
Quartus II 11.0を立ち上げて、FileメニューからOpen Project...を選択して、ucliunx.qpfを読み込む。そしてコンパイルしたのが、下の図の状態だ。
nios2_ucliunx_9_111123.png

トップファイルを見てみると、SDRAMとSW入力、7セグメントLED出力がある。
nios2_ucliunx_10_111123.png

Project Navigator のEntityウインドウのuclinx_sopc:instをダブルクリックしてSOPC Builderを立ち上げた。Nios IIプロセッサ、SDRAMコントローラ、SW用PIO、7セグメントLED用PIO、タイマーが入っていた。
nios2_ucliunx_11_111123.png

cpu_0をダブルクリックすると、Nois IIの設定が見える。Nois II/fを使用していた。uClinuxなので、MMUは入っていなかった。
nios2_ucliunx_12_111123.png

  1. 2011年11月23日 05:20 |
  2. FPGAボードで学ぶ組込みシステム開発入門[Altera偏]
  3. | トラックバック:0
  4. | コメント:2

DE0でuClinux 1(uClinxとツールチェーンのダウンロード)

FPGAボードで学ぶ組み込みシステム開発入門[Altera編]”の”9-1 uClinuxと開発環境の構築”今回はDE0でuClinuxをやってみることにした。
VirtualBox上にUbuntu11.10をインストールして、その上でnios2のuClinuxのビルドやツールを使うことにした.
なお、今回はUbuntu 11.10のブラウザ上でブログを書いている。

1。本の296ページのコンパイルに必要なツールのアップデートとインストールから行った。Ubuntu11.10のSynapticパッケージマネージャを起動して、本に書いてあるgit-coreなどのツールをインストールした。
nois2_uClinux_1_111121.png

2。本の297ページのuClinuxディストリビューションのダウンロードを行ったが、エラーになった。wgetのコマンド中のファイル名の2009の後に0が抜けていた。
nois2_uClinux_2_111121.png

3。もう一度コマンドを実行して”nios2-linux-20090730.tar.1”として保存できた。これには74分32秒かかった。
nois2_uClinux_3_111121.png

4。”nios2-linux-20090730.tar”を削除して、”nios2-linux-20090730.tar.1”を”nios2-linux-20090730.tar”に変更した。
nois2_uClinux_4_111121.png

5。tarコマンドで解凍した。
nois2_uClinux_5_111121.png

6。nios2-linuxディレクトリに入って、チェックアウトコマンドを実行した。
nois2_uClinux_6_111121.png

7.ディレクトリを上に上がって、ツールチェーンのダウンロードを行った。1度、wgetを実行したが96%で停止したので、やり直した。

8.ツールチェーンの解凍と移動を行った。解凍はうまくいったが、mvするところで、/optディレクトリがあると言われてエラーになった./optディレクトリを見ると、VBoxGuestAdditions-4.1.6やor1用のディレクトリがあったので、ホームディレクトリのoptの下のnois2だけ/optディレクトリの下に移動した。
nois2_uClinux_7_111121.png

9。上に上がって、optディレクトリを削除した.

rm -r opt



10。/opt/nios2/binにパスを通した。exportコマンドも実行したが、.bashrcにexportコマンドを追加した。
nois2_uClinux_8_111121.png

  1. 2011年11月22日 05:14 |
  2. FPGAボードで学ぶ組込みシステム開発入門[Altera偏]
  3. | トラックバック:0
  4. | コメント:0

システム開発入門[Altera偏]を試してみる5(2.4アップダウン・カウンタのシミュレーション3)

システム開発入門[Altera偏]を試してみる4(2.4アップダウン・カウンタのシミュレーション2)”の続き。

前回はAlteraからダウンロードしたModelSimでシミュレーションを行ったが、Verilogソースなので、Veritak Basic版でもシミュレーションをすることが出来る。ひさしぶりにVeritakを使ってみることにした。

Veritakの詳しい使い方は、”FPGAリテラシー およびチュートリアル”を見て欲しい。

Veritakでプロジェクトを作成して、セーブした。
FPGA_Board_Dev_44_111103.png

プロジェクトをロードしてシミュレーションを行った。Waveform Viewerに波形を追加してudcntを符号なし10進数表示に変えたところだ。ModelSim同様のシミュレーション結果を得た。
FPGA_Board_Dev_45_111103.png

Veritakの良いところはNotepad++と連帯しているところだ(Veritakで設定が必要)。プラグインを入れると、Notepadd++起動時にダイアログが出てきて、ここからVeritakシミュレータを制御することが出来る。
更に、Notepad++上で信号名にカーソルを合わせると現在の時刻と信号の値が表示され、デバックの時に便利だ。
FPGA_Board_Dev_46_111103.png

更に、Notepad++上でブレークポイントを設定して、ブレークすることが出来る。
FPGA_Board_Dev_47_111103.png

FPGA_Board_Dev_48_111103.png

何と言っても、私のとって使い慣れたエディタであるNotepad++上でいろいろ出来るのが嬉しい。
  1. 2011年11月03日 04:56 |
  2. FPGAボードで学ぶ組込みシステム開発入門[Altera偏]
  3. | トラックバック:0
  4. | コメント:0
»