0

組み込みシステムの DMA とインターフェイスするプラットフォーム ドライバーを作成しようとしています。Zedboard とザイリンクスの AXI DMA IP を使用しています。ただし、エラーは Linux カーネルに関連していると思います。

tx/rxDMA 用のチャネルを取得するために、Linux にはdma_request_channel関数が用意されています。この関数は、DMA と一致する必要があるフィルターとフィルター パラメーターを使用します。この関数は、システムで使用可能なすべての DMA のリストを取得し、フィルターを使用して目的の DMA に一致させます。ただし、これは利用可能なすべての DMA を取得することはできず、1 つしか取得できないようです。ARM コアには、独自の PL330 ハードが付属していIP DMAます。それはそれが見る唯一のものです。

カーネル コードは非常に複雑で、ここのリスト ヘッダー ファイルでスタックしていることを理解できません。

誰かが何を説明できLIST_HEAD_INITますか?それはどんなC構文ですか?

ハードウェア周辺機器を OS から認識できるようにする必要がありますか? デバイスツリーがそれを処理すると思い、デバイスツリーに含めました。get_platform_resources API を使用して、このベース アドレスを取得することもできます。

4

1 に答える 1