[Suzaku:01501] Re: Help:仮想アドレスを物理アドレスに変換

菊地 義和[DNP情報システム] email@hidden
2009年 6月 4日 (木) 23:19:27 JST


yashi様

菊地です。

お返事遅くなりました。

・私の資料の読み方が足りておりませんでした。

下記内容確認いたしました。

dma_alloc_coherent()を使用しビルドしてみましたが
エラーが発生してしまい、実行できません。

次のファイルをインクルードしビルドしております。
#include <asm-microblaze/dma-mapping.h> 

そのヘッダファイル内でエラーが発生しビルドできませんでした。

概ね次のエラー内容です。

dma_map_page(struct device *dev, struct page *page,
	unsigned long offset, size_t size,
	enum dma_data_direction direction)     ←ヘッダファイルのこの記述が
                              すべてエラーになります。

・「enum dma_data_direction 」はWANINGになります
・「direction」はERRORとなります。

ヘッダファイルが不足しているのでしょうか。

開発環境と離れたところにいるため、エラー内容を
正確にお伝えできず、申し訳ありません。
どうぞよろしくお願いします。

以上

----- オリジナルメッセージ -----
送信元: "Yasushi SHOJI" <email@hidden>
To: "SUZAKU general discussion list" <email@hidden>
送信済: 2009年6月4日 9時25分04秒 (GMT+0900) Asia/Tokyo
件名: [Suzaku:01500] Re: Help:仮想アドレスを物理アドレスに変換

At Thu, 4 Jun 2009 08:32:22 +0900 (JST),
菊地 義和[DNP情報システム] <email@hidden> wrote:
> 
> AUTO変数を定義し、DMAを使用するためにその物理アドレスを知りたいのです。

auto(stack)変数は、あまり DMAに使いません。DMAコントローラによりますが、
x86の ISAのように、DMAに使えるアドレス空間が固定されていることがあるか
らです。

Linux device driver の Direct memory accessの章に詳しい説明があります
が、dma_alloc_coherent()を使うのが定石のようです。

ちなみに、stackの物理アドレスを知るには、virt_to_physで、currentが指し
ている thread_infoの物理アドレスを取得して、auto変数の offsetを足して
あげると取れるはずです。

http://hira-consulting.com/wiki/index.php?thread_info%2Flinux2.6
-- 
               yashi
_______________________________________________
suzaku mailing list
email@hidden
http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/suzaku




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