STM32H750XB_RT-THREAD/25-FMC—扩展外部NAND/User/nand/ftl.h

38 lines
1.5 KiB
C
Raw Normal View History

2025-07-21 06:34:29 +00:00
#ifndef __FTL_H
#define __FTL_H
#include "stm32h7xx.h"
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
//V1.1 20160124
//<2F>޸<EFBFBD>FTL_CopyAndWriteToBlock<63><6B>FTL_WriteSectors<72><73><EFBFBD><EFBFBD>,<2C><><EFBFBD>߷<EFBFBD>0XFFʱ<46><CAB1>д<EFBFBD><D0B4><EFBFBD>ٶ<EFBFBD>.
//V1.2 20160520
//1,<2C>޸<EFBFBD>FTL_ReadSectors,<2C><><EFBFBD><EFBFBD>ECC<43><43><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><E9B4A6>,<2C><><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
//2,<2C><><EFBFBD><EFBFBD>FTL_BlockCompare<72><65>FTL_SearchBadBlock<63><6B><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>
//3,<2C>޸<EFBFBD>FTL_Format<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ,<2C><><EFBFBD><EFBFBD>FTL_USE_BAD_BLOCK_SEARCH<43><48>
//V1.3 20160530
//<2F>޸ĵ<DEB8>1bit ECC<43><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ȡ2<C8A1>Σ<EFBFBD><CEA3><EFBFBD>ȷ<EFBFBD><C8B7>1bit <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1,<2C><><EFBFBD><EFBFBD>FTL_Format<61><74>ʱ<EFBFBD><CAB1>,<2C><>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>,<2C><>ʱ<EFBFBD><CAB1>(512M,3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>),<2C>һ<D2BB><E1B5BC>RGB<47><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define FTL_USE_BAD_BLOCK_SEARCH 0 //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t FTL_Init(void);
void FTL_BadBlockMark(uint32_t blocknum);
uint8_t FTL_CheckBadBlock(uint32_t blocknum);
uint8_t FTL_UsedBlockMark(uint32_t blocknum);
uint32_t FTL_FindUnusedBlock(uint32_t sblock,uint8_t flag);
uint32_t FTL_FindSamePlaneUnusedBlock(uint32_t sblock);
uint8_t FTL_CopyAndWriteToBlock(uint32_t Source_PageNum,uint16_t ColNum,uint8_t *pBuffer,uint32_t NumByteToWrite);
uint16_t FTL_LBNToPBN(uint32_t LBNNum);
uint8_t FTL_WriteSectors(uint8_t *pBuffer,uint32_t SectorNo,uint16_t SectorSize,uint32_t SectorCount);
uint8_t FTL_ReadSectors(uint8_t *pBuffer,uint32_t SectorNo,uint16_t SectorSize,uint32_t SectorCount);
uint8_t FTL_CreateLUT(uint8_t mode);
uint8_t FTL_BlockCompare(uint32_t blockx,uint32_t cmpval);
uint32_t FTL_SearchBadBlock(void);
uint8_t FTL_Format(void);
#endif