Skip to content

Commit c2c17be

Browse files
committed
Add new levelx APIs
New APIs -------- - lx_nor_flash_format(): erases nor flash blocks and setup block metadata - lx_nor_flash_open_extended(): same as lx_nor_flash_open() with user data pointer a last argument. - lx_nand_flash_open_extended(): same as lx_nand_flash_open() with user data pointer a last argument. Updates ------- - lx_nor_flash_open(): calls lx_nor_flash_open_extended() with a NULL as last argument - lx_nand_flash_open(): calls lx_nand_flash_open_extended() with a NULL as last argument - regression tests: to call the lx_nor_flash_format() Test results ------------- 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.27 sec 3/3 Test #1: standalone_free_sector_verify_build::levelx_nand_flash_test ........ Passed 6.29 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.29 sec 3/3 Test #1: nor_obsolete_mapping_cache_build::levelx_nand_flash_test ........ Passed 6.58 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.58 sec 3/3 Test #1: nor_obsolete_cache_build::levelx_nand_flash_test ........ Passed 6.67 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.67 sec 3/3 Test #1: nor_mapping_cache_build::levelx_nand_flash_test ........ Passed 6.77 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.78 sec 3/3 Test #1: full_build::levelx_nand_flash_test ........ Passed 6.91 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.91 sec 3/3 Test #1: free_sector_verify_build::levelx_nand_flash_test ........ Passed 7.14 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 7.14 sec 3/3 Test #1: standalone_full_build::levelx_nand_flash_test ........ Passed 7.21 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 7.21 sec 3/3 Test #1: standalone_build::levelx_nand_flash_test ........ Passed 12.05 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 12.06 sec 3/3 Test #1: default_build_coverage::levelx_nand_flash_test ........ Passed 48.78 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 48.81 sec Add new levelx APIs New APIs -------- - lx_nor_flash_format(): erases nor flash blocks and setup block metadata - lx_nor_flash_open_extended(): same as lx_nor_flash_open() with user data pointer a last argument. - lx_nand_flash_open_extended(): same as lx_nand_flash_open() with user data pointer a last argument. Updates ------- - lx_nor_flash_open(): calls lx_nor_flash_open_extended() with a NULL as last argument - lx_nand_flash_open(): calls lx_nand_flash_open_extended() with a NULL as last argument - regression tests: to call the lx_nor_flash_format() Test results ------------- 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.27 sec 3/3 Test #1: standalone_free_sector_verify_build::levelx_nand_flash_test ........ Passed 6.29 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.29 sec 3/3 Test #1: nor_obsolete_mapping_cache_build::levelx_nand_flash_test ........ Passed 6.58 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.58 sec 3/3 Test #1: nor_obsolete_cache_build::levelx_nand_flash_test ........ Passed 6.67 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.67 sec 3/3 Test #1: nor_mapping_cache_build::levelx_nand_flash_test ........ Passed 6.77 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.78 sec 3/3 Test #1: full_build::levelx_nand_flash_test ........ Passed 6.91 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 6.91 sec 3/3 Test #1: free_sector_verify_build::levelx_nand_flash_test ........ Passed 7.14 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 7.14 sec 3/3 Test #1: standalone_full_build::levelx_nand_flash_test ........ Passed 7.21 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 7.21 sec 3/3 Test #1: standalone_build::levelx_nand_flash_test ........ Passed 12.05 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 12.06 sec 3/3 Test #1: default_build_coverage::levelx_nand_flash_test ........ Passed 48.78 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 48.81 sec fix: Write the correct meta data on the block after erase
1 parent 04e385f commit c2c17be

File tree

9 files changed

+1766
-1333
lines changed

9 files changed

+1766
-1333
lines changed

