mirror of
https://github.com/eclipse-threadx/levelx.git
synced 2026-09-14 04:06:00 +08:00
Update on 18 Jan 2023. Expand to see details.
22299de Remove internal deprecated files. 2b9332f Fix ECC issues by new NAND logic 6a5eda1 Add a notice for not released file. b756fb0 Upgrade to the latest Container Images.
This commit is contained in:
+148
-70
@@ -26,7 +26,7 @@
|
||||
/* APPLICATION INTERFACE DEFINITION RELEASE */
|
||||
/* */
|
||||
/* lx_api.h PORTABLE C */
|
||||
/* 6.2.0 */
|
||||
/* 6.x */
|
||||
/* AUTHOR */
|
||||
/* */
|
||||
/* William E. Lamie, Microsoft Corporation */
|
||||
@@ -75,6 +75,9 @@
|
||||
/* 10-31-2022 Xiuwen Cai Modified comment(s), and */
|
||||
/* updated product constants, */
|
||||
/* resulting in version 6.2.0 */
|
||||
/* xx-xx-xxxx Xiuwen Cai Modified comment(s), */
|
||||
/* modified NAND logic, */
|
||||
/* resulting in version 6.x */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
|
||||
@@ -149,6 +152,10 @@ typedef unsigned long long ULONG64;
|
||||
#define LX_MEMSET(a,b,c) memset((a),(b),(c))
|
||||
#endif
|
||||
|
||||
#ifndef LX_MEMCPY
|
||||
#define LX_MEMCPY(a,b,c) memcpy((a),(b),(c))
|
||||
#endif
|
||||
|
||||
/* Disable usage of ThreadX mutex in standalone mode */
|
||||
#ifdef LX_THREAD_SAFE_ENABLE
|
||||
#undef LX_THREAD_SAFE_ENABLE
|
||||
@@ -161,6 +168,10 @@ typedef unsigned long long ULONG64;
|
||||
#else
|
||||
|
||||
#define LX_MEMSET TX_MEMSET
|
||||
#ifndef LX_MEMCPY
|
||||
#include <string.h>
|
||||
#define LX_MEMCPY(a,b,c) memcpy((a),(b),(c))
|
||||
#endif
|
||||
|
||||
#define LX_INTERRUPT_SAVE_AREA TX_INTERRUPT_SAVE_AREA
|
||||
#define LX_DISABLE TX_DISABLE
|
||||
@@ -206,6 +217,9 @@ typedef unsigned long long ULONG64;
|
||||
#define LX_NAND_ERROR_NOT_CORRECTED 7
|
||||
#define LX_NO_MEMORY 8
|
||||
#define LX_DISABLED 9
|
||||
#define LX_BAD_BLOCK 10
|
||||
#define LX_NO_BLOCKS 11
|
||||
#define LX_NOT_SUPPORTED 12
|
||||
#define LX_SYSTEM_INVALID_FORMAT 90
|
||||
#define LX_SYSTEM_INVALID_BLOCK 91
|
||||
#define LX_SYSTEM_ALLOCATION_FAILED 92
|
||||
@@ -275,6 +289,25 @@ typedef unsigned long long ULONG64;
|
||||
#define LX_NAND_FLASH_MAPPING_LIST_UPDATE_DISABLE
|
||||
#endif
|
||||
|
||||
#ifndef LX_NAND_FLASH_MAX_METADATA_BLOCKS
|
||||
#define LX_NAND_FLASH_MAX_METADATA_BLOCKS 4
|
||||
#endif
|
||||
|
||||
#ifndef LX_UTILITY_SHORT_SET
|
||||
#define LX_UTILITY_SHORT_SET(address, value) *((USHORT*)(address)) = (USHORT)(value)
|
||||
#endif
|
||||
|
||||
#ifndef LX_UTILITY_LONG_SET
|
||||
#define LX_UTILITY_LONG_SET(address, value) *((ULONG*)(address)) = (ULONG)(value)
|
||||
#endif
|
||||
|
||||
#ifndef LX_UTILITY_SHORT_GET
|
||||
#define LX_UTILITY_SHORT_GET(address) (*((USHORT*)(address)))
|
||||
#endif
|
||||
|
||||
#ifndef LX_UTILITY_LONG_GET
|
||||
#define LX_UTILITY_LONG_GET(address) (*((ULONG*)(address)))
|
||||
#endif
|
||||
|
||||
/* Define the mask for the hash index into the NAND sector mapping cache table. The sector mapping cache is divided
|
||||
into 4 entry pieces that are indexed by the formula:
|
||||
@@ -297,26 +330,60 @@ typedef unsigned long long ULONG64;
|
||||
#define LX_NAND_PAGE_FREE 0xFFFFFFFF
|
||||
#define LX_NAND_PAGE_LIST_VALID 0xF0F0F0F0
|
||||
|
||||
#define LX_NAND_PAGE_TYPE_DEVICE_INFO 0x10000000u
|
||||
#define LX_NAND_PAGE_TYPE_ERASE_COUNT_TABLE 0x20000000u
|
||||
#define LX_NAND_PAGE_TYPE_BLOCK_MAPPING_TABLE 0x30000000u
|
||||
#define LX_NAND_PAGE_TYPE_USER_DATA 0x40000000u
|
||||
#define LX_NAND_PAGE_TYPE_USER_DATA_RELEASED 0x50000000u
|
||||
#define LX_NAND_PAGE_TYPE_READ_COUNT_TABLE 0x60000000u
|
||||
#define LX_NAND_PAGE_TYPE_PAGE_MAPPING_TABLE 0x70000000u
|
||||
#define LX_NAND_PAGE_TYPE_BLOCK_STATUS_TABLE 0x80000000u
|
||||
#define LX_NAND_PAGE_TYPE_BLOCK_LINK 0x90000000u
|
||||
#define LX_NAND_PAGE_TYPE_USER_DATA_MASK 0x0FFFFFFFu
|
||||
#define LX_NAND_PAGE_TYPE_PAGE_NUMBER_MASK 0x000000FFu
|
||||
|
||||
/* Define the NAND flash extra byte structure. This will be set in the spare area of each mapped physical page. */
|
||||
#define LX_NAND_PAGE_TYPE_FREE_PAGE 0xFFFFFF00u
|
||||
|
||||
typedef struct LX_NAND_PAGE_EXTRA_INFO_STRUCT
|
||||
#define LX_NAND_BLOCK_STATUS_FULL 0x4000u
|
||||
#define LX_NAND_BLOCK_STATUS_NON_SEQUENTIAL 0x2000u
|
||||
#define LX_NAND_BLOCK_STATUS_MAPPING_PRESENT 0x1000u
|
||||
#define LX_NAND_BLOCK_STATUS_PAGE_NUMBER_MASK 0x0FFFu
|
||||
#define LX_NAND_BLOCK_STATUS_FREE 0xFFFFu
|
||||
#define LX_NAND_BLOCK_STATUS_BAD 0xFF00u
|
||||
#define LX_NAND_BLOCK_STATUS_ALLOCATED 0x8000u
|
||||
|
||||
#define LX_NAND_BLOCK_LINK_MAIN_METADATA_OFFSET 0
|
||||
#define LX_NAND_BLOCK_LINK_BACKUP_METADATA_OFFSET 4
|
||||
|
||||
#define LX_NAND_MAX_BLOCK_COUNT 32768
|
||||
#define LX_NAND_MAX_PAGE_PER_BLOCK 4096
|
||||
|
||||
|
||||
|
||||
#define LX_NAND_BLOCK_UNMAPPED 0xFFFF
|
||||
|
||||
#define LX_NAND_DEVICE_INFO_SIGNATURE1 0x76654C20
|
||||
#define LX_NAND_DEVICE_INFO_SIGNATURE2 0x20586C65
|
||||
|
||||
#define LX_NAND_DEVICE_INFO_METADATA_TYPE_MAIN 0x01
|
||||
#define LX_NAND_DEVICE_INFO_METADATA_TYPE_SECONDARY 0x02
|
||||
|
||||
|
||||
|
||||
|
||||
/* Define the NAND device information structure. This will be set in the spare area. */
|
||||
|
||||
typedef struct LX_NAND_DEVICE_INFO_STRUCT
|
||||
{
|
||||
ULONG lx_nand_page_extra_info_logical_sector;
|
||||
} LX_NAND_PAGE_EXTRA_INFO;
|
||||
|
||||
|
||||
/* Define the NAND flash logical sector cache entry structure. */
|
||||
|
||||
typedef struct LX_NAND_SECTOR_MAPPING_CACHE_ENTRY_STRUCT
|
||||
{
|
||||
#ifndef LX_NAND_FLASH_DIRECT_MAPPING_CACHE
|
||||
ULONG lx_nand_sector_mapping_cache_logical_sector;
|
||||
#endif
|
||||
USHORT lx_nand_sector_mapping_cache_block;
|
||||
USHORT lx_nand_sector_mapping_cache_page;
|
||||
} LX_NAND_SECTOR_MAPPING_CACHE_ENTRY;
|
||||
|
||||
ULONG lx_nand_device_info_signature1;
|
||||
ULONG lx_nand_device_info_signature2;
|
||||
ULONG lx_nand_device_info_major_version;
|
||||
ULONG lx_nand_device_info_minor_version;
|
||||
ULONG lx_nand_device_info_patch_version;
|
||||
ULONG lx_nand_device_info_metadata_block_number;
|
||||
ULONG lx_nand_device_info_backup_metadata_block_number;
|
||||
ULONG lx_nand_device_info_base_erase_count;
|
||||
} LX_NAND_DEVICE_INFO;
|
||||
|
||||
/* Define the NAND flash control block structure. */
|
||||
|
||||
@@ -331,20 +398,42 @@ typedef struct LX_NAND_FLASH_STRUCT
|
||||
ULONG lx_nand_flash_total_pages;
|
||||
|
||||
ULONG lx_nand_flash_bad_blocks;
|
||||
ULONG lx_nand_flash_free_pages;
|
||||
ULONG lx_nand_flash_mapped_pages;
|
||||
ULONG lx_nand_flash_obsolete_pages;
|
||||
ULONG lx_nand_flash_minimum_erase_count;
|
||||
ULONG lx_nand_flash_maximum_erase_count;
|
||||
ULONG lx_nand_flash_free_block_search;
|
||||
ULONG lx_nand_flash_found_block_search;
|
||||
ULONG lx_nand_flash_found_page_search;
|
||||
ULONG lx_nand_flash_base_erase_count;
|
||||
|
||||
ULONG lx_nand_flash_max_mapped_sector;
|
||||
ULONG lx_nand_flash_page_corrections;
|
||||
ULONG lx_nand_flash_last_block_correction;
|
||||
ULONG lx_nand_flash_last_page_correction;
|
||||
|
||||
USHORT *lx_nand_flash_block_mapping_table;
|
||||
ULONG lx_nand_flash_block_mapping_table_size;
|
||||
USHORT *lx_nand_flash_block_status_table;
|
||||
ULONG lx_nand_flash_block_status_table_size;
|
||||
UCHAR *lx_nand_flash_erase_count_table;
|
||||
ULONG lx_nand_flash_erase_count_table_size;
|
||||
USHORT *lx_nand_flash_block_list;
|
||||
ULONG lx_nand_flash_block_list_size;
|
||||
ULONG lx_nand_flash_free_block_list_tail;
|
||||
ULONG lx_nand_flash_mapped_block_list_head;
|
||||
|
||||
ULONG lx_nand_flash_metadata_block_number;
|
||||
ULONG lx_nand_flash_metadata_block_number_current;
|
||||
ULONG lx_nand_flash_metadata_block_number_next;
|
||||
ULONG lx_nand_flash_metadata_block_current_page;
|
||||
ULONG lx_nand_flash_metadata_block_count;
|
||||
USHORT lx_nand_flash_metadata_block[LX_NAND_FLASH_MAX_METADATA_BLOCKS];
|
||||
|
||||
ULONG lx_nand_flash_backup_metadata_block_number;
|
||||
ULONG lx_nand_flash_backup_metadata_block_number_current;
|
||||
ULONG lx_nand_flash_backup_metadata_block_number_next;
|
||||
ULONG lx_nand_flash_backup_metadata_block_current_page;
|
||||
USHORT lx_nand_flash_backup_metadata_block[LX_NAND_FLASH_MAX_METADATA_BLOCKS];
|
||||
|
||||
ULONG lx_nand_flash_spare_data1_offset;
|
||||
ULONG lx_nand_flash_spare_data1_length;
|
||||
ULONG lx_nand_flash_spare_data2_offset;
|
||||
ULONG lx_nand_flash_spare_data2_length;
|
||||
ULONG lx_nand_flash_spare_total_length;
|
||||
|
||||
ULONG lx_nand_flash_diagnostic_system_errors;
|
||||
ULONG lx_nand_flash_diagnostic_system_error;
|
||||
ULONG lx_nand_flash_diagnostic_sector_write_requests;
|
||||
@@ -353,15 +442,6 @@ typedef struct LX_NAND_FLASH_STRUCT
|
||||
ULONG lx_nand_flash_diagnostic_page_allocates;
|
||||
ULONG lx_nand_flash_diagnostic_page_allocate_errors;
|
||||
|
||||
ULONG lx_nand_flash_diagnostic_sector_mapping_cache_hits;
|
||||
ULONG lx_nand_flash_diagnostic_sector_mapping_cache_misses;
|
||||
ULONG lx_nand_flash_diagnostic_page_extra_bytes_cache_hits;
|
||||
ULONG lx_nand_flash_diagnostic_page_extra_bytes_cache_misses;
|
||||
ULONG lx_nand_flash_diagnostic_page_0_cache_hits;
|
||||
ULONG lx_nand_flash_diagnostic_page_0_cache_misses;
|
||||
ULONG lx_nand_flash_diagnostic_block_status_cache_hits;
|
||||
ULONG lx_nand_flash_diagnostic_block_status_cache_misses;
|
||||
|
||||
ULONG lx_nand_flash_diagnostic_block_reclaim_attempts;
|
||||
ULONG lx_nand_flash_diagnostic_block_erases;
|
||||
ULONG lx_nand_flash_diagnostic_block_status_gets;
|
||||
@@ -373,16 +453,6 @@ typedef struct LX_NAND_FLASH_STRUCT
|
||||
ULONG lx_nand_flash_diagnostic_moved_pages;
|
||||
ULONG lx_nand_flash_diagnostic_block_erased_verifies;
|
||||
ULONG lx_nand_flash_diagnostic_page_erased_verifies;
|
||||
|
||||
ULONG lx_nand_flash_diagnostic_initial_format;
|
||||
ULONG lx_nand_flash_diagnostic_erased_block;
|
||||
ULONG lx_nand_flash_diagnostic_re_erase_block;
|
||||
ULONG lx_nand_flash_diagnostic_page_being_obsoleted;
|
||||
ULONG lx_nand_flash_diagnostic_page_obsoleted;
|
||||
ULONG lx_nand_flash_diagnostic_mapping_invalid;
|
||||
ULONG lx_nand_flash_diagnostic_mapping_write_interrupted;
|
||||
ULONG lx_nand_flash_diagnostic_page_not_free;
|
||||
ULONG lx_nand_flash_diagnostic_page_data_not_free;
|
||||
|
||||
UINT (*lx_nand_flash_driver_read)(ULONG block, ULONG page, ULONG *destination, ULONG words);
|
||||
UINT (*lx_nand_flash_driver_write)(ULONG block, ULONG page, ULONG *source, ULONG words);
|
||||
@@ -395,18 +465,12 @@ typedef struct LX_NAND_FLASH_STRUCT
|
||||
UINT (*lx_nand_flash_driver_extra_bytes_set)(ULONG block, ULONG page, UCHAR *source, UINT size);
|
||||
UINT (*lx_nand_flash_driver_system_error)(UINT error_code, ULONG block, ULONG page);
|
||||
|
||||
ULONG *lx_nand_flash_page_buffer;
|
||||
UINT lx_nand_flash_sector_mapping_cache_enabled;
|
||||
LX_NAND_SECTOR_MAPPING_CACHE_ENTRY
|
||||
lx_nand_flash_sector_mapping_cache[LX_NAND_SECTOR_MAPPING_CACHE_SIZE];
|
||||
UINT (*lx_nand_flash_driver_pages_read)(ULONG block, ULONG page, UCHAR* main_buffer, UCHAR* spare_buffer, ULONG pages);
|
||||
UINT (*lx_nand_flash_driver_pages_write)(ULONG block, ULONG page, UCHAR* main_buffer, UCHAR* spare_buffer, ULONG pages);
|
||||
UINT (*lx_nand_flash_driver_pages_copy)(ULONG source_block, ULONG source_page, ULONG destination_block, ULONG destination_page, ULONG pages, UCHAR* data_buffer);
|
||||
|
||||
|
||||
/* Define the extended cache structures for block status, page extra bytes, and block page 0 caches. The memory for these cache
|
||||
extensions is optionally supplied by the application after the lx_nand_flash_open call has been made. */
|
||||
|
||||
UCHAR *lx_nand_flash_block_status_cache;
|
||||
LX_NAND_PAGE_EXTRA_INFO *lx_nand_flash_page_extra_bytes_cache;
|
||||
ULONG *lx_nand_flash_page_0_cache;
|
||||
UCHAR *lx_nand_flash_page_buffer;
|
||||
UINT lx_nand_flash_page_buffer_size;
|
||||
|
||||
#ifdef LX_THREAD_SAFE_ENABLE
|
||||
|
||||
@@ -570,6 +634,7 @@ extern ULONG _lx_nor_flash_opened_cou
|
||||
#define lx_nand_flash_defragment _lx_nand_flash_defragment
|
||||
#define lx_nand_flash_partial_defragment _lx_nand_flash_partial_defragment
|
||||
#define lx_nand_flash_extended_cache_enable _lx_nand_flash_extended_cache_enable
|
||||
#define lx_nand_flash_format _lx_nand_flash_format
|
||||
#define lx_nand_flash_initialize _lx_nand_flash_initialize
|
||||
#define lx_nand_flash_open _lx_nand_flash_open
|
||||
#define lx_nand_flash_page_ecc_check _lx_nand_flash_page_ecc_check
|
||||
@@ -577,6 +642,9 @@ extern ULONG _lx_nor_flash_opened_cou
|
||||
#define lx_nand_flash_sector_read _lx_nand_flash_sector_read
|
||||
#define lx_nand_flash_sector_release _lx_nand_flash_sector_release
|
||||
#define lx_nand_flash_sector_write _lx_nand_flash_sector_write
|
||||
#define lx_nand_flash_sectors_read _lx_nand_flash_sectors_read
|
||||
#define lx_nand_flash_sectors_release _lx_nand_flash_sectors_release
|
||||
#define lx_nand_flash_sectors_write _lx_nand_flash_sectors_write
|
||||
#define lx_nand_flash_256byte_ecc_check _lx_nand_flash_256byte_ecc_check
|
||||
#define lx_nand_flash_256byte_ecc_compute _lx_nand_flash_256byte_ecc_compute
|
||||
|
||||
@@ -598,13 +666,19 @@ UINT _lx_nand_flash_close(LX_NAND_FLASH *nand_flash);
|
||||
UINT _lx_nand_flash_defragment(LX_NAND_FLASH *nand_flash);
|
||||
UINT _lx_nand_flash_initialize(void);
|
||||
UINT _lx_nand_flash_extended_cache_enable(LX_NAND_FLASH *nand_flash, VOID *memory, ULONG size);
|
||||
UINT _lx_nand_flash_open(LX_NAND_FLASH *nand_flash, CHAR *name, UINT (*nand_driver_initialize)(LX_NAND_FLASH *));
|
||||
UINT _lx_nand_flash_format(LX_NAND_FLASH* nand_flash, CHAR* name,
|
||||
UINT(*nand_driver_initialize)(LX_NAND_FLASH*),
|
||||
ULONG* memory_ptr, UINT memory_size);
|
||||
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);
|
||||
UINT _lx_nand_flash_page_ecc_check(LX_NAND_FLASH *nand_flash, UCHAR *page_buffer, UCHAR *ecc_buffer);
|
||||
UINT _lx_nand_flash_page_ecc_compute(LX_NAND_FLASH *nand_flash, UCHAR *page_buffer, UCHAR *ecc_buffer);
|
||||
UINT _lx_nand_flash_partial_defragment(LX_NAND_FLASH *nand_flash, UINT max_blocks);
|
||||
UINT _lx_nand_flash_sector_read(LX_NAND_FLASH *nand_flash, ULONG logical_sector, VOID *buffer);
|
||||
UINT _lx_nand_flash_sector_release(LX_NAND_FLASH *nand_flash, ULONG logical_sector);
|
||||
UINT _lx_nand_flash_sector_write(LX_NAND_FLASH *nand_flash, ULONG logical_sector, VOID *buffer);
|
||||
UINT _lx_nand_flash_sectors_read(LX_NAND_FLASH* nand_flash, ULONG logical_sector, VOID* buffer, ULONG sector_count);
|
||||
UINT _lx_nand_flash_sectors_release(LX_NAND_FLASH* nand_flash, ULONG logical_sector, ULONG sector_count);
|
||||
UINT _lx_nand_flash_sectors_write(LX_NAND_FLASH* nand_flash, ULONG logical_sector, VOID* buffer, ULONG sector_count);
|
||||
|
||||
UINT _lx_nor_flash_close(LX_NOR_FLASH *nor_flash);
|
||||
UINT _lx_nor_flash_defragment(LX_NOR_FLASH *nor_flash);
|
||||
@@ -619,25 +693,29 @@ UINT _lx_nor_flash_sector_write(LX_NOR_FLASH *nor_flash, ULONG logical_sector
|
||||
|
||||
/* Internal LevelX prototypes. */
|
||||
|
||||
UINT _lx_nand_flash_block_full_update(LX_NAND_FLASH *nand_flash, ULONG block, ULONG erase_count);
|
||||
VOID _lx_nand_flash_block_obsoleted_check(LX_NAND_FLASH *nand_flash, ULONG block);
|
||||
UINT _lx_nand_flash_block_reclaim(LX_NAND_FLASH *nand_flash);
|
||||
|
||||
UINT _lx_nand_flash_driver_read(LX_NAND_FLASH *nand_flash, ULONG block, ULONG page, ULONG *destination, ULONG words);
|
||||
UINT _lx_nand_flash_driver_write(LX_NAND_FLASH *nand_flash, ULONG block, ULONG page, ULONG *source, ULONG words);
|
||||
UINT _lx_nand_flash_driver_block_erase(LX_NAND_FLASH *nand_flash, ULONG block, ULONG erase_count);
|
||||
UINT _lx_nand_flash_driver_block_erased_verify(LX_NAND_FLASH *nand_flash, ULONG block);
|
||||
UINT _lx_nand_flash_driver_page_erased_verify(LX_NAND_FLASH *nand_flash, ULONG block, ULONG page);
|
||||
UINT _lx_nand_flash_driver_block_status_get(LX_NAND_FLASH *nand_flash, ULONG block, UCHAR *bad_block_flag);
|
||||
UINT _lx_nand_flash_driver_block_status_set(LX_NAND_FLASH *nand_flash, ULONG block, UCHAR bad_block_flag);
|
||||
UINT _lx_nand_flash_driver_extra_bytes_get(LX_NAND_FLASH *nand_flash, ULONG block, ULONG page, UCHAR *destination, UINT size);
|
||||
UINT _lx_nand_flash_driver_extra_bytes_set(LX_NAND_FLASH *nand_flash, ULONG block, ULONG page, UCHAR *source, UINT size);
|
||||
|
||||
VOID _lx_nand_flash_internal_error(LX_NAND_FLASH *nand_flash, ULONG error_code);
|
||||
UINT _lx_nand_flash_logical_sector_find(LX_NAND_FLASH *nand_flash, ULONG logical_sector, ULONG superceded_check, ULONG *block, ULONG *page);
|
||||
UINT _lx_nand_flash_next_block_to_erase_find(LX_NAND_FLASH *nand_flash, ULONG *return_erase_block, ULONG *return_erase_count, ULONG *return_mapped_pages, ULONG *return_obsolete_pages);
|
||||
UINT _lx_nand_flash_physical_page_allocate(LX_NAND_FLASH *nand_flash, ULONG *block, ULONG *page, ULONG *erase_count);
|
||||
VOID _lx_nand_flash_sector_mapping_cache_invalidate(LX_NAND_FLASH *nand_flash, ULONG logical_sector);
|
||||
UINT _lx_nand_flash_block_find(LX_NAND_FLASH *nand_flash, ULONG logical_sector, ULONG *block, USHORT *block_status);
|
||||
UINT _lx_nand_flash_block_allocate(LX_NAND_FLASH *nand_flash, ULONG *block);
|
||||
UINT _lx_nand_flash_block_data_move(LX_NAND_FLASH* nand_flash, ULONG new_block);
|
||||
UINT _lx_nand_flash_block_status_set(LX_NAND_FLASH *nand_flash, ULONG block, ULONG block_status);
|
||||
UINT _lx_nand_flash_erase_count_set(LX_NAND_FLASH* nand_flash, ULONG block, UCHAR erase_count);
|
||||
UINT _lx_nand_flash_block_mapping_set(LX_NAND_FLASH* nand_flash, ULONG logical_sector, ULONG block);
|
||||
UINT _lx_nand_flash_data_page_copy(LX_NAND_FLASH* nand_flash, ULONG logical_sector, ULONG source_block, USHORT src_block_status,
|
||||
ULONG destination_block, USHORT* dest_block_status_ptr, ULONG sectors);
|
||||
UINT _lx_nand_flash_free_block_list_add(LX_NAND_FLASH* nand_flash, ULONG block);
|
||||
UINT _lx_nand_flash_mapped_block_list_add(LX_NAND_FLASH* nand_flash, ULONG block_mapping_index);
|
||||
UINT _lx_nand_flash_mapped_block_list_get(LX_NAND_FLASH* nand_flash, ULONG *block_mapping_index);
|
||||
UINT _lx_nand_flash_mapped_block_list_remove(LX_NAND_FLASH* nand_flash, ULONG block_mapping_index);
|
||||
UINT _lx_nand_flash_memory_initialize(LX_NAND_FLASH* nand_flash, ULONG* memory_ptr, UINT memory_size);
|
||||
UINT _lx_nand_flash_metadata_allocate(LX_NAND_FLASH* nand_flash);
|
||||
UINT _lx_nand_flash_metadata_build(LX_NAND_FLASH* nand_flash);
|
||||
UINT _lx_nand_flash_metadata_write(LX_NAND_FLASH *nand_flash, UCHAR* main_buffer, ULONG spare_value);
|
||||
VOID _lx_nand_flash_system_error(LX_NAND_FLASH *nand_flash, UINT error_code, ULONG block, ULONG page);
|
||||
UINT _lx_nand_flash_256byte_ecc_check(UCHAR *page_buffer, UCHAR *ecc_buffer);
|
||||
UINT _lx_nand_flash_256byte_ecc_compute(UCHAR *page_buffer, UCHAR *ecc_buffer);
|
||||
|
||||
Reference in New Issue
Block a user