@@ -498,6 +498,53 @@ ZTEST(flash_sim_api, test_flash_fill)
498498 }
499499}
500500
501+ ZTEST (flash_sim_api , test_flash_mmap )
502+ {
503+ const uint8_t out [] = "Hello world!!!\n" ;
504+ uint8_t in [64 ];
505+ uint8_t * p ;
506+ uint64_t size ;
507+ int rc ;
508+ #if defined(CONFIG_FLASH_SIMULATOR_EXPLICIT_ERASE )
509+ rc = flash_erase (flash_dev , FLASH_SIMULATOR_BASE_OFFSET ,
510+ FLASH_SIMULATOR_FLASH_SIZE );
511+ zassert_equal (0 , rc , "flash_erase should succeed" );
512+ #else
513+ rc = flash_fill (flash_dev , FLASH_SIMULATOR_ERASE_VALUE ,
514+ FLASH_SIMULATOR_BASE_OFFSET ,
515+ FLASH_SIMULATOR_FLASH_SIZE );
516+ zassert_equal (0 , rc , "flash_fill should succeed" );
517+ #endif
518+ zassert_ok (flash_mmap (flash_dev , (void * * )& p , & size , FLASH_MMAP_F_READ ));
519+ zassert_ok (flash_write (flash_dev , FLASH_SIMULATOR_BASE_OFFSET , out ,
520+ sizeof (out )));
521+
522+ zassert_ok (memcmp (p , out , sizeof (out )));
523+
524+ zassert_ok (flash_read (flash_dev , FLASH_SIMULATOR_BASE_OFFSET , in ,
525+ sizeof (out )));
526+ zassert_ok (memcmp (out , in , sizeof (out )));
527+
528+ #if defined(CONFIG_FLASH_SIMULATOR_EXPLICIT_ERASE )
529+ rc = flash_erase (flash_dev , FLASH_SIMULATOR_BASE_OFFSET ,
530+ FLASH_SIMULATOR_FLASH_SIZE );
531+ zassert_equal (0 , rc , "flash_erase should succeed" );
532+ #else
533+ rc = flash_fill (flash_dev , FLASH_SIMULATOR_ERASE_VALUE ,
534+ FLASH_SIMULATOR_BASE_OFFSET ,
535+ FLASH_SIMULATOR_FLASH_SIZE );
536+ zassert_equal (0 , rc , "flash_fill should succeed" );
537+ #endif
538+ zassert_ok (flash_mmap (flash_dev , (void * * )& p , & size , FLASH_MMAP_F_WRITE ));
539+ memset (in , 0 , sizeof (in ));
540+ /* Write via memcpy */
541+ memcpy (p , out , sizeof (out ));
542+ zassert_ok (memcmp (p , out , sizeof (out )));
543+ zassert_ok (flash_read (flash_dev , FLASH_SIMULATOR_BASE_OFFSET , in ,
544+ sizeof (out )));
545+ zassert_ok (memcmp (out , in , sizeof (out )));
546+ }
547+
501548ZTEST (flash_sim_api , test_flash_flatten )
502549{
503550 int rc ;
0 commit comments