2014年1月13日月曜日

ISE14.4をUbuntuにインストールした際にSDKでgmakeが無かったり、arm-xilinx-eabi-gccが無かったりで怒られた

遅まきながらZedboard上でUbuntuを動かそうとしてはまったところのメモ。

環境は以下の通り。
 ホスト:Windows8.1
 仮想環境:Vmware player + Ubuntu13.10
 ツール:ISE 14.4, EDK

Analog Devicesで配っているプロジェクトが14.4だったので、これをインストール
(14.6はコンバージョンしたけどうまく動かなかったので削除しました)
Xilinx Linux Wikiに記載の通りツールを導入して合成までいったがSDKでFSBLを作るところで躓いてしまった。
内容としてはタイトルにもあるように2点で、gmakeが見つからないのと、
arm-xilinx-eabi-gccが無いというものであった。

まず1点目、gmakeに関する解決策は次のページを参考にしました。

 http://www.bedesign.jp/modules/d3blog/tb.php/7

簡単に言えばmakeをgmakeとしてシンボリックリンクを貼ってあげればよいようです。

2点目はarm-xilinx-eabi-gccが見つからないという問題です。
解決策は下記ページに記載されていました。

 http://www.zedboard.org/content/arm-xilinx-eabi-gcc-seems-be-missin

私は以下の通りに実行することで正常にarmのコンパイラがインストールされて問題は解決しました。
1. sudo dpkg-reconfigure -plow dash
//set dash as default system shell. Choose "NO"
2. re-install xilinx ISE
3. sudo dpkg-reconfigure -plow dash
//set dash as default system shell. Choose "YES"

2013年8月12日月曜日

Xilinx Linuxのビルド

Xilinx Linuxのビルドを実施した際に問題にあたったのでその解決方法を以下にメモする

環境は次の通り
  • VMware Player + Ubuntu 13.04
  • ISE14.6
まずはhttp://www.wiki.xilinx.com/を参考に環境を整える。
具体的にはGit,ISEのインストール、Xilinx Linuxソースの取得を行う。

Wikiに記載がある通りに進めると下記のようなエラーが発生した。
(正確にとっておくのを忘れたので雰囲気です)

/opt/Xilinx/14.6/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/lib/libppl_c.so.2)
/opt/Xilinx/14.6/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl_c.so.2)
/opt/Xilinx/14.6/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/lib/libppl_c.so.2)
/opt/Xilinx/14.6/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/lib/libppl_c.so.7)
/opt/Xilinx/14.6/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl_c.so.7)
/opt/Xilinx/14.6/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/lib/libppl_c.so.7)
/opt/Xilinx/14.6/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl_c.so.4)

このエラーは次のページを参考に解決した。

http://ubuntuforums.org/showthread.php?t=808045

Xilinxのlibstdc++をSystemのシンボリックリンクへ変更

http://yuranos.blog11.fc2.com/blog-entry-200.html

/usr/libをパスに追加

正直パスの設定な気もするが。。。詳しい人は教えてください。


2013年2月5日火曜日

FPGAのシングルイベントアップセット(SEU)回避方法について

シングルイベントアップセット(SEU)についてはこちら


仕事でFPGAのコンフィグレーションメモリにSEU対策を導入した時に遭遇した問題のメモ

ターゲットは次の通り
  Spartan6LX150 + ISE 13.4 + SEM IP

SEU対策をSpratan6に導入する方法は次の2つ

  1.FPGAのCRCチェック回路の利用
    各種のPOST_CRC制約をucfに記述するだけでOK。
    詳細はコンフィグレーションガイドに記載があります。(たしか)
    これによってINIT_Bなどの端子にエラー状態が表示されるようになる。

  2.SEM IPを利用する
    SEM IP はSoft Error Mitigationをcoregenで探せば見つかります。
    リソースを消費するものの上記HWによるものよりもエラー検知率が高く、
    エラー挿入やECCによるエラー訂正も可能となっております。
    
ここで私が考えたのは1.のHWによるCRCチェックの動作試験に2.のSEM IPを用いようとしました。
ところが、この二つを同時に動作させるとなぜかCRCエラーを検知していないのに、
INIT_Bの端子信号がLowになりっぱなしという現象が発生。

結論から言うとコンフィグレーションメモリにアクセスするためのICAPが競合し、
この両者は同時に利用することができないようです。
下記ページではそのカバー率からSEM IPの使用を推奨しているみたいです。


