@@ -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