4125|7

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

通过USB下载的NK,第1次是怎么烧到NAND FLASH. [复制链接]

通过USB下载的NK,第1次是怎么烧到NAND FLASH,OEMLanuch( )函数调到了WriteOSImageToBootMedia( )函数,但看CE50下2440的BSP源代码第1次应该不会到OEMLanuch( )函数的.因为在BootloaderMain (void)函数里面有这样的代码:
// (4) call OEM specific pre-download function
    switch (dwAction = OEMPreDownload ())
    {
    case BL_DOWNLOAD:
        // (5) download image
        if (!DownloadImage (&dwImageStart, &dwImageLength, &dwLaunchAddr))
        {
            // error already reported in DownloadImage
            SPIN_FOREVER;
        }
        bDownloaded = TRUE;

        // Check for pTOC signature ("CECE") here, after image in place
        if (*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE)
        {
            dwpToc = *(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET + sizeof(ULONG));
            // need to map the content again since the pointer is going to be in a fixup address
            dwpToc = (DWORD) OEMMapMemAddr (dwImageStart, dwpToc + g_dwROMOffset);

EdbgOutputDebugString ("ROMHDR at Address %Xh\r\n", dwImageStart + ROM_SIGNATURE_OFFSET + sizeof (DWORD)); // right after signature
        }

        // fall through
    case BL_JUMP:
        // Before jumping to the image, optionally check the image signature.
        // NOTE: if we haven't downloaded the image by now, we assume that it'll be loaded from local storage in OEMLaunch (or it
        // already resides in RAM from an earlier download), and in this case, the image start address might be 0.  This means
        // that the image signature routine will need to find the image in storage or in RAM to validate it.  Since the OEM"s
        // OEMLaunch function will need to do this anyways, we trust that it's within their abilities to do it here.
        //
        if (g_bBINDownload && g_pOEMCheckSignature)
        {
            if (!g_pOEMCheckSignature(dwImageStart, g_dwROMOffset, dwLaunchAddr, bDownloaded))
                HALT(BLERR_CAT_SIGNATURE);
        }
        // (5) final call to launch the image. never returned
        OEMLaunch (dwImageStart, dwImageLength, dwLaunchAddr, (const ROMHDR *)dwpToc);
        // should never return
        // fall through
    default:
        // ERROR! spin forever
        HALT (BLERR_INVALIDCMD);
    }


第1次怎么也进不了 case BL_JUMP:分支的,那OEMLaunch函数应该也就不会被调到,所以不会有把NK写到NAND FLASH的操作,那第1次下的NK是怎么写到NAND FLASH的呢?有知道这个逻辑的吗?

最新回复

正在写这个,来学习一下  详情 回复 发表于 2009-4-2 09:39
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个要先烧写一个引导程序到NOR FLASH里面吧
不能直接固化的吧

我的不支持USB,现在用交叉网线直接相连,也挺快的。
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
up
没人知道,就是这段代码应该怎么分析啊?!
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 xqhrs232 的回复:
up
没人知道,就是这段代码应该怎么分析啊?!


-------------------------------------楼主你下载成功了吗?你的BSP能否发给我看看,我们一起看,前段时间我看过不支持USB的EBOOT代码。OK?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
还没成功呢,我的是CE60系统.
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
大概有点明了,因为SWITCH的两个分支间没有BREAK语句,所以两个分支会被顺序执行,也就附带两个操作(一个下载NK,一个烧NK到NAND FLASH)都做了,觉得MS很隐蔽的做法,也不说明一下,明显就是不想让别人知道啊!
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 xqhrs232 的回复:
还没成功呢,我的是CE60系统.


---------------------------------------6.0支持USB下载了?我看到2443的BSP支持的。现在我还是5.0,准备用优龙的BIOS。优龙的挺强的。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
正在写这个,来学习一下
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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