2013/08/21

[FPGA][MicroBlaze]MicroBlaze開発中に出てきたエラーと、その解決

,
 今日は待ちに待った2CELLOSのCD発売日なんですが、ヨドバシ秋葉マルチメディアには置いてなかったので激おこです。しょうがないので、これ書いたらプール行って帰ろうと思います。

 で、MicroBlaze人口が少ないからなんでしょうか、エラーメッセージで検索すると日本語のページが全然出てこなくて大変です。全く、失敗とその解決法も、動作法に劣らない程度に重要だと思うんですよね、時間を使って得た経験、ノウハウとも言えるでしょうし…
 いくつか、自分が嵌められた?エラーとその解決法についてメモしておきます。

1)MicroBlazeにあったdebug_moduleを消して、手動でまた追加する場合
 別のプロジェクト開いたら、xmdでfpga -f ***.bitはいけるのにconnect mb mdmでMDMがねえよって怒られたので…(このときのエラーメッセージはコピペしてメモしてないんだ、ごめん)

 まず、microblaze_0をダブルクリックし、Configuration WizardでEnable Debugにチェックを入れる。
 次に、IP CatalogからDebug→MicroBlaze Debug Module (MDM)を選択し、追加する。
IPコアの追加(Debugの一番下のやつね)
で、これだといろいろと配線が足りないと思うので、Bus Interfaceから
・debug_moduleのMBDEBUG_0を、microblaze_0_debugに
・debug_moduleのS_AXI(AXIバスを使っている場合)を、なんかそれっぽいのに(てきとう)
・Portsタブから、debug_moduleのDebug_SYS_Rstを右クリックして[Make External]、リセットのところの(名前がまちまちだろうけど、例としてproc_sys_reset_0)のMB_Debug_Sys_Rstにそれぞれ繋ぎます。
要は、debug_module⇔microblaze、debug_moduleのバス接続、Reset接続です(もしかしたらバスは要らないのかもしれない。Resetはないとエラーが出る)。
microblaze_0とdebug_moduleを繋げる。Bus Interfacesから。
Reset信号のモジュール同士の接続は、右クリック→[Make External]からだ。
でいいような気がする。変に直接ポート名をタイプすると、エラーだらけになって手に負えなくなるのでやらない。
MicroBlaze Debug Module 
で、最後にAddressesタブを開き、AXIバス上での(かなあ)アドレスを指定してあげます(すでにアドレスが割り当ててあるなら、この手順は別にいらないかもですね)。これには、モジュールを選択して右上にあるGenerate Addressボタンを押すだけで終わります。
Addressを割り当ててもらう。
参考:Xilinx エンベデッド システム開発 v12.3 8-14 アドレスの割り当て
//ハウツーマニュアルが、セミナーに行かないと貰えないのってちょっとどうかと思うんです…いくら商売とは言え…

2)逆に、debug_module(MDM)を2つ以上つないじゃった場合
 多分Run DRCsのところで SIGNAL: Ext_BRK - multiple drivers found: のようなエラーが出て通らないと思います。しかし困ったことに、これでもGenerate Netlist、Generate BitStreamは一応選択できるんですね…
 普通にBus Interfacesのところを右クリックして、Delete Instanceすればオッケーです(禍根を残さないようにAll Connectionをdeleteしてもらう)。で、自分は通った。
debug_moduleとmdm_0って名前が違うから、最初重複してることに全く気付かなかったのがそもそもの原因…

参考:http://forums.xilinx.com/t5/Embedded-Processors-and/Multiple-debug-modules-instantiation/td-p/273698

 ちなみにこの時はExport DesignからSDKが起動できなくて嘆いてた。その時のログは以下のようなもの。これだけだと通ってるように見えるから困る。
********************************************************************************
At Local date and time: Wed Aug 21 15:38:48 2013
 make -f system.make exporttosdk started...
IF NOT EXIST "SDK\SDK_Export\hw" @mkdir "SDK\SDK_Export\hw"
psf2Edward -inp system.xmp -exit_on_error -dont_add_loginfo -make_inst_lower -edwver 1.2 -xml SDK\SDK_Export\hw/system.xml 
Release 14.5 - psf2Edward EDK_P.58f (nt64)
Copyright (c) 1995-2012 Xilinx, Inc.  All rights reserved.

Checking platform configuration ...
IPNAME: plb_v46, INSTANCE: mb_plb - 2 master(s) : 9 slave(s) 
IPNAME: lmb_v10, INSTANCE: ilmb - 1 master(s) : 1 slave(s) 
IPNAME: lmb_v10, INSTANCE: dlmb - 1 master(s) : 1 slave(s) 

Checking port drivers...
Done!

3)Generate BitStreamに反応がない場合
 例として、というか自分の場合Run DRCs、Generate Netlistまでは通っているのに、Generate BitStreamを押しても以下のようなメッセージがコンソールに吐きだされて、Generateされない。
********************************************************************************
At Local date and time: Wed Aug 21 18:01:16 2013
 make -f cpu.make bits started...
"This project has been instantiated in Xilinx ISE Project Navigator. Please use ProjNav to generate the bitstream. "
Done!
もう知らん。そもそもXPSからProjectを開いたときに、以下のようなダイアログが出てくる時点でイミフだって
どゆこと…
(2013/09/08)これは、ISPのProject Navigatorで作られたプロジェクトは、ISEから開くべき、みたいなやつだったような気がする…

4)Linuxのコンパイルについて

 多分自分のことだからどうせまた記事を書いちゃうんでしょうけど、Linuxのコンパイル時にはXilinx Wikiに書いてあるやり方だと怒られてビルド通りません。
 どうやらCROSS_COMPILEオプションを指定してあげた方がいいみたい?で、mb-かmicroblazeel-xilinx-gnu-だったかを書いてあげたら通りました。(要検証)

0)各ファイルの場所
最初のモジュール名がsystemなら、system\implementation\にsystem.bitとかができる。
最終的に生成されるdownload.bitは\software\cpu_hw_platform\以下。\software\は多分SDKで聞かれるworkspaceの場所。
\software\uboot_bsp_0\microblaze_0\libsrc\uboot_v4_00_c\にconfig.mkとxparameters.h

余談
http://blog.cronus-embedded.com/article/57563399.html
なるほどねーって思ってたら、1年前の記事だった。

0 コメント to “[FPGA][MicroBlaze]MicroBlaze開発中に出てきたエラーと、その解決”

コメントを投稿