资源简介
镁光最新的NFTL,支持坏块管理,垃圾回收,写平衡,掉电安全等

代码片段和文件信息
#include “OSModule_MemoryManagement.h“
#include “HardwareAdaptationlayer.h“
#include “LLD.h“
#include “BadBlockManagement.h“
#include “FalUserDirective.h“
/*number of bad block present on device*/
static UINT8 BadBlocksNumber = 0;
/*physical block number of block containing the BBT*/
static INT16 BootBlockNumber = -1;
/*head of bad blocks list*/
static BadBlockElem *BadBlockList = NULL;
/*pointer to the last elem of bad block list in ram*/
static BadBlockElem *last = NULL;
//static UINT8 BadBlockBuff[528];
//static UINT8 pageBuffer[528];
/*************************GetBadBlockTable ****************************
* Retrieve the BBT from flash (if exists). Return a concatenate list *
* of BadBlockElem *
*---------------------------------------------------------------------*
* startBlock : physical block number where start the searching *
* *
* bbt : the head of bad block list retrieved *
* *
***********************************************************************/
NFTL_Return GetBadBlockTable(BadBlockElem *bbt UINT16 startBlock)
{
UINT16 i;
UINT32 k;
UINT8 searchRange;
UINT8 founded = 0;
BootStruct bootStruct;
UINT16 *bbtArray = NULL;
UINT8 *buffer = NULL;
UINT16 lenght;
//lenght = GetDeviceArchitecture().pageSize;
lenght = CHUNK_SIZE;
searchRange = 10;
last = NULL;
BadBlocksNumber = 0;
//buffer = OS_DRIVER_Malloc(GetDeviceArchitecture().pageSize);
buffer = (UINT8 *)OS_DRIVER_Malloc(CHUNK_SIZE);
if (buffer == NULL)
{
return FAILURE;
}
for (i = startBlock; i <= (startBlock + searchRange); i++)
{
if (!founded)
{
UINT32 targetAddress;
CalculateAddress(i0&targetAddress);
//if ((NAND_PageRead(targetAddress(UINT8 *)(&BadBlockBuff[0])lenght) != NAND_PASS))
if ((NAND_PageRead(targetAddressbufferlenght) != NAND_PASS))
{
OS_DRIVER_Free(buffer);
return FAILURE;
}
OS_MemCopy(&bootStructbuffersizeof(BootStruct));
//founded bootStruct
if (OS_SearchString((char *) bootStruct.bootStructId“NANDBOOT“) != NULL)
{
UINT8 *pageBuffer = NULL;
int c = 0;
UINT8 noOfPage = 0;
INT32 lastPageDim = 0;
UINT8 totalPage = 0;
founded = 1;
//set the physical block number of the block containing the bootstruct
SetBBMBootBlockNumber(i);
//allocate the list of Bad Blocks
if (bootStruct.noOfBadBlocks == 0)
{
bbt = NULL;
bbtArray = NULL;
OS_DRIVER_Free(buffer);
return SUCCESS;
}
bbtArray = (UINT16 *)
OS_DRIVER_Malloc(sizeof(UINT16) * bootStruct.noOfBadBlocks);
if (bbtArray == NULL)
{
SetBBMBootBlockNumber(-1);
OS_DRIVER_Free(buffer);
return FAILURE;
}
#if 0
noOfPage = ((bootStruct.noOfBadBlocks) * sizeof(UINT16)) /
GetDeviceArchitecture().mainSize;
lastPageDim = (bootStruct.noOfBadBlocks * sizeof(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-08-11 11:08 mcrion_NFTL\
文件 397814 2019-08-11 11:08 mcrion_NFTL\NAND Flash Translation la
目录 0 2019-08-09 20:05 mcrion_NFTL\NFTL--code\
文件 14738 2006-08-10 10:23 mcrion_NFTL\NFTL--code\BadBlockManagement.c
文件 1409 2006-08-10 10:23 mcrion_NFTL\NFTL--code\BadBlockManagement.h
文件 5034 2006-08-10 10:23 mcrion_NFTL\NFTL--code\Common.h
文件 1274 2006-08-10 10:23 mcrion_NFTL\NFTL--code\FalUserDirective.h
文件 6823 2006-08-10 10:23 mcrion_NFTL\NFTL--code\GarbageCollector.c
文件 333 2006-08-10 10:23 mcrion_NFTL\NFTL--code\GarbageCollector.h
文件 28672 2019-08-08 20:44 mcrion_NFTL\NFTL--code\NFTL.IAB
文件 608 2019-08-08 20:44 mcrion_NFTL\NFTL--code\NFTL.IAD
文件 8192 2019-08-08 20:44 mcrion_NFTL\NFTL--code\NFTL.IMB
文件 408 2019-08-08 20:44 mcrion_NFTL\NFTL--code\NFTL.IMD
文件 60 2019-08-10 09:58 mcrion_NFTL\NFTL--code\NFTL.PFI
文件 776 2019-08-10 09:58 mcrion_NFTL\NFTL--code\NFTL.PO
文件 5192 2019-08-08 20:44 mcrion_NFTL\NFTL--code\NFTL.PR
文件 30872 2019-08-08 20:44 mcrion_NFTL\NFTL--code\NFTL.PRI
文件 67592 2019-08-10 09:58 mcrion_NFTL\NFTL--code\NFTL.PS
文件 19290 2019-08-10 09:58 mcrion_NFTL\NFTL--code\NFTL.WK3
文件 1222 2006-08-10 10:23 mcrion_NFTL\NFTL--code\OSModule_MemoryManagement.c
文件 348 2006-08-10 10:23 mcrion_NFTL\NFTL--code\OSModule_MemoryManagement.h
文件 51374 2006-08-10 10:23 mcrion_NFTL\NFTL--code\StructureManager.c
文件 3115 2006-08-10 10:23 mcrion_NFTL\NFTL--code\StructureManager.h
文件 41023 2006-08-10 10:23 mcrion_NFTL\NFTL--code\TranslationModule.c
文件 825 2006-08-10 10:23 mcrion_NFTL\NFTL--code\TranslationModule.h
文件 21105 2006-08-10 10:23 mcrion_NFTL\NFTL--code\WearLeveling.c
文件 1527 2006-08-10 10:23 mcrion_NFTL\NFTL--code\WearLeveling.h
相关资源
- Micrium.RTOS.1.0.0.pack
- ISE_14.7_license.lic
- stm32f103c8t6 4 oled.rar
- mpu6050+hmc5883L.rar
- 嵌入式图形界面MiniGUI的示例程序9例
- ARM嵌入式项目实战
- uCOS编译环境建立 BC45 TASM
- stm32 用SPI 方式读写 SDHC
- 自动售货机的内部嵌入式系统
- 51单片机中使用ucos ii的优缺点
- 嵌入式实时操作系统ucos-II 第二版 源
- 基于串口设备的嵌入式Web服务器系统
- 基于LW IP的嵌入式串口服务器的设计与
- 一种嵌入式串口共享服务器的设计
- 21天学会嵌入式开发STM32.zip
- 嵌入式智能平台为城市一卡通打造智
- 研祥“EVOC”嵌入式智能平台在
- ARM7TDMI-S在嵌入式系统中的Bootloader代码
- LPC2000系列微控制器应对嵌入式需求
- 嵌入式实时操作系统μC/OS-II与eCos的
- 基于STM32的嵌入式双目图像采集系统设
- 嵌入式实时操作系统在DATU中的应用
- 嵌入式实时操作系统μC/OS-II下通用驱
- 嵌入式实时操作系统μC/OS-II在ARM上的
- 嵌入式操作系统的解析
- SAC型液压支架控制器检测平台的设计
- 一种用ARM7+UC/OS-II设计的信号采集系统
- 最简单的平衡小车
- 基于ARM的电子相册源码含动态库可运
- 嵌入式工程师周报 项目管理 甘特图
评论
共有 条评论