|
引用 16 楼 chinatzar1 的回复:
引用 14 楼 xqhrs232 的回复:
还没搞定关注
由于没有搞过SD卡,对bootloader也只能算是了解,所以速度是慢了些.不够有大家的指点应该会快一点.
现在把SD卡读写在裸机上实现了,开始进行bootloader修改.今天在看eboot downloadimage()下的
BOOL OEMReadData(DWORD dwData,PUCHAR pData)
{
BOOL ret;
if(g_bUSBDownload==FALSE)
{
? ret=EbootEtherReadData(dwData,pData);
}
else
{
? ret=UbootReadData(dwData,pData);
}
return(ret);
}
如果g_bUSBDownLoad==FALSE用的USB方式则执行
BOOL UbootReadData(DWORD cbData, LPBYTE pbData)
{
? volatile S3C2450_INTR_REG *s2450INT = (S3C2450_INTR_REG *)OALPAtoVA(S3C2450_BASE_REG_PA_INTR, FALSE);
? UINT8* pbuf = NULL;
while(1)
{
if ((UINT32)g_pDownPt >= readPtIndex + cbData )
{
pbuf = (PVOID)readPtIndex;
memcpy((PVOID)pbData, pbuf, cbData);
pbuf = (PVOID)OALPAtoUA(readPtIndex);
memset(pbuf, 0xff, cbData);
readPtIndex += cbData;
break;
}
else if((UINT32)g_pDownPt == DMABUFFER)
{
/*
if (s2450INT->SRCPND & BIT_USBD) s2450INT->SRCPND? = BIT_USBD;
if (s2450INT->INTPND & BIT_USBD) s2450INT->INTPND = BIT_USBD;
s2450INT->INTMSK &= ~BIT_USBD; // USB Interrupt enable.
*/
}
}
return TRUE;
}
在UbootReadData()进行只是内存的操作,并没有关系到USB的操作,让我有点不理解
这部分内容是的确只有内存的操作,原因是USB的操作在其它函数中通过中断方式,已经将USB获取的数据放到了内存中,所以UbootReadData()只需要到那个内存地址读数据就行了。 |
|