インテル® FPGA IPの汎用シリアル・フラッシュ・インターフェイスのユーザーガイド

ID 683419
日付 4/10/2023
Public
ドキュメント目次

1.9.1. ドライバーのAPI

表 9.  intel_gsfi_get_info
プロトタイプ: alt_qspi_controller_get_info(alt_flash_dev *fd, flash_region **info, int *number_of_regions)
インクルード <intel_generic_serial_flash_interface_top.h>
パラメーター:
  • fd – 一般的なフラッシュデバイス構造へのポインター
  • info - フラッシュ領域へのポインター
  • number_of_regions - 領域数へのポインター
戻り値: 成功の場合は0を返し、それ以外の場合は次を返します。
  • -EINVALは無効な引数
  • -EIOはハードウェアの問題の可能性がある場合
説明 フラッシュデバイスに関する情報を提供します。フラッシュメモリーオフセット、フラッシュメモリーサイズ、フラッシュデバイスの数、セクターの数、およびセクターサイズの値を返します。
表 10.  intel_gsfi_read
プロトタイプ: alt_qspi_controller_read(alt_flash_dev *flash_info, int offset, void* dest_addr, int length)
インクルード <intel_generic_serial_flash_interface_top.h>
パラメーター:
  • flash_info – フラッシュデバイス構造へのポインター
  • オフセット–フラッシュアドレス
  • dest_addr – 宛先バッファー
  • 長さ–読み取られたデータのサイズ
戻り値: 成功の場合は0を返し、それ以外の場合は次を返します。
  • -EINVALは無効な引数
  • -ENODEVはハードウェアの問題の可能性がある場合
説明 選択したアドレスからデータを読み取ります。この関数は memcpy_s (altera_safeclib)フラッシュ内のデータをコピーし、それを宛先バッファに渡します。
表 11.  intel_gsfi_erase_block
プロトタイプ: alt_epcs_flash_erase_block(alt_flash_dev* flash_info, int block_offset)
インクルード <intel_generic_serial_flash_interface_top.h>
パラメーター:
  • flash_info – 一般的なフラッシュデバイス構造へのポインター
  • block_offset - 消去するセクターのフラッシュの始まりからのバイトでアドレス指定されたオフセット
戻り値: 成功した場合は 0 を返し、それ以外の場合は次を返します。
  • EINVAD for invalid argument
  • ENODEV for no device detected
  • EIO for erase failed and sector might be protected
  • ETIME for timeout after Flash_Timeout
説明 単一のフラッシュセクターを消去します。
表 12.  intel_gsfi_write_block
プロトタイプ alt_qspi_controller_write_block(alt_flash_dev *flash_info, int block_offset, int data_offset, const void *data, int length)
インクルード <intel_generic_serial_flash_interface_top.h>
パラメーター:
  • flash_info – 一般的なフラッシュデバイス構造へのポインター
  • block_offset – 書き込みを行うセクターのフラッシュの始まりからのバイトでアドレス指定されたオフセット
  • data-offset – メモリーへの書き込みのバイトオフセット (アライメントされていないアクセス)
  • data – 書き込まれるデータ
  • length – 書き込みのサイズ
戻り値

成功の場合は0を返し、それ以外であれば失敗です。

  • 無効な引数の場合はEINVAL
  • デバイスが検出されない場合の ENODEV
  • 書き込みのEIOが失敗し、セクターが保護されている可能性があります。
  • Flash_Timeout後のタイムアウトの ETIME
説明 データの1ブロック/セクターをフラッシュに書き込みます。書き込みの長さは隣接するセクターに波及することはできません。関数はアドレスが空であると想定します。そうでない場合は、最初にアドレスを消去する必要があります。
表 13.  intel_gsfi_write
プロトタイプ alt_qspi_controller_write (alt_flash_dev *flash_info, int offset, const void *src_addr, int length)
インクルード <intel_generic_serial_flash_interface_top.h>
パラメーター:
  • flash_info – 一般的なフラッシュデバイス構造へのポインター
  • offset - フラッシュメモリーへの書き込みのバイトオフセット (アライメントされていないアクセス)
  • src_addr – ソースバッファー
  • length – 書き込みのサイズ
戻り値 成功した場合は 0 を返し、それ以外の場合:
  • EINVAL for invalid argument
  • ENODEV for no device detected
  • EIO for write failed and sector might be protected
  • ETIME for timeout after Flash_Timeout
説明 選択されているアドレスでフラッシュにデータをプログラミングします。この関数は、必要に応じてブロックを自動的に消去します。
表 14.  intel_gsfi_lock
プロトタイプ: alt_qspi_controller_lock(alt_flash_dev *flash_info, alt_u32 sectors_to_lock)
インクルード: <intel_generic_serial_flash_interface_top.h>
パラメーター:
  • flash_info – 一般的なフラッシュデバイス構造へのポインター
  • ectors_to_lock – ブロック保護設定
    • ビット 4 : トップ/ボトム ビット (TB) またはブロック保護ビット 4 (BP4)
    • ビット 3 : BP3
    • ビット 2 : BP2
    • ビット 1 : BP1
    • ビット 0 : BP0
戻り値: 成功した場合は 0 を返し、それ以外の場合:
  • 無効な引数の EINVAL
  • デバイスが検出されない場合の ENODEV
  • ワンタイム プログラマブル (OTP) TB ビット書き込みの ENOLCK が失敗しました
  • セクター保護の EIO が失敗しました
  • ETIME for timeout after Flash_Timeout
説明 フラッシュ セクタの範囲に対してブロック保護を実行します。保護されたフラッシュ セクタは、書き込みまたは消去できません。保護領域の定義については、フラッシュ デバイスのデータシートを参照してください。
表 15.  intel_gsfi_chip_select
プロトタイプ: intel_gsfi_chip_select (intel_gsfi_dev *flash_info, int flash_device)
インクルード <intel_generic_serial_flash_interface_top.h>
パラメーター:
  • flash_info – 一般的なフラッシュデバイス構造へのポインター
  • flash_device - フラッシュ デバイスの選択
    • 0x0 : 最初のデバイス
    • 0x1 : 2 番目のデバイス
    • 0x2 : 3 番目のデバイス
戻り値: 成功の場合は0を返し、それ以外の場合は次を返します。
  • -EINVALは無効な引数
  • -ENODEVはハードウェアの問題の可能性がある場合
説明 フラッシュ・デバイスの選択
表 16.  intel_gsfi_config
プロトタイプ: intel_gsfi_config (intel_gsfi_dev *flash_info, gsfi_config *setting)
インクルード <intel_generic_serial_flash_interface_top.h>
パラメーター:
  • flash_info – 一般的なフラッシュデバイス構造へのポインター
  • setting - pointer to the configuration structure
戻り値: 成功の場合は0を返し、それ以外の場合は次を返します。
  • -EINVALは無効な引数
  • -ENODEVはハードウェアの問題の可能性がある場合
説明 構成:
  • tSHSL (CS ハイ時間) 値 10
  • CS デアサート (CS アクティブ・ホールド・タイム) 値10
  • CS アサート (CS アクティブ セットアップ時間) 値10
  • ボーレート除数値10
  • クワッド I/O モードをサポートするフラッシュ11
10 入力範囲は「1.5 レジスターマップ」の各レジスターを参照してください。
11 1 にアサートすることでこの機能を有効にし、それ以外の場合は 0 で無効にします。