实现读取nand的id,正在编写坏块管理算法
This commit is contained in:
51
source/nand/ftl.h
Normal file
51
source/nand/ftl.h
Normal file
@@ -0,0 +1,51 @@
|
||||
#ifndef __FTL_H
|
||||
#define __FTL_H
|
||||
#include "stm32h7xx_hal.h"
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
|
||||
//ALIENTEK STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//NAND FLASH FTL<54><4C><EFBFBD>㷨<EFBFBD><E3B7A8><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2016/1/15
|
||||
//<2F>汾<EFBFBD><E6B1BE>V1.3
|
||||
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ 2014-2024
|
||||
//All rights reserved
|
||||
//********************************************************************************
|
||||
//<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>
|
||||
|
||||
typedef uint32_t u32;
|
||||
typedef uint16_t u16;
|
||||
typedef uint8_t u8;
|
||||
|
||||
|
||||
u8 FTL_Init(void);
|
||||
void FTL_BadBlockMark(u32 blocknum);
|
||||
u8 FTL_CheckBadBlock(u32 blocknum);
|
||||
u8 FTL_UsedBlockMark(u32 blocknum);
|
||||
u32 FTL_FindUnusedBlock(u32 sblock,u8 flag);
|
||||
u32 FTL_FindSamePlaneUnusedBlock(u32 sblock);
|
||||
u8 FTL_CopyAndWriteToBlock(u32 Source_PageNum,u16 ColNum,u8 *pBuffer,u32 NumByteToWrite);
|
||||
u16 FTL_LBNToPBN(u32 LBNNum);
|
||||
u8 FTL_WriteSectors(u8 *pBuffer,u32 SectorNo,u16 SectorSize,u32 SectorCount);
|
||||
u8 FTL_ReadSectors(u8 *pBuffer,u32 SectorNo,u16 SectorSize,u32 SectorCount);
|
||||
u8 FTL_CreateLUT(u8 mode);
|
||||
u8 FTL_BlockCompare(u32 blockx,u32 cmpval);
|
||||
u32 FTL_SearchBadBlock(void);
|
||||
u8 FTL_Format(void);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user