common/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ target_sources(${PROJECT_NAME} PRIVATE
3030
${CMAKE_CURRENT_LIST_DIR}/src/lx_nand_flash_metadata_build.c
3131
${CMAKE_CURRENT_LIST_DIR}/src/lx_nand_flash_metadata_write.c
3232
${CMAKE_CURRENT_LIST_DIR}/src/lx_nand_flash_open.c
33+
${CMAKE_CURRENT_LIST_DIR}/src/lx_nand_flash_open_extended.c
3334
${CMAKE_CURRENT_LIST_DIR}/src/lx_nand_flash_page_ecc_check.c
3435
${CMAKE_CURRENT_LIST_DIR}/src/lx_nand_flash_page_ecc_compute.c
3536
${CMAKE_CURRENT_LIST_DIR}/src/lx_nand_flash_partial_defragment.c
@@ -52,6 +53,8 @@ target_sources(${PROJECT_NAME} PRIVATE
5253
${CMAKE_CURRENT_LIST_DIR}/src/lx_nor_flash_logical_sector_find.c
5354
${CMAKE_CURRENT_LIST_DIR}/src/lx_nor_flash_next_block_to_erase_find.c
5455
${CMAKE_CURRENT_LIST_DIR}/src/lx_nor_flash_open.c
56+
${CMAKE_CURRENT_LIST_DIR}/src/lx_nor_flash_open_extended.c
57+
${CMAKE_CURRENT_LIST_DIR}/src/lx_nor_flash_format.c
5558
${CMAKE_CURRENT_LIST_DIR}/src/lx_nor_flash_partial_defragment.c
5659
${CMAKE_CURRENT_LIST_DIR}/src/lx_nor_flash_physical_sector_allocate.c
5760
${CMAKE_CURRENT_LIST_DIR}/src/lx_nor_flash_sector_mapping_cache_invalidate.c

common/inc/lx_api.h

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/***************************************************************************
2-
* Copyright (c) 2024 Microsoft Corporation
3-
*
2+
* Copyright (c) 2024 Microsoft Corporation
3+
* Portion Copyright (c) 2025 STMicroelectronics
4+
*
45
* This program and the accompanying materials are made available under the
56
* terms of the MIT License which is available at
67
* https://opensource.org/licenses/MIT.
@@ -528,7 +529,6 @@ typedef struct LX_NAND_FLASH_STRUCT
528529
#endif
529530
UCHAR *lx_nand_flash_page_buffer;
530531
UINT lx_nand_flash_page_buffer_size;
531-
532532
#ifdef LX_THREAD_SAFE_ENABLE
533533

534534
/* When this conditional is used, the LevelX code utilizes a ThreadX mutex for thread
@@ -537,6 +537,8 @@ typedef struct LX_NAND_FLASH_STRUCT
537537
TX_MUTEX lx_nand_flash_mutex;
538538
#endif
539539

540+
/* user data pointer optionally passed by the application to the driver via the lx_nand_flash_open_extended */
541+
VOID *lx_nand_flash_driver_info_ptr;
540542
/* Define the NAND flash control block open next/previous pointers. */
541543
struct LX_NAND_FLASH_STRUCT *lx_nand_flash_open_next,
542544
*lx_nand_flash_open_previous;
@@ -666,7 +668,8 @@ typedef struct LX_NOR_FLASH_STRUCT
666668
a higher layer. */
667669
TX_MUTEX lx_nor_flash_mutex;
668670
#endif
669-
671+
/* user data pointer optionally passed by the application to the driver via the lx_nor_flash_open_extended */
672+
VOID *lx_nor_flash_driver_info_ptr;
670673
/* Define the NOR flash control block open next/previous pointers. */
671674
struct LX_NOR_FLASH_STRUCT *lx_nor_flash_open_next,
672675
*lx_nor_flash_open_previous;
@@ -727,6 +730,7 @@ extern ULONG _lx_nor_flash_opened_cou
727730
#define lx_nand_flash_format _lx_nand_flash_format
728731
#define lx_nand_flash_initialize _lx_nand_flash_initialize
729732
#define lx_nand_flash_open _lx_nand_flash_open
733+
#define lx_nand_flash_open_extended _lx_nand_flash_open_extended
730734
#define lx_nand_flash_page_ecc_check _lx_nand_flash_page_ecc_check
731735
#define lx_nand_flash_page_ecc_compute _lx_nand_flash_page_ecc_compute
732736
#define lx_nand_flash_sector_read _lx_nand_flash_sector_read
@@ -743,7 +747,9 @@ extern ULONG _lx_nor_flash_opened_cou
743747
#define lx_nor_flash_partial_defragment _lx_nor_flash_partial_defragment
744748
#define lx_nor_flash_extended_cache_enable _lx_nor_flash_extended_cache_enable
745749
#define lx_nor_flash_initialize _lx_nor_flash_initialize
750+
#define lx_nor_flash_format _lx_nor_flash_format
746751
#define lx_nor_flash_open _lx_nor_flash_open
752+
#define lx_nor_flash_open_extended _lx_nor_flash_open_extended
747753
#define lx_nor_flash_sector_read _lx_nor_flash_sector_read
748754
#define lx_nor_flash_sector_release _lx_nor_flash_sector_release
749755
#define lx_nor_flash_sector_write _lx_nor_flash_sector_write
@@ -760,6 +766,7 @@ UINT _lx_nand_flash_format(LX_NAND_FLASH* nand_flash, CHAR* name,
760766
UINT(*nand_driver_initialize)(LX_NAND_FLASH*),
761767
ULONG* memory_ptr, UINT memory_size);
762768
UINT _lx_nand_flash_open(LX_NAND_FLASH *nand_flash, CHAR *name, UINT (*nand_driver_initialize)(LX_NAND_FLASH *), ULONG* memory_ptr, UINT memory_size);
769+
UINT _lx_nand_flash_open_extended(LX_NAND_FLASH *nand_flash, CHAR *name, UINT (*nand_driver_initialize)(LX_NAND_FLASH *), VOID *nand_driver_info_ptr, ULONG* memory_ptr, UINT memory_size);
763770
UINT _lx_nand_flash_page_ecc_check(LX_NAND_FLASH *nand_flash, UCHAR *page_buffer, UCHAR *ecc_buffer);
764771
UINT _lx_nand_flash_page_ecc_compute(LX_NAND_FLASH *nand_flash, UCHAR *page_buffer, UCHAR *ecc_buffer);
765772
UINT _lx_nand_flash_partial_defragment(LX_NAND_FLASH *nand_flash, UINT max_blocks);
@@ -774,7 +781,9 @@ UINT _lx_nor_flash_close(LX_NOR_FLASH *nor_flash);
774781
UINT _lx_nor_flash_defragment(LX_NOR_FLASH *nor_flash);
775782
UINT _lx_nor_flash_extended_cache_enable(LX_NOR_FLASH *nor_flash, VOID *memory, ULONG size);
776783
UINT _lx_nor_flash_initialize(void);
784+
UINT _lx_nor_flash_format(LX_NOR_FLASH *nor_flash, CHAR *name, UINT (*nor_driver_initialize)(LX_NOR_FLASH *), VOID *nor_driver_info_ptr);
777785
UINT _lx_nor_flash_open(LX_NOR_FLASH *nor_flash, CHAR *name, UINT (*nor_driver_initialize)(LX_NOR_FLASH *));
786+
UINT _lx_nor_flash_open_extended(LX_NOR_FLASH *nor_flash, CHAR *name, UINT (*nor_driver_initialize)(LX_NOR_FLASH *), VOID *nor_driver_info_ptr);
778787
UINT _lx_nor_flash_partial_defragment(LX_NOR_FLASH *nor_flash, UINT max_blocks);
779788
UINT _lx_nor_flash_sector_read(LX_NOR_FLASH *nor_flash, ULONG logical_sector, VOID *buffer);
780789
UINT _lx_nor_flash_sector_release(LX_NOR_FLASH *nor_flash, ULONG logical_sector);

0 commit comments

Comments
 (0)