Nios® V プロセッサー・ソフトウェア開発者ハンドブック

ID 743810
日付 7/08/2024
Public
ドキュメント目次

8.7.4.1. フラッシュドライバーの作成

フラッシュ・デバイス・ドライバーは、sys/alt_flash_dev.h で定義された alt_flash_dev 構造体のインスタンスを提供する必要があります。次のコードはその構造を示しています。
struct alt_flash_dev{ alt_llist llist; // internal use only const char* name; alt_flash_open open; alt_flash_close close; alt_flash_write write; alt_flash_read read; alt_flash_get_flash_info get_info; alt_flash_erase_block erase_block; alt_flash_write_block write_block; void* base_addr; int length; int number_of_regions; flash_region region_info[ALT_MAX_NUMBER_OF_FLASH_REGIONS]; alt_flash_lock lock };

最初のパラメーター llist は内部での使用を目的としているため、常に値 ALT_LLIST_ENTRY に設定する必要があります。name は、HAL ファイルシステム内のデバイスの位置であり、system.h で定義されているデバイスの名前です。

write_blockopen である 7 つのフィールドは、次の関数へのアプリケーション API 呼び出しの背後にある機能を実装する関数ポインターです。

  • alt_flash_open_dev()
  • alt_flash_close_dev()
  • alt_write_flash()
  • alt_read_flash()
  • alt_get_flash_info()
  • alt_erase_flash_block()
  • alt_write_flash_block()
  • alt_flash_lock()

ここでは、

  • base_addr パラメーターはフラッシュメモリーのベースアドレスです。
  • length はフラッシュのサイズ (バイト単位)です。
  • number_of_regions はフラッシュ内の消去領域の数です。
  • region_info にはフラッシュデバイス内のブロックの位置とサイズに関する情報が含まれています。

flash_region 構造体のフォーマットの詳細については、フラッシュデバイスの使用ハードウェア抽象化レイヤーを使用したプログラムの開発 を参照してください。

一部のフラッシュデバイスでは、実行時に領域の数とそのコンフィグレーションを読み取ることができます。他のすべてのフラッシュデバイスでは、これら 2 つのフィールドはコンパイル時に定義する必要があります。