4364|10

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教关于BOOT跳到OAL的疑问??? [复制链接]

在boot的最后调用了 OEMLaunch 函数 从BOOT跳到了 oal的Startup
以下是OEMLaunch 的原型:
void OEMLaunch(DWORD dwImageStart, DWORD dwImageLength, DWORD dwLaunchAddr, const ROMHDR *pRomHdr)
其中第三个参数dwLaunchAddr是通过VATOPA转换成物理地址传给了汇编中的launch函数
这个地址就是NK的启动地址
请问:
1、这个地址是否是FLASH的物理地址,跟FLASH有关系吗?是不是我把NK下载到FALSH的起始地址呢??

2、我看blcommon中对这个地址是通过解析NK得到的,也就是通过分析DownloadManifest(大概是这样不敢确定)得到的NK的启动地址
   可是我下载的是NK.nb0,好象blcommon中并没有对nb0这种格式解析,也就是没有得到DownloadManifest,导致后面的很多地方都是错的
   所以我想直接把这个启动地址的虚拟地址传给 OEMLaunch ,不知道这个是否可行

3、对于我需要的这个启动地址,请问在CONFIG.BIB中或者其他的配置文件中是否已经确定了??

最新回复

jwj
ding  详情 回复 发表于 2009-5-31 13:02
点赞 关注

回复
举报

94

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
占个座 学习下!!
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1.这个地址是OAL在RAM里面的地址,而不是flash的。
2.对于同一个bsp,nk在ram的地址是固定的(除非每次都改一下),即使nk.nb0不包含也没关系,因为eboot中已经有了。
最好还是下nk.bin。nk.nb0一般提供给生产线通过烧录器直接烧录时用的。
3.已确定。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
"1.这个地址是OAL在RAM里面的地址,而不是flash的"请问这个地址怎么确定呢???
以下是我的config.bib:
IF WINCEDEBUG=debug
    ;--------------------------------------------------------
    ; NK Start address  length = 40M
    ;--------------------------------------------------------
    #define                NKSTART                80100000
    #define                NKLEN                02800000
       
    #define                RAMSTART        82900000
    #define                RAMLEN                01700000   
    ELSE
    ;-------------------------------------------------------
    ; length = 30M
    ;-------------------------------------------------------
    #define                NKSTART                80100000
    #define                NKLEN                01B00000
       
    #define                RAMSTART        81F00000
    #define                RAMLEN                02100000
    ENDIF
问题1:是否就是0x80100000这个地址呢?
问题2:我将这个config.bib中加了一项
   IF IMGFLASH !
        .....(同上面的内容)
    ELSE ;IMGFLASH
        #define     NKSTART     9CA80000  
        #define     NKLEN       01B00000      
        #define     RAMSTART    81F00000
        #define     RAMLEN      05A00000
之所以这样做是因为我WINCE42下的BSP是有这样一段的,即有这么一段用IMGFLASH控制的 ,貌似就是XIP启动方式(我也不太清楚)

可是新的这个BSP并没有IMGFLASH这个宏(顺便说一下,我的硬件是PXA270+NOR flash)

那么如果我加了这个IMGFLASH宏想让系统从NKSTART = 9CA80000,还需要做其他的工作吗??如果这样写那是不是OEMLaunch的第3个参数就可以是0x9CA80000???
如果我不加这段宏IMGFLASH,是不是可以把NK搬到RAM中启动??我不知道我的BOOT哪里做了这个工作?

问题3:因为我刚刚做完eboot,NK那还没完善,所以测试下载NK时我用的是新的BOOT+WINCE42下的NK.NB0
可是有个很奇怪的现象就是,下载完NK后,再重起竟然可以启动NK,并进入到CE系统中
之所以觉得奇怪是因为:
1)、这两个系统的OEMAddressTable有天地一样的差别,那么是不是这个在BOOT中的OEMaddressTable,进入到KERNEL后就失效了?而进入KERNEL后还是用的OAL中引用OEMaddressTable??可是前后两个OEMaddressTable不一样居然也可以?
2)、目前我给OEMLaunch的第三个参数传的就是NK在FLASH的地址,可是我看我以前的BSP(WINCE42下的)发现这个Launch的地址是
     (NK放在FLASH的地址+0x1000),不知道这0x1000是什么意思,于是,我在向新的BOOT中的OEMLaunch的第三个参数中传的地址首先我直接传了NK放在FLASH的地址0x9CA80000,接着又换成0x9CA81000,把这两种BOOT下到板子上居然都可以启动那个旧的NK,
难道我的BOOT还会自动搜索NK的位置?????

