FC2カウンター FPGAの部屋 MicroBlazeでuClinuxを動作させたい3(OPB_TIMERを使ってみた)
FC2ブログ

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

FPGAの部屋

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

MicroBlazeでuClinuxを動作させたい3(OPB_TIMERを使ってみた)

”XPS_TIMERをテスト”でXPS_TIMERをテストしてみたところ正常に動作しているようだったので、OPB_TIMERを入れて動作させてみようとしたら、XPSでOPBのマスタがないというエラーが出てビットファイルが生成できなかった。ブログのコメントでidlef50 さんにOPB_TIMERを使用するときは、PLBV46 to OPB Bridgeが必要ということを教えていただいた。そこで、PLBV46 to OPB Bridgeを追加してポートもちゃんとつないだら、ビットファイルが生成できた。そのビットファイルを、もう一度XMD でuClinux のイメージをDDR SDRAMに流し込んでブートしてみたが、以前と同様にuClinuxの起動が、Calibrating delay loop... で止まってしまった。残念。
下にOPB_TIMERを追加したXPSプロジェクトを示す。
opb_timer_1_081226.png

後はどうしようかと思っているが、自分独自のIPを作って追加する方法を試していないので、DDR SDRAMコントローラをデフォルトの物から、ラッパーをかぶせた自分で作ったIPに変更する方法を探って見ようと思う。
  1. 2008年12月26日 05:03 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:6

コメント

おはようございます。
 タイマ割り込み掛かってます?
  1. 2008/12/26(金) 10:02:57 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、こんばんは。

タイマー割り込みがかかっているのをどうやって確認できますか?Chipscopeですか?それともXMDで確認できるのですか?
Chipscopeだと家では評価ライセンスが切れています。
  1. 2008/12/26(金) 21:15:33 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

こんばんわ。
一番、単純なのは、XMDからタイマ割り込みルーチン内にBreakpointを仕掛けて、Runしてみることでしょうね。割り込みが掛かれば、そこでブレークして戻ってきます。コマンドは、

http://www.fpgamac.com/T1_XMD_commands_REFERENCE_V.2.doc

などを参照して見て下さい。大抵の状況はXMD内から確認できるはずです。もちろん、Debugger自体がコケてしまったら(良くあるパターンですが)、それまでですが。
  1. 2008/12/27(土) 00:25:26 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、こんにちは。

ご紹介ありがとうございます。バイナリしかないので、割り込みルーチンがわかりませんので、これでとりあえず休止にしようと思います。
それにEDKが評価版なので、先に進まないと学習する前にライセンス期限が過ぎてしまいます。
  1. 2008/12/27(土) 08:02:08 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

こんにちは。
>バイナリしかないので、割り込みルーチンがわかりませんので
 MicroBlazeは、割り込み時に、アドレス 0x00000010 に分岐します。
http://download.atmark-techno.com/suzaku/doc/edk/6.2/ja/mb_ref_guide_j.pdf
(の21ページあたり。)
したがって、アドレス 0x00000010にブレーク・ポイントを仕掛けられれば、取り合えず、すべての割り込みをフックできます。この0x00000010から、割り込みの種類を調べて、各処理ルーチンに飛びますので、ちょっと面倒ですが、XMD上でDisassembleすれば、タイマー・ルーチンを探し出すことができるハズです。コマンドは、
 XMD% dis [address] [num_words]  (dis 0x1234 12)
あたりです。
 で、何の割り込みも掛からないようでしたら、まず、MicroBlazeのマシン ステータス レジスタ (MSR)のIEビットが1にセットされているか?
割り込みコントローラのInterrupt Enable Register (IER)の対応するビットが1にセットされているかなどを確認してみて下さい。
http://www.xilinx.com/support/documentation/ip_documentation/xps_intc.pdf
(12ページ)。
何れも、XMD内からRRD (Register Read)コマンドおよびMRD (Memory read)コマンドで、対応できるはずです。
  1. 2008/12/27(土) 17:24:44 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、こんにちは。

やり方を詳しく教えていただいて、ありがとうございます。
実際にデバックしてもコードを修正するためには機械語を書き換える必要がありそうなので、申し訳ありませんが、休止してLinuxを試してみるときはPetalinuxを試してみようと思います。
  1. 2008/12/28(日) 05:44:09 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/990-01121621
この記事にトラックバックする(FC2ブログユーザー)