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

📄 relist.c

📁 本方案主要介绍了利用凌阳SPCE061A精简开发板作为控制核心
💻 C
字号:
//====================================================================================
//文件名:relist.c
//功能:读索引表
//日期:2005.04.06
//====================================================================================
#define ROOT_ADDR	0x30000
unsigned int SP_ExtractSamsungFlash(void);
//------------------------------------------------------------------------------------
//索引表结构
//------------------------------------------------------------------------------------
typedef struct
{
	unsigned BookCnt;
	long BookIdx_Addr;
}ROOT_HEAD;

typedef struct
{
	unsigned PageCnt;
	long PageIdx_Addr;
}BOOK_IDX;

typedef struct
{
	long Text_StartAddr;
	long Text_EndAddr;
	long Voice_StartAddr;
	long Voice_EndAddr;
}PAGE_IDX;
//----------------------------------------------------------------------------------------
//========================================================================================
//函数名:Flash_ReadDWord()
//功能:读一个双字
//参数:Addr
//返回值:(Ret2<<16)+(Ret&0x0000ffff)
//日期:2005.04.06
//========================================================================================
unsigned long Flash_ReadDWord(long Addr)
{
	unsigned int Block,Page,Column,i;
	unsigned long Ret,Ret2;
	
	Block = Addr>>14;                                     //
	Page = (Addr&0x3fff)>>9;                              //
	Column = (Addr&0x1ff);                                //根据地址计算块、页和页内地址
	
	//-----------------------------------------------------------------------
	//初始化
	System_Initial();	
	InitSignalLine();  
	SP_InitSamsungFlash();
	//------------------------------------------------------------------------
	//edit by hongyan
	//------------------------------------------------------------------------
	
	Ret =  SP_SamsungReadWord_1(Column,Page,Block);                //取双字的低位字
	Ret2 = SP_SamsungReadWord_1(Column+2,Page,Block);              //取双字的高位字
	
	return (Ret2<<16)+(Ret&0x0000ffff);                            //返回双字
}
//==========================================================================================//
//函数名: Flash_ReadWord()
//功能:读一个字
//参数:Data_Addr
//返回值:Back_Data
//日期:2005.04.06
//==========================================================================================//
unsigned int Flash_ReadWord(long Data_Addr)
{
	unsigned int Column,Block,Page;
	unsigned int Back_Data;
	
	Column = (unsigned int)Data_Addr&0x000001ff;	             //
	Page = (unsigned int)(Data_Addr>>9)&0x001f;                  //
	Block = (unsigned int)((Data_Addr>>8)>>6)&0x0fff;            //根据地址计算块、页和页内地址
	
	Back_Data = SP_SamsungReadWord_1(Column,Page,Block);         //取一个字
	return Back_Data;                                            //返回取出值
}
//===========================================================================================================================================
//函数名称:SearchSnd()
//功能:读索引表
//参数;uiBookIdx、uiPageIdx、*Text_StartAddr、*Text_EndAddr、*Voice_StartAddr、*Voice_EndAddr
//返回值:*Text_StartAddr、*Text_EndAddr、*Voice_StartAddr、*Voice_EndAddr
//日期:2004.04.05
//===========================================================================================================================================
unsigned SearchSnd(unsigned uiBookIdx ,unsigned uiPageIdx,long *Text_StartAddr,long *Text_EndAddr,long *Voice_StartAddr,long *Voice_EndAddr)
{
	unsigned uiTemp;
	unsigned TempAddrLow,TempAddrHigh;
	long BookIdxAddr,PageIdxAddr,PageAddr;

	BookIdxAddr = Flash_ReadDWord(ROOT_ADDR + 2);			                           //得到书索引地址
	PageIdxAddr = Flash_ReadDWord(BookIdxAddr + uiBookIdx * sizeof(BOOK_IDX)*2 + 2);   //
	PageIdxAddr = PageIdxAddr + uiPageIdx*sizeof(PAGE_IDX)*2;                          //得到页索引地址                                  
	
	*Text_StartAddr = Flash_ReadDWord(PageIdxAddr);                                    //得到文本初始地址
	*Text_EndAddr = Flash_ReadDWord(PageIdxAddr + 4);                                  //得到文本结束地址
	*Voice_StartAddr = Flash_ReadDWord(PageIdxAddr + 8);                               //得到语音起始地址
    *Voice_EndAddr = Flash_ReadDWord(PageIdxAddr + 12);                                //得到语音结束地址

	return 1;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -