?? nand_cmd.c
字號(hào):
#define __NAND_CMD
#include "Nand_CMD.h"
#undef __NAND_CMD
//********************** Global Variable **********************
//*************************************************************
/*設(shè)置塊使用標(biāo)記*/
void SetBlockUse(ushort startblk, ushort endblk, ushort bmpNo)
{
ushort i;
for(i = startblk;i <= endblk;i++)
blockuse[i] = bmpNo+1;
}
/*尋找一個(gè)可以存放得下當(dāng)前畫面的nandflash地址*/
int findRightAddr(ushort bmpNo, ulong lens)
{
ushort i,startblock;
int rightAddr;
uchar find;
startblock = 0;//開始檢測(cè)的塊
find = 0;
for(i = BmpStartBlock;i < BLOCKS;i++)
{
if((blockuse[i] == 0xff) || (blockuse[i] == (bmpNo+1)))//當(dāng)前塊沒(méi)有使用或存放的是當(dāng)前畫面
{
if(startblock == 0) startblock = i;
if(find == 1 && blockuse[i] == 0xff)
break; //如果已找到合適地址并當(dāng)前塊未使用
blockuse[i] = 0xff; //設(shè)置為未使用
//未使用的塊或原來(lái)畫面使用的塊夠空間
if((i - startblock + 1)*BLOCK_BYTES >= lens && find == 0)
{
find = 1;
SetBlockUse(startblock,i,bmpNo); //設(shè)置塊使用標(biāo)記
rightAddr = startblock*BLOCK_BYTES; //合適存放當(dāng)前畫面的nandflash地址
}
}
else
{
if(find == 1) break;
startblock = 0;
}
}
return rightAddr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 函數(shù): 把BMP從內(nèi)存拷貝到NandFlash.
// 描述:
//
// [參數(shù)表]
//
// 返回:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int CopyBmpToNandFlash (ushort bmpNo, ulong lens, ulong bitlens)
{
char buf[128];
if(lens > 0) lens = ((lens - 1)/BLOCK_BYTES + 1)*BLOCK_BYTES;// 長(zhǎng)度以塊對(duì)齊
bmpLens[bmpNo] = lens; //長(zhǎng)度
bitbmpLens[bmpNo] = bitlens;
bmpAddr[bmpNo] = findRightAddr(bmpNo,lens);//找到一個(gè)合適存放當(dāng)前畫面的NandFlash地址
sprintf(buf,"bmpNo = %d,write Addr = %x,write len = %x",bmpNo,bmpAddr[bmpNo],bmpLens[bmpNo]);
if (NandErase(bmpAddr[bmpNo], bmpLens[bmpNo]) == 0 )//擦除nandflash
{
return NandWriteData(bmpAddr[bmpNo],BMP_TMPRAM_ADDR,bmpLens[bmpNo]);//寫nandflash
}
return 1;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -