Skip to content

Commit 5f756ca

Browse files
committed
[DeviceDriver][SFUD] Update the 'sf bench' command.
1 parent d180c16 commit 5f756ca

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

components/drivers/spi/spi_flash_sfud.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -684,11 +684,13 @@ static void sf(uint8_t argc, char **argv) {
684684
addr = 0;
685685
size = sfud_dev->chip.capacity;
686686
uint32_t start_time, time_cast;
687-
size_t write_size = SFUD_WRITE_MAX_PAGE_SIZE, read_size = SFUD_WRITE_MAX_PAGE_SIZE;
687+
size_t write_size = SFUD_WRITE_MAX_PAGE_SIZE, read_size = SFUD_WRITE_MAX_PAGE_SIZE, cur_op_size;
688688
uint8_t *write_data = rt_malloc(write_size), *read_data = rt_malloc(read_size);
689689

690690
if (write_data && read_data) {
691-
rt_memset(write_data, 0x55, write_size);
691+
for (i = 0; i < write_size; i ++) {
692+
write_data[i] = i & 0xFF;
693+
}
692694
/* benchmark testing */
693695
rt_kprintf("Erasing the %s %ld bytes data, waiting...\n", sfud_dev->name, size);
694696
start_time = rt_tick_get();
@@ -704,7 +706,12 @@ static void sf(uint8_t argc, char **argv) {
704706
rt_kprintf("Writing the %s %ld bytes data, waiting...\n", sfud_dev->name, size);
705707
start_time = rt_tick_get();
706708
for (i = 0; i < size; i += write_size) {
707-
result = sfud_write(sfud_dev, addr + i, write_size, write_data);
709+
if (i + write_size <= size) {
710+
cur_op_size = write_size;
711+
} else {
712+
cur_op_size = size - i;
713+
}
714+
result = sfud_write(sfud_dev, addr + i, cur_op_size, write_data);
708715
if (result != SFUD_SUCCESS) {
709716
rt_kprintf("Writing %s failed, already wr for %lu bytes, write %d each time\n", sfud_dev->name, i, write_size);
710717
break;
@@ -722,12 +729,13 @@ static void sf(uint8_t argc, char **argv) {
722729
start_time = rt_tick_get();
723730
for (i = 0; i < size; i += read_size) {
724731
if (i + read_size <= size) {
725-
result = sfud_read(sfud_dev, addr + i, read_size, read_data);
732+
cur_op_size = read_size;
726733
} else {
727-
result = sfud_read(sfud_dev, addr + i, size - i, read_data);
734+
cur_op_size = size - i;
728735
}
736+
result = sfud_read(sfud_dev, addr + i, cur_op_size, read_data);
729737
/* data check */
730-
if (memcmp(write_data, read_data, read_size))
738+
if (memcmp(write_data, read_data, cur_op_size))
731739
{
732740
rt_kprintf("Data check ERROR! Please check you flash by other command.\n");
733741
result = SFUD_ERR_READ;

0 commit comments

Comments
 (0)