First initialize the NAND. The parameters are a structure, model number, address for transferring command, address for transferring address and address for transferring data.
nand_flash_raw_initialize(&nf_raw, 0, cmd_address, addr_address, data_address)
The information related to the NAND memory is stored in the structure. We can get the required parameters from this structure.
mem_size = nand_flash_model_get_device_size_in_bytes(&nf_raw.model);
block_size = nand_flash_model_get_block_size_in_bytes(&nf_raw.model);
num_block = nand_flash_model_get_device_size_in_blocks(&nf_raw.model);
page_size = nand_flash_model_get_page_data_size(&nf_raw.model);
pages_per_block = nand_flash_model_get_block_size_in_pages(&nf_raw.model);
The function used to erase ith block is
nand_flash_raw_erase_block(&nf_raw, i)
To write data to a block, use
nand_flash_raw_write_page(&nf_raw, block, page, write_buffer, 0)
and to read
nand_flash_raw_read_page(&nf_raw, block, page, read_buffer, 0);
To check whether two data are equal, use
memcmp(read_buffer, write_buffer, sizeof(write_buffer));