組み込みシステムの DMA とインターフェイスするプラットフォーム ドライバーを作成しようとしています。Zedboard とザイリンクスの AXI DMA IP を使用しています。ただし、エラーは Linux カーネルに関連していると思います。
tx/rx
DMA 用のチャネルを取得するために、Linux にはdma_request_channel
関数が用意されています。この関数は、DMA と一致する必要があるフィルターとフィルター パラメーターを使用します。この関数は、システムで使用可能なすべての DMA のリストを取得し、フィルターを使用して目的の DMA に一致させます。ただし、これは利用可能なすべての DMA を取得することはできず、1 つしか取得できないようです。ARM コアには、独自の PL330 ハードが付属していIP DMA
ます。それはそれが見る唯一のものです。
カーネル コードは非常に複雑で、ここのリスト ヘッダー ファイルでスタックしていることを理解できません。
誰かが何を説明できLIST_HEAD_INIT
ますか?それはどんなC
構文ですか?
ハードウェア周辺機器を OS から認識できるようにする必要がありますか? デバイスツリーがそれを処理すると思い、デバイスツリーに含めました。get_platform_resources API を使用して、このベース アドレスを取得することもできます。