エンベデッド・ペリフェラルIPユーザーガイド

ID 683130
日付 9/21/2020
Public
ドキュメント目次
1. 概要 2. Avalon® -ST Multi-Channel Shared Memory FIFOコア 3. Avalon® -STシングルクロックFIFOコアおよびデュアルクロックFIFOコア 4. Avalon® -STシリアル・ペリフェラル・インターフェイス・コア 5. SPIコア 6. SPI Slave to Avalon® Master Bridgeコア/JTAG to Avalon® Master Bridgeコア 7. インテル eSPIスレーブコア 8. eSPI to LPCブリッジコア 9. イーサネットMDIOコア 10. インテルFPGA 16550互換UARTコア 11. UARTコア 12. JTAG UARTコア 13. インテル FPGA Avalon® Mailboxコア 14. インテル FPGA Avalon® ミューテックス・コア 15. インテル FPGA Avalon® I2C (Master) コア 16. インテル FPGA I2C Slave to Avalon® -MM Master Bridgeコア 17. インテルFPGA Avalon® コンパクト・フラッシュ・コア 18. EPCS/EPCQAシリアル・フラッシュ・コントローラー・コア 19. インテルFPGAシリアル・フラッシュ・コントローラー・コア 20. インテルFPGAシリアル・フラッシュ・コントローラーIIコア 21. インテルFPGA汎用クアッドSPIコントローラー・コア 22. インテルFPGA汎用クアッドSPIコントローラーIIコア 23. インターバル・タイマー・コア 24. インテルFPGA Avalon FIFOメモリーコア 25. オンチップメモリー (RAMおよびROM) コア 26. Optrex 16207 LCDコントローラー・コア 27. PIOコア 28. PLLコア 29. DMAコントローラー・コア 30. Modular Scatter-Gather DMAコア 31. Scatter-Gather DMAコントローラー・コア 32. SDRAMコントローラー・コア 33. トライステートSDRAMコア 34. Video Sync GeneratorコアとPixel Converterコア 35. インテル FPGA Interrupt Latency Counterコア 36. パフォーマンス・カウンター・ユニット・コア 37. ベクトル割り込みコントローラー・コア 38. Avalon® -STデータ・パターン・ジェネレーター・コアとデータ・パターン・チェッカー・コア 39. Avalon® -STテスト・パターン・ジェネレーター・コアとテスト・パターン・チェッカー・コア 40. システムIDペリフェラル・コア 41. Avalon® Packets to Transactions Converterコア 42. Avalon® -STマルチプレクサー・コアとデマルチプレクサー・コア 43. Avalon® -ST Bytes to Packets ConverterコアとPackets to Bytes Converterコア 44. Avalon® -ST Delayコア 45. Avalon® -STラウンド・ロビン・スケジューラー・コア 46. Avalon® -ST Splitterコア 47. Avalon® -MM DDR Memory Half Rate Bridgeコア 48. インテル FPGA GMII to RGMIIコンバーター・コア 49. インテル FPGA MII to RMIIコンバーター・コア 50. インテルFPGA HPS GMII to TSE 1000BASE-X/SGMII PCSブリッジコア 51. インテル FPGA HPS EMAC to Multi-rate PHY GMIIアダプターコア 52. インテル FPGA MSI to GICジェネレーター・コア

29.4.1. HALシステム・ライブラリーのサポート

インテルが提供しているドライバーにはHAL DMAデバイスドライバーが実装されています。これは、 Nios® IIシステムに向けたHALシステム・ライブラリーに統合されます。HALユーザーは、レジスターに直接アクセスするのではなく、広く利用されているHAL APIを介してDMAコントローラーにアクセスします。

プログラムでHALデバイスドライバーを使用してDMAコントローラーにアクセスする場合、デバイスのレジスターに直接アクセスすると、ドライバーの正しい動作が妨げられます。

HAL DMAドライバーは、DMAプロセスの両端を提供します。ドライバーは、受信チャネル (alt_dma_rxchan) および送信チャネル (alt_dma_txchan) として登録されます。 Nios® II Software Developer’s Handbookには、HALシステム・ライブラリーとDMAデバイスの使用法の完全な詳細が記載されています。

ioctl() の操作

ioctl() 操作要求は受信チャネルと送信チャネルの両方に対して定義されます。これにより、DMAコントローラーのハードウェアに依存する側面を制御することができます。2つのioctl() 関数は、受信側のドライバーと送信側のドライバーに定義されており、それぞれalt_dma_rxchan_ioctl() およびalt_dma_txchan_ioctl() になります。次の表は、利用可能な操作を示しています。これらは送信チャネルと受信チャネルの両方に有効です。

表 281.  alt_dma_rxchan_ioctl() およびalt_dma_txchan_ioctl() の操作
要求 意味
ALT_DMA_SET_MODE_8 8ビット単位でデータを転送します。パラメーターのargは無視されます。
ALT_DMA_SET_MODE_16 16ビット単位でデータを転送します。パラメーターのargは無視されます。
ALT_DMA_SET_MODE_32 32ビット単位でデータを転送します。パラメーターのargは無視されます。
ALT_DMA_SET_MODE_64 64ビット単位でデータを転送します。パラメーターのargは無視されます。
ALT_DMA_SET_MODE_128 128ビット単位でデータを転送します。パラメーターのargは無視されます。
ALT_DMA_RX_ONLY_ON (1) DMAのレシーバーをストリーミング・モードに設定します。この場合、データは単一の位置から継続的に読み出されます。パラメーターのargは、読み出しが行われるアドレスを指定します。
ALT_DMA_RX_ONLY_OFF (1) 受信チャネルのストリーミング・モードをオフにします。パラメーターのargは無視されます。
ALT_DMA_TX_ONLY_ON (1) DMAのトランスミッターをストリーミング・モードに設定します。この場合、データは単一の位置に継続的に書き込まれます。パラメーターのargは、書き込みが行われるアドレスを指定します。
ALT_DMA_TX_ONLY_OFF (1) 送信チャネルのストリーミング・モードをオフにします。パラメーターのargは無視されます。
注意
  1. これらのマクロ名は、 Nios® IIエンベデッド・デザイン・スイート (EDS) のバージョン1.1で変更になりました。古い名称 (ALT_DMA_TX_STREAM_ONALT_DMA_TX_STREAM_OFFALT_DMA_RX_STREAM_ONALT_DMA_RX_STREAM_OFF) は引き続き有効ですが、新しいデザインでは新しい名称を使用する必要があります。

制限

現在、インテルが提供しているドライバーでは、64ビットおよび128ビットのDMAトランザクションをサポートしていません。

この関数はスレッドセーフではありません。複数のスレッドからDMAコントローラーにアクセスする場合は、セマフォーまたはミューテックスを使用して、いずれの場合もこの関数内で1つのスレッドのみが実行されるようにする必要があります。