Loading...
/* * Copyright (c) 2016 Intel Corporation. * * SPDX-License-Identifier: Apache-2.0 */ #include <zephyr.h> #include <flash.h> #include <device.h> #include <stdio.h> #define FLASH_TEST_REGION_OFFSET 0xff000 #define FLASH_SECTOR_SIZE 4096 #define TEST_DATA_BYTE_0 0x55 #define TEST_DATA_BYTE_1 0xaa #define TEST_DATA_LEN 2 void main(void) { struct device *flash_dev; uint8_t buf[TEST_DATA_LEN]; printf("\nW25QXXDV SPI flash testing\n"); printf("==========================\n"); flash_dev = device_get_binding(CONFIG_SPI_FLASH_W25QXXDV_DRV_NAME); if (!flash_dev) { printf("SPI flash driver was not found!\n"); return; } /* Write protection needs to be disabled in w25qxxdv flash before * each write or erase. This is because the flash component turns * on write protection automatically after completion of write and * erase operations. */ printf("\nTest 1: Flash erase\n"); flash_write_protection_set(flash_dev, false); if (flash_erase(flash_dev, FLASH_TEST_REGION_OFFSET, FLASH_SECTOR_SIZE) != 0) { printf(" Flash erase failed!\n"); } else { printf(" Flash erase succeeded!\n"); } printf("\nTest 2: Flash write\n"); flash_write_protection_set(flash_dev, false); buf[0] = TEST_DATA_BYTE_0; buf[1] = TEST_DATA_BYTE_1; printf(" Attempted to write %x %x\n", buf[0], buf[1]); if (flash_write(flash_dev, FLASH_TEST_REGION_OFFSET, buf, TEST_DATA_LEN) != 0) { printf(" Flash write failed!\n"); return; } if (flash_read(flash_dev, FLASH_TEST_REGION_OFFSET, buf, TEST_DATA_LEN) != 0) { printf(" Flash read failed!\n"); return; } printf(" Data read %x %x\n", buf[0], buf[1]); if ((buf[0] == TEST_DATA_BYTE_0) && (buf[1] == TEST_DATA_BYTE_1)) { printf(" Data read matches with data written. Good!!\n"); } else { printf(" Data read does not match with data written!!\n"); } } |