⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsvdflash.h

📁 通过建立逻辑映射表读写NAND_FLASH,可以延长NAND_FLASH的使用寿命,排除坏块的干扰!其中包括NAND_FLASH读写驱动以及逻辑映射表的建立!根据自己的要求修改读写驱动即可使用
💻 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 + -