eboot 中的flash.c中的CFI_Write_Block在哪里定义的?

kaios1 2009-03-02 10:19:26
如题
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
friendfish 2009-03-02
  • 打赏
  • 举报
回复
具体点,我的flash.c里面没有么
kaios1 2009-03-02
  • 打赏
  • 举报
回复
就是经常能见到的所谓的微软提供的代码里面:
比如:
BOOL OEMWriteFlash(DWORD dwStartAddr, DWORD dwLength)
{
//EdbgOutputDebugString("OEMWriteFlash 0x%x 0x%x\r\n", dwStartAddr, dwLength);

/* DWORD dwFlashAddr, dwExtraBytes = 0;
LPBYTE pbCache = NULL;
UCHAR nNumBlocks = 0;


//确认起始地址和长度都在Flash区域内
if(!OEMIsFlashAddr(dwStartAddr) || !OEMIsFlashAddr(dwStartAddr + dwLength - 1))
{
return(FALSE);
}

//确认起始地址是Block字节对齐的
if (dwStartAddr % FLASH_BLOCK_SIZE)
{
return(FALSE);
}

//计算要写入的block数量
nNumBlocks = (UCHAR) (dwLength/FLASH_BLOCK_SIZE);
dwExtraBytes = (dwLength % FLASH_BLOCK_SIZE);
dwFlashAddr = dwStartAddr;
pbCache = OEMMapMemAddr (dwStartAddr, dwFlashAddr);


//写Flash
while(nNumBlocks)
{
if (CFI_Write_Block((DWORD*)dwFlashAddr, (DWORD*)pbCache, FLASH_BLOCK_SIZE, NULL) != PASS)
{
EdbgOutputDebugString("ERROR: OEMWriteFlash - unable to write to block (block address=0x%x).\r\n", dwFlashAddr);
return(FALSE);
}

dwFlashAddr += FLASH_BLOCK_SIZE;
pbCache = OEMMapMemAddr (dwStartAddr, dwFlashAddr);
--nNumBlocks;
}

//将额外的数据写入Flash中
if(dwExtraBytes)
{
if (CFI_Write_Block((DWORD*)dwFlashAddr, (DWORD*)pbCache, dwExtraBytes, NULL) != PASS)
{
EdbgOutputDebugString("ERROR: OEMWriteFlash - unable to write to block (block address=0x%x).\r\n", dwFlashAddr);
return(FALSE);
}
}
*/

return TRUE;
}

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