[Suzaku:01454] PLBv46_IPIFのバースト転送

Yasuhiko Ito email@hidden
2009年 4月 3日 (金) 17:48:20 JST


いつもお世話になっております
核融合研の伊藤と申します。

PLBバス用のスレーブIPIFでのバースト転送についてご教授ください。

--- 目的 ---
SZ410でSDRAM上のLinuxの動作メモリ領域を1/2にしまして、残り半分の32MBに
カウンタから計測データを格納し、LAN経由でデータを吸い上げようと
計画しています。

--- 経過 ---
メモリ領域の半減はhermitの書き換えのみを行い、mpmc_sz410
は変更を加えていません。

組込マイコンの経験が少ないので、まず勉強のためstarter-kitのスロット
マシン用のドライバを改造し、アプリ側から32MBの全メモリ領域へデータを
読書きするドライバを作成しました。カウンタ部は、まずテスト用に
ウイザードで作成したplb_v46_slave_burst相当のIPIFのみで代用しています。

まずは作成したIPIFからメモリへ4バイトずつのシングル転送を32MB分繰り返す
テストを行い、メモリへの転送ができていることを確認しました。

実機ではカウンタの計数値合計16バイトを1us毎にラッチし、メモリへ
転送します。その際シングル転送では遅いのでDMAかバースト転送が必要
ではないかと思います。DMAは入門者には敷居が高そうなので、まずバースト
転送を試みようと考えました。

-----ここで質問させてください。---------
バースト転送の場合、ドライバ側からIPIFへBus2IP_burst, Bus2IP_burstlength
が与えられて回路側でバースト転送への対応を行うようですが、これらの信号
をドライバでアクティブにする方法が分かりません。

ドライバから4バイトより大きなデータを扱いたい指令をIPIFに与える事が
できればよいのでしょうか? 4バイトまでの入出力関数まではあるようなの
ですが。そもそも、このような方法は間違いなのでしょうか?

-Linux環境はATEDでlinux-2.6.18を使用
-参考書はLinuxデバイスドライバプログラミング(softbank)
です。

よろしくお願い申し上げます。

                 伊藤




suzaku メーリングリストの案内