参考にどうぞ。




Kinectのキャリブレーション with libfreenect その1

Kinectのアプリを作成しようとして詰まったことのメモ類

環境は以下の通り。

Ubuntu 12.10 + libfreenect

有名な話ではあるが、HW構成上Kinectはその奥行き画像とRGB画像を取得するカメラが別々のため、取得した情報がずれている。
これを解決するためには両方のカメラから取得した画像の同じ場所を指し示すピクセルを重ねるキャリブレーションの処理が必要となる。
キャリブレーションの方法は以下のページで見つけることができた。

Robot No.8080のブログ
  http://blog.goo.ne.jp/roboz80/e/64560d75b580ec7359dc23cd0a25e9ef

 Nicolas Burrus Homepage
   http://nicolas.burrus.name/index.php/Research/KinectCalibration

ただ、何が起こっているのかいまいち良く分からなかったので下記を参考に読み解いた。

詳解OpenCV
http://www.oreilly.co.jp/books/9784873114132/

詳しくてわかりやすくておすすめです。

まずは11章カメラモデルの基本から
次のようなピンホールカメラを考える



ピンホール平面の中心に穴が開いており画像平面に結像させるというものである。
ピンホール平面の中心は投影中心とも言われ、各々の方向から1本の光線しか通さないと仮定すれば(穴が十分に小さければ)画像平面、すなわち撮像素子やフィルムを置く平面での写す物体の大きさはその構成から求まる焦点距離のみによって決定され、この時常に像は焦点があった状態にある。
その像の大きさは相似図形から求める事ができる。

    -y =  f ( Y/ Z)

画像平面を物体側に持ってくると座標は-1倍されて次のような図になる。
(後のため、見やすくするためと本には書いてあるが、確かに見やすい)


結果として実際の世界の物体の距離を(X,Y,Z)とした場合、画像平面状への写像は(x,y)となり、
その関係は次の式で表されることとなる。

  x = f (X / Z)
  y = f (Y / Z)

ただし、これは画像平面の中心が光軸と一致している場合の話で、実際にはここに誤差が生じる。
すなわち x = xscreen + cx, y = yscreen + cyとなる。これを上の式に当てはめると次の通り。

  xscreen = f ( X / Z ) + cx
  yscreen = f ( Y / Z ) + cy

実際にはxscreen, yscreenはピクセル単位なので、
fは焦点距離で本ではfx,fyと分けられているが、
これは焦点距離の話をしてから導入する。

うーん、ほとんど本の内容を咀嚼した結果だが、
こういうのはブログじゃないほうがいいのかな。よくわからん。
問題あれば削除しますので誰か教えてください。




2012年10月27日土曜日

PlanAheadでのChipscopeの扱い方

PlanAheadでChipscopeを入れ込む方法について迷ったのでメモ。
PlanAhead UserGuide(英語版)389ページあたりに使い方が書いてあったのでこれを参考にした。

まず、従来のISEでは大きく分けてChipscopeの入れ方は2つの種類が存在した。

 ・IPカタログからICONコアとILAコアをデザインにインスタンシエートして合成・観測する
 ・CoreInserterを使用し、Synthesize終了後のデザインと統合させる

PlanAheadのソース追加画面でCoreInserterできるものが無かったので、調べた結果を次に記載する。
なお、2番目の項目に相当する方法についてここでは記載を行う。


2012年9月17日月曜日

ZedboardをISE14.2でSDブートする方法

Zedboardが届いたのでチュートリアルを行った。
SDカードから読み出す方法がZedboard_boot_guide_IDS14_1とは異なる部分があったので、メモする。

ISE14.1ではOutput fileとなっているところがISE14.2ではフォルダとなっている。



ファイル選択をチュートリアル通り行ってフォルダ指定すると、
指定した場所にはbifファイルとbin,mcsファイルが保存されている。
binファイルをリネームしてBOOT.BINとしてSDカードに保存するとZedboardを動作させることができた。



2012年7月21日土曜日

実践Metasploitを購入して読書中。
この本は次のマシンが必要となっている。
  • Back | Trackの動作するマシン
  • Windows XP Pro SP2
残念ながら我が家にはWindows XP のhomeエディションしかなかったのでASP.NETを動作させて脆弱なWebアプリケーションを動作させるのに苦労した。
以下に最終的に行うべきことをメモする。