📄 rsvdflash.h
字号:
/********************** 文件Rsvdflash.h *************************************************************/
/* NAND_FLASH保留区域的读写函数和逻辑映射表生成函数 */
/* 注意:逻辑扇区号取值从0---32767,对应1024个块 */
/* 在系统初始化时要先调用Gen_rsvedlgToph()函数生成保留区域的逻辑映射表 */
/****************************************************************************************************/
/********************************* 以下为用户可使用的函数,共3个 ************************************/
/************************ BYTE* ReadLgSector(DWORD StartLgSector,BYTE* buffer) **********************/
/* 功能:根据输入的逻辑扇区号自动搜寻对应的物理扇区从NAND_FLASH中读出该扇区的数据到Buffer中 */
/* 入口参数:DWORD StartLgSector----逻辑扇区号,整个保留区域单独编号 */
/* 出口参数:BYTE* buffer----从逻辑扇区读出的数据存放缓冲区,512字节长 */
/* 返回Buffer中的值,同时更新NAND_operation_Returnvalue用来判断操作的结果是否正确 */
/* 如果读取发生错误,则返回NULL */
/* 说明: 用户使用函数 */
/****************************************************************************************************/
BYTE* ReadRsvedLgSector(DWORD RsvedLgSector,BYTE* buffer);
/****************** 函数 WORD WriteLgSector(DWORD RsvedLgSector,BYTE* buffer) ***********************/
/* 功能:将Buffer中的数据写入由逻辑扇区号确定的页中,该页的实际物理地址在该函数内自动计算; */
/* 在写入时如果发现某一扇区损坏该函数将自动寻找一个空块写入,同时将原块中的数据拷贝到新块中。 */
/* 并将旧块擦除;找到新块后逻辑映射表将被更改。无论是否改变物理块,该块中该扇区的C区中都将写入*/
/* 逻辑块号 */
/* 注意:调用此函数前Buffer中要事先存放要写入的数据 */
/* 入口参数:DWORD RsvedLgSector----逻辑扇区号,FLASH的保留区域单独编号编号,逻辑扇区与逻辑块对应 */
/* BYTE* buffer----准备写到逻辑扇区的数据缓冲区,512字节长 */
/* 返回值:写入的物理块号; 0xffff表示找不到空块,盘已满; */
/* 说明: 用户使用函数 */
/****************************************************************************************************/
WORD WriteRsvedLgSector(DWORD RsvedLgSector,BYTE* buffer);
/********************************* 函数 int Gen_rsvedlgToph(void) ***********************************/
/* 功能: 依次读取FLASH保留区域的每个块,建立逻辑地址到物理地址的映射表rsvedlgToph[],该表中如果数*/
/* 据为0xFFFF说明未对应物理地址,即该逻辑地址未使用 */
/* 入口参数:无 */
/* 出口参数:返回-1,则说明逻辑地址有误;否则返回已经编号的块的总数 */
/* 说明: 用户使用函数 */
/****************************************************************************************************/
int Gen_rsvedlgToph(void);
// Format Reserved Nand Flash;
void Format_ResvedNandFlash(void);
////////////////////////////////////////////////////////////////////////////////////
// 判断当前的nand flash 是否格式化过;
// 格式化过的nand flash 中会写入当前软件版本号,以下程序判断里面的软件版本号是否真确;
////////////////////////////////////////////////////////////////////////////////////
u8 IsReservedFlashOk(void);
/*************************************************************************************************/
/* 功能:根据输入的逻辑扇区号自动搜寻对应的物理扇区从NAND_FLASH中读出该扇区内offsetinsector地址*/
/* 开始的bytes个数据到Buffer中 */
/* 入口参数:DWORD StartLgSector----逻辑扇区号,整个保留区域单独编号 */
/* 出口参数:BYTE* buffer----从逻辑扇区读出的数据存放缓冲区,bytes字节长 */
/* 如果读取发生错误,则返回NULL */
/* 说明: 用户使用函数 */
/****************************************************************************************************/
BYTE* ReadRsvedLgSectorBytes(DWORD RsvedLgSector,BYTE* buffer,WORD offsetinsector,WORD bytes);
/****************************** 函数 WORD RsvedGarbageProcess(void) *********************************/
/* 功能: 垃圾块处理,读取FLASH的保留部分,并判断是否有脏数据并且非坏块。如果满足这些条件则擦除该 */
/* 块,同时返回该块号 */
/* 入口参数:无 */
/* 出口参数:如果找到并擦除了一个垃圾块,则返回该块号,否则返回0xffff */
/* 说明: 非用户使用函数 */
/****************************************************************************************************/
WORD RsvedGarbageProcess(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -