3674|4

59

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

BOOL OEMIsFlashAddr(DWORD dwAddr)的不解。。。 [复制链接]

BOOL OEMIsFlashAddr(DWORD dwAddr)
{
        //EdbgOutputDebugString("OEMIsFlashAddr: 0x%x, %d\r\n", dwPhysStart, bRc);
        // by hmseo to support multipleXIP 061224
//        EdbgOutputDebugString("OEMIsFlashAddr dwAddr: 0x%x\r\n", dwAddr);
        if ((dwAddr >= OS_RAM_IMAGE_BASE) && (dwAddr < (OS_RAM_IMAGE_BASE + OS_RAM_IMAGE_SIZE)))
        {
                return(TRUE);
        }
           
        return(FALSE);
}

OS-RAM-INMAGE-BASE:0X80200000
OS-RAM-IMAGE-SIZE:  0X04C00000
0x80000000到0x88000000的128M空间是映射到SDRAM上的。
return(TRUE)的情况下,这个好象并不是flash的影射空间啊?
希望明白的帮我解释下,谢谢

最新回复

正解  详情 回复 发表于 2009-12-8 10:20
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
PUBLIC下blcommon.c中调用这个函数调用的关系:
// check for flash image. Start erasing if it is.
        if ((fIsFlash = OEMIsFlashAddr (pCurDownloadFile->dwRegionStart))
            && !OEMStartEraseFlash (pCurDownloadFile->dwRegionStart, pCurDownloadFile->dwRegionLength))
        {
            EdbgOutputDebugString ("Invalid Flash Address/Length\r\n");
            
            return (FALSE);
        }
在我的BSP中,OEMStartEraseFlash 直接返回true,OEMIsFlashAddr 代码和你的一样。
具体目的是什么也搞不清楚,通常大家都忽略它了吧。
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
public\common\oak\inc\
//      The bootloader try to erase flash while downloading to speed up
//      the download process. It'll call OEMStartEraseFlash if a flash
//      image is detected. And continue calling ContinueEraseFlash in the
//      course of image download. It'll call OEMFinishEraseFlash when
//      the image download is complete. And OEMWriteFlash aferward.
//
//      If speed is not a concern, OEM can stub StartErase, ContinueErase,
//      and FinishErase function, then performs all the operations in WriteFlash.
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

4
 
首先,你要明白ms引入OEMIsFlashAddr函数的原因。
microsoft设计eboot的时候,为了协调存储设备和pc端通过以太网传送数据速度之间的差异,引入了buffer的机制,而OEMIsFlashAddr就是搞这个的
所以,它是一个可有可无的东西,通过的eboot中都会将其stub
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 guopeixin 的回复:
首先,你要明白ms引入OEMIsFlashAddr函数的原因。
microsoft设计eboot的时候,为了协调存储设备和pc端通过以太网传送数据速度之间的差异,引入了buffer的机制,而OEMIsFlashAddr就是搞这个的
所以,它是一个可有可无的东西,通过的eboot中都会将其stub



正解
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表