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

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

7.8.3.3. alt_write_flash_block()

alt_write_flash_block() フラッシュメモリーの 1 つのブロックに書き込みます。プロトタイプは次のとおりです。
int alt_write_flash_block( alt_flash_fd* fd, int block_offset, int data_offset, const void *data, int length )

この関数は、ハンドル fd で識別されるフラッシュ メモリーに書き込みます。 フラッシュデバイスの先頭から block_offset バイトに位置するブロックに書き込みます。この関数は、data が指す位置からフラッシュデバイスの先頭から data_offset バイトの位置に length バイトのデータを書き込みます。

注: これらのプログラムおよび消去機能は、アドレスチェックを実行せず、書き込み操作が次のブロックにまたがるかどうかを検証しません。プログラムまたは消去するブロックに関する有効な情報を渡す必要があります。

詳細設定が可能なフラッシュアクセス API 関数の使用

#include <string.h> #include "sys/alt_flash.h" #include "stdtypes.h" #include "system.h" #define BUF_SIZE 100 int main (void) { flash_region* regions; alt_flash_fd* fd; int number_of_regions; int ret_code; char write_data[BUF_SIZE]; /* Set write_data to all 0xa */ memset(write_data, 0xA, BUF_SIZE); fd = alt_flash_open_dev(EXT_FLASH_NAME); if (fd) { ret_code = alt_get_flash_info(fd, &regions, &number_of_regions); if (number_of_regions && (regions->offset == 0)) { /* Erase the first block */ ret_code = alt_erase_flash_block(fd, regions->offset, regions->block_size); if (ret_code == 0) { /* * Write BUF_SIZE bytes from write_data 100 bytes to * the first block of the flash */ ret_code = alt_write_flash_block ( fd, regions->offset, regions->offset+0x100, write_data, BUF_SIZE ); } } } return 0; }