で、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の一番下のやつね) |
・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 |
Addressを割り当ててもらう。 |
//ハウツーマニュアルが、セミナーに行かないと貰えないのってちょっとどうかと思うんです…いくら商売とは言え…
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!
例として、というか自分の場合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を開いたときに、以下のようなダイアログが出てくる時点でイミフだって
どゆこと… |
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年前の記事だった。