ラベル Xilinx の投稿を表示しています。 すべての投稿を表示
ラベル Xilinx の投稿を表示しています。 すべての投稿を表示

2020年2月5日水曜日

ultra96v2_oobにros2-dashingを導入する方法その1〜

meta-ros導入のメモu-bootやqemu-devicetreeの設定変更など書き散らしたものを整理していきます。

環境作成するための方法をまとめて後で使用できるようにすることが目的です。
petalinuxとvitisのインストールは省略し、Vivadoプロジェクトを作成した後からの続きの手順を記載します。




petalinuxのプロジェクトを作成します。ただし、sstateはmeta-rosの導入時に問題が出たので設定しません。buildはまだです。

次にu-bootのconfig_sys_text_baseを修正します。
パッチファイル作成し、以下に保存します。

<petalinux_prj>/project-spec/meta-user/recipes-bsp/u-boot/files/config_sys_text_base_amend.patch

<petalinux_prj>/project-spec/meta-user/recipes-bsp/u-boot/u-boot-xlnx_%.bbappendを以下の通りにしてパッチを追加します。


FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

SRC_URI += "file://platform-top.h"
SRC_URI += "file://bsp.cfg"
SRC_URI += "file://config_sys_text_base_amend.patch"


u-bootの次はqemu用のhw-dtbを修正するパッチを当てます。
結局petalinux-buildではrosを導入できなかったのでzcu102のqemu用dtbを使用すればいいような気もするけど、せっかくなので。
ファイルを置く場所は<petalinux_prj>/project-spec/meta-user/recipes-devtools/qemu/files/0001-enable-gems-for-zcu100-arm.dts.patchです。
後述するbitbakeを使用してbitbake -e qemu-devicetrees | grep ^FILEでレベルを合わせてmeta-userに配置することで適用できます。
パッチの内容は以下のようにgemのinvalidをコメントアウトしているだけです。
これでqemu動作させた際にgem3を使用して通信可能にし、rosの模擬動作やgazeboとの接続ができるようになるはずです。

From 4b5e8412beaff0a773ac4c960344e661e460ac65 Mon Sep 17 00:00:00 2001
From: Akira Nishiyama <xxxx@xxx.xxx>
Date: Wed, 29 Jan 2020 08:04:19 +0900
Subject: [PATCH] enable gems for zcu100-arm.dts

---
 zcu100-arm.dts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/zcu100-arm.dts b/zcu100-arm.dts
index 4eee783..28351dc 100644
--- a/zcu100-arm.dts
+++ b/zcu100-arm.dts
@@ -40,6 +40,7 @@
 };

 /* Invalidate all GEMs as there is no Ethernet */
+/*
 &gem0 {
     compatible = "invalid";
 };
@@ -55,7 +56,7 @@
 &gem3 {
     compatible = "invalid";
 };
-
+*/
 &ps7_qspi_0 {
     qspi-flash@0 {
         compatible = "n25q128a13";
-- 
2.17.1

この後はpetalinuxツールではなくyoctoを使用していくための設定を行うのと、
meta-ros導入時に発生したtaskhash mismatchの問題に対応するためにソースからビルドしていくように設定します。
長くなるので続く



2014年1月13日月曜日

Amazon EC2を使ってXilinx FPGAの合成用サーバを作ってみたときのメモ

自宅にあるPCでは遅くてイライラするかもしれないと思い、クラウドサーバの使用についても検討をしようとして実験した結果について記載。

インスタンスの作成や、起動用イメージAmazon Machine Image(AMI)の作成についてはたくさん記事があると思いますのですっ飛ばします。

今回やろうとしたことはサーバとしてスポットで演算能力を借りることです。
ここで必要になってくるのが、XilinxのツールがインストールされたPCですが、
AmazonのHow Toは正しいのだがいまいちピンと来なくって大変だった。
今回は持っているライセンスの関係上バージョン14.6をインストールしたのだが、
旧プロジェクトのアップコンバージョンがうまくいかなかったようでデータ自体は削除した。

行ったことは次の通り
 ・通常通りインスタンスを作成、とりあえずはm1.smallにて作成することに
 ・Elastic Block Storage(EBS)で作ったブート用ドライブにISEを頑張ってインストール
  (環境はWindows Server 2008 R2 SP1, EBSのサイズは40Gを用意、これだとぎりぎりすぎるからもう少し増やしてもいいかも)
 ・インスタンスを停止し、Create Imageを実行してブート用イメージを保存してAMIとして使えるようにした。
 ・インスタンスとAMI作成用EBSを削除

今後は以下の運用にすることに
 ・サーバで合成したい場合は適切な環境で先ほどのAMIからインスタンスを作成
 ・プロジェクトをサーバにアップデート
 ・合成を実行
 ・合成結果をダウンロード
 ・インスタンス削除

これで費用はざっくりとAMI用のスナップショットの保管分と、サーバマシンを駆動して実行した分だけで済む。ライセンスさえあれば複数のマシンを動かして結果を得ることができるだろう。

インスタンスは消えたりするので、
ライセンスの導入には注意が必要なのは言うまでもないが、気が付いたことをメモ。

 ・ネットワークカードのNICはインスタンスごとに生成される。(自分に割り当てられていれば変更は可能っぽいが、インスタンスをTerminateした際に消去されるともう二度と手に入らないと考えたほうがよい)
 ・Disk SerialはAMIでインスタンスを新たに生成しても同じっぽい。

以上からTerminateさえしなければNICでもDiskSerialでも構いはしないが、
EBSの保管容量までケチろうとするとDiskSerialにしておくとよいかもしれない。


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の使用を推奨しているみたいです。


参考にどうぞ。




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を動作させることができた。