FC2カウンター FPGAの部屋 2013年02月18日
FC2ブログ

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

FPGAの部屋

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

ZedBoard Linux のフレームバッファにカメラ画像を表示14(ChipScope波形)

ブログ休止宣言をした後でなんですが、ChipScope Pro で前回の波形と比べてみたので、それを書いておきます。

前回、Camera Controller とBitmap Display Controller のレイテンシを測定したのは、Linux が動作していない状態だった。今回は、Linuxが動作して、HDMIにフルHDの画像を表示したり、Linuxが動作していて、DDR3 SDRAMの帯域を使っている状態だ。それで、どのくらい前回からレイテンシが伸びているかを測定する。

まずは、Camera Controller から見ていこう。
Write トランザクションは、0x1A000000番地に、0x00A0845800604C30 をWriteしている。最後のWriteデータ転送が終了してから、MON_AXI_BVALID がアサートされるまでに、54クロック経過していた。
ZedBoard_Linux_63_130209.png

Linuxが動作している状態では、63クロック経過している。
ZedBoard_Linux_99_130218.png

9クロック、9 x 10nsec = 90nsec レイテンシが増加している。

次に、Bitmap Display Controller を見ていこう。
アドレスを発行してからReadデータ転送を始めるまでのレイテンシは63クロックだった。
ZedBoard_Linux_65_130209.png

Linux が動作している状態では、73クロックになっていた。
ZedBoard_Linux_100_130218.png

10クロック、100nsec 増加していた。
アドレスを発行してからReadデータ転送を始めるまでのレイテンシは、69クロックから73クロックまでの間でばらつくようだ。
  1. 2013年02月18日 05:11 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:0

ZedBoard Linux のフレームバッファにカメラ画像を表示13(未完成)

前回、カメラ画像を表示するソフトウェアを追加したLinuxイメージをSDカードに追加して、電源ONでLinuxがブートし、カメラ画像を自動的に表示することが出来た。だが実は、それにはバグが有った。
GPIOの出力を1にして、Camera Controller と Bitmap Display Controller のリセットを解除して動作させたところ、Linuxコンソールの表示がおかしくなってしまった事があった。この時は、フレームバッファのアドレスを何らかの原因で自作のカメラ表示回路が間違ったのか?と思っていた。でも、”ZedBoard Linux のフレームバッファにカメラ画像を表示8(カメラ画像表示成功)”で、ChipScope Pro で解析してみたが、きちんと0x1AXXXXXX 番地をアクセスしていた。本来は動作に問題ないはずがバグってしまった。現在のSDカードでカメラ表示回路を生かしている状態でも、確率的に動作する状態と、Linuxが死んでしまう状態になってしまうことがわかった。10回、電源ON時にLinuxが死んでしまうかどうか?を調査した。それを下に示す。X がLinuxが死んでしまう状態になった時、O が正常な状態の時を示す。

XXOOOXXOOO


上の場合は、2/5 の確率でLinux が死んでしまう。たぶん、Linux のフレームバッファはkmalloc() などでアロケートされるのだと思う。それがたまたま0x1A000000 スタートになっただけなのだと思う。条件が違えば、異なるアドレスになると考えられる。元の回路では、AXI VDMAのフレームバッファのアドレスはソフトウェアで変更ができるので、フレームバッファのアドレスを固定する必要はない。Linuxカーネルでフレームバッファを固定アドレスに割り振っていないと考えられる。

次に、フレームバッファにARMプロセッサから黒のカーソルが書かれているようだ。
HDMI画面を見ると、下のように黒いカーソルが見える。(ピンクの矢印の部分)
ZedBoard_Linux_96_130218.jpg

これは点滅していて、時々書かれているようなのだ。この影響は、VGA画面に3本の筋となって現れる。
ZedBoard_Linux_97_130218.jpg

ある一定時間経つと、黒のカーソルがブリンクするのは停止する。VGA画面の3本の線も無くなった。

これらのことから、やはりLinuxカーネルを自分でビルドして、固定アドレスのフレームバッファ領域を確保する必要がありそうだ。
これからLinuxカーネルビルドして、固定アドレスのフレームバッファ領域を確保してみようか?と思っている。何分にもソフトウェアはよくわからないので、だいぶ迷うかもしれない。その際は、よろしくお願いします。

現在使用しているWindows XP 32ビット版にもメモリなどの限界を感じているので、この機会にWindows 7 64ビット版に乗り換える予定です。入れ替え作業をしますので、ブログが書けない可能性が大です。
  1. 2013年02月18日 04:01 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:0