这三个问题是我现在的搞的我非常迷糊的疑问,请各位高手帮忙分析一下
另外,我主要想确定一下我到底需要给OEMlaunch的第三个参数传哪个地址呢,然后我才可以向下做OAL层!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
请问:
1、这个地址是否是FLASH的物理地址,跟FLASH有关系吗?是不是我把NK下载到FALSH的起始地址呢??

      跟FLASH没有关系,只要在虚拟的2G空间及0x80000000地址以上就行!2、我看blcommon中对这个地址是通过解析NK得到的,也就是通过分析DownloadManifest(大概是这样不敢确定)得到的NK的启动地址
  可是我下载的是NK.nb0,好象blcommon中并没有对nb0这种格式解析,也就是没有得到DownloadManifest,导致后面的很多地方都是错的
  所以我想直接把这个启动地址的虚拟地址传给 OEMLaunch ,不知道这个是否可行 ?

      CONFIG.BIB文件中定义的
      NK      803b0000  012d0000  RAMIMAGE
     这个803b0000并不能作为NK的启动地址,直接进行跳转,需要先解析,你可以直接用二进制工具打开nk.bin,从倒数第5个BYTE开始的4个BYTE为跳转地址,例如:803b470c!


3、对于我需要的这个启动地址,请问在CONFIG.BIB中或者其他的配置文件中是否已经确定了??

     romimage.exe打包后即确定了,如第二问!
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
1、这个地址是否是FLASH的物理地址,跟FLASH有关系吗?是不是我把NK下载到FALSH的起始地址呢??

      跟FLASH没有关系,只要在虚拟的2G空间及0x80000000地址以上就行!

2、我看blcommon中对这个地址是通过解析NK得到的,也就是通过分析DownloadManifest(大概是这样不敢确定)得到的NK的启动地址
  可是我下载的是NK.nb0,好象blcommon中并没有对nb0这种格式解析,也就是没有得到DownloadManifest,导致后面的很多地方都是错的
  所以我想直接把这个启动地址的虚拟地址传给 OEMLaunch ,不知道这个是否可行 ?


      CONFIG.BIB文件中定义的
      NK      803b0000  012d0000  RAMIMAGE
    这个803b0000并不能作为NK的启动地址,直接进行跳转,需要先解析,你可以直接用二进制工具打开nk.bin,从倒数第5个BYTE开始的4个BYTE为跳转地址,例如:803b470c!


3、对于我需要的这个启动地址,请问在CONFIG.BIB中或者其他的配置文件中是否已经确定了??
    romimage.exe打包后即确定了,如第二问!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
“你可以直接用二进制工具打开nk.bin”
请问:是打开NK.bin还是NK.NB0??
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
nk.bin
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

9
 
哦我找到了哈哈
谢谢nick_TS16949

NK.NB0也有,不过是在后面的一堆‘0’之前

那就是说blcommon其实根本不能通过解析NK.NB0来得到下载地址,

因为NK.NB0是有一部分空的,所以在BLCOMMON中只有对NK.BIN解析的代码,而没有对NK.NB0解析的

那么 大家如果用NK.NB0 都是这么确定下载地址的吗???
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

10
 
你这么一说我又晕了!!!!

我用的NK是NB0,那么是用config.bib中定义的NKSTART呢还是用NK.BIN中解析的起始地址呢

另外,我还在对用FALSH的虚拟地址还是RAM的地址有疑问

因为,貌似我的WINCE42下的BSP用的launch地址就是FLASH的物理地址
:if ( ((DWORD)lpdwToc & 0x90000000) == 0x80000000 )  //这个条件是什么?
        {
                if (FlashWrite( RAM_IMAGE_START, dwPhysLen))  //应该是跳到这个函数中?step11  FlashWrite返回0
                {
                        EdbgOutputDebugString("Flash programming Error.  System halted!\r\n");
                        while (1);
                }
                Launch2(0x81000);   //这里应该是物理地址
        }
        else
        {
                   Launch(RAM_IMAGE_START + 0x1000);
        }
为什么是0x81000呢??
以下是WINCE42的OEMaddressTable:
        DCD BOOT_FLASH_BASE_C_VIRTUAL, BOOT_FLASH_BASE_PHYSICAL, 32 ; (8000 0000, 0000 0000) nCS0: BOOT ROM
        DCD CS2_L_BASE_C_VIRTUAL, CS2_L_BASE_PHYSICAL,         8 ; (8200 0000, 0800 0000) nCS2
        DCD CS2_H_BASE_C_VIRTUAL, CS2_H_BASE_PHYSICAL,         8 ; (8280 0000, 0A00 0000) nCS2
        DCD SDRAM_BASE_C_VIRTUAL, SDRAM_BASE_PHYSICAL,         128 ; (96C0 0000, A000 0000) everything SDRAM-related (eboot RAM, eboot RAMIMG, nk RAM, nk RAMIMAGE, nk MEMDEFS, ethdbg buffs)

从OEMaddressTable看怎么也看不出来是跟SDRAM有关啊!

难道我的WINCE42的是XIP的形式(PXA270+Norflash)

如果NK是搬移到RAM中使用的,那么这段代码在哪呢??
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

11
 
ding
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表