6903|25

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于WINCE50的EBOOT [复制链接]

现在在重新做WINCE50的EBOOT

直接用MAINSTONEII的EBOOT原代码和BLCOMMON框架(WINCE500\PLATFORM\COMMON\SRC\COMMON\BOOT\BLCOMMON)

修改完那几个平台函数后发现,什么反映都没有

又在MAINSTONEII的EBOOT中的startup.s中打印信息,点灯,还是没反应!!

后来发现原来这个startup.s是个二手货!!!入口不是startup,而是OAL_Startup

而真正的入口在\WINCE500\PLATFORM\COMMON\SRC\ARM\INTEL\PXA27X\STARTUP下的startup.s

可是有个疑问::难道这个地方我需要修改吗 ????

我想这里是跟外设没有关系的,既然我用的270,那么这里都应该是通用的,为什么会出现问题呢??

还有:我的BOOT中的source:
TARGETLIBS= \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_startup_pxa27x.lib \
我在工程中没找到这个LIB,TARGETLIBS下应该是静态链接,不需要拷贝到工程文件夹中吧??
如果是这样,那么这里就没错误了

还有个问题就是: TARGETLIBS 和SOURCELIBS的区别是什么呢??
          是否是  静态链接   和 动态链接   的区别??

最新回复

问题1已经搞定 总结: 1、修改对应的OEMaddressTable,虽然程序还没走到这,但是早晚需要修改    注意FLASH和SDRAM大小 2、注意硬件连接方式:FLASH、SDRAM是16位还是32位    注意其中的一些宏  详情 回复 发表于 2009-4-9 15:16
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮顶。
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
ding!
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
我觉得你可以把下面的代码搬到BSP来,如果你这样去修改微软下的代码不合适的。

 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
TARGETLIBS,如果一个库以DLL的形式提供给调用者,就需要用TARGETLIBS,它只链接一个函数地址,系统执行时会将被链接的库加载。比如coredll.lib就是这样的库文件。即动态链接。

SOURCELIBS,将库中的函数实体链接进来。即静态链接,用到的函数会在我们的文件中形成一份拷贝


看来时你说的
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

6
 
EBOOT 用的是现成的  ,
楼主如果高定的话可以总结写个blog,好学习下//
^_^
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
1. \WINCE500\PLATFORM\COMMON\SRC\ARM\INTEL\PXA27X\STARTUP下的startup.s 是給 NK & EBOOT 共用的.

2. StartUp 最後會去呼叫 OAL_Startup, 所以你修改這兩個中哪個地方, 應改都會被執行到, 你控制 led 沒反應, 應是你的程式有問題, 或是你的 build-燒錄 eboot 的步驟有錯.

3. 有需要的話, 你是應該要去修改, 但通常建議你把它 copy 至你的 bsp 內, 再將用到該 lib 的 sources 中的 TARGETLIBS 的路徑從 $(_PLATCOMMONLIB) 改為 $(_TARGETPLATROOT)\lib.

4. $(_PLATCOMMONLIB) 指的是 c:\WINCE500\platform\common\lib, 它的 source code 在 %_WINCEROOT%\platform\common 下, 不在你的 bsp 內.

5. TARGETLIBS 和 SOURCELIBS 的分別, 在別帖中已回答, 不再贅述.

Paul, Chao @ Techware

 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
TO paul_chao:

"2. StartUp 最後會去呼叫 OAL_Startup, 所以你修改這兩個中哪個地方, 應改都會被執行到, 你控制 led 沒反應, 應是你的程式有問題, 或是你的 build-燒錄 eboot 的步驟有錯. "
如果不是我烧写的有问题的话,我的程序是应该没问题的
现在我发现程序在BOOT入口函数startup中bl      xlli_mem_init死掉了,进里面就出不来
bl  Light_HexLEDs灯亮
bl Black_HexLEDs灯灭
bl      xlli_mem_init
bl  Light_HexLEDs灯亮这个没被执行到,而且做了几次实验,可以确定是bl xlli_mem_init就没有返回!!
我对照了一下我以前用的BOOT中的xlli_mem_init,发现跟这里跳转到的xlli_mem_init区别太大了!
我以前用的是WINCE4的BOOT,但是觉得xlli中的文件应该跟WINCE版本没什么关系!

另外我对照了几个BSP发现这个xlli_mem_init函数都不太一样,只不过我的跟他们的差别更大

xlli_mem_init这个不是在初始化CPU吗??难道跟板子有关系??为什么会跟我的板子不兼容呢??


“build-燒錄 eboot 的步驟有錯”这个应该没错误吧,因为以前一直是用JTAG+JFLASH烧写的
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

9
 
xlli_mem_init 是在做 memory initialize 的, 這跟你的板子的 SDRAM 有很大的關係, 每個板子用的 SDRAM 型號不同時, 都要做一點 fine tune.

Paul, Chao @ Techware
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
如6楼所说   你应该自己重做个LIB  COPY一个出来  可以去网上找找看   不知道你用的什么网卡  我这到是有DM9000的
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

11
 
网卡??我没用网卡!
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

12
 
我的SDRAM型号是:K4S511633F
应该算是标配吧??
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

13
 
paul_chao 兄:
请问烧写EBOOT的JFLASH是不是可以设置EBOOT.NB0的SIZE??
我以前一直烧写128M的
现在在WINCE5下生成256M的同样用以前的JFLASH
不知道这会不会有问题???
???????????
???????????
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

14
 
1. JFlash 是把 CPU 的所有接脚全部模擬成類似 GPIO 的模式, 不會用到外部的 SDRAM, 故跟你外部 SDRAM 的設定無關.

2. 在印象中, JFlash 是在 PC 端執行的程式, 應會自動檢查你的 EBoot.nb0 的大小, 透過 PC 的 Parallel port 輸出.

3. 若是你的 Size 指的是 Flash, 那麼不同的 Size 意謂著不同的型號, 也意謂著不同的燒錄方式, 故須修改你的 JFlash 來支援.

K4S511633F 是 64M x 4 的配置, 你之前 128M 是 32Mx4 還是 K4S511633F x 2 的配置??, 若型號有改, 則 xlli_mem_init 就要修改

SDRAM 沒什麼標配, 你應該看你原始的 BSP 運行的板子上用的是哪一顆, 那就是你的 BSP 的標配, 但另一個 BSP 就不保證了, 基本上, BSP 是跟著 Board 走的.

Paul, Chao @ Techware
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

15
 
学习。。。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

16
 
回Paul_Chao:
3. 若是你的 Size 指的是 Flash, 那麼不同的 Size 意謂著不同的型號, 也意謂著不同的燒錄方式, 故須修改你的 JFlash 來支援.
   这个是指的EBOOT.NB0的大小

我的板子是K4S511633F x 2 的配置

现在还有个奇怪的问题:
先来看看我的EBOOT中的source片段:
TARGETLIBS= \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_startup_pxa27x.lib \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_blcommon.lib \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_blnk.lib \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_memory_arm.lib \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_kitl.lib \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_log.lib \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_ethdrv_lan91c.lib \
  $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_other.lib \
  $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\mainstoneii_freq.lib \
  $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\mainstoneii_dbgserial.lib \
  $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\mainstoneii_io.lib \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\pxa27x_xllp.lib \(这个以前是(_COMMONOAKROOT)下的)
  $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\eboot.lib \
  $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ne2kdbg.lib \
  $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fulllibc.lib \
  $(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib

其中oal_startup_pxa27x.lib 是在\WINCE500\PLATFORM\COMMON下
    pxa27x_xllp.lib现在应该是在\WINCE500\PLATFORM\MYBSP\Lib下
可是我想生成新的EBOOT.NB0
先在PB中的FileView中找到WINCE500\PLATFORM\COMMON\SRC\ARM\INTEL\PXA27X
    然后右键Build current project
然后又找到WINCE500\PLATFORM\MYBSP\SRC\XLLP
    也Build current project
最后找到WINCE500\PLATFORM\MYBSP\SRC\Bootloader\Eboot
    也Build current project (Clean before building都已经选上了)
这样生成的EBOOT.NB0烧进去居然跟以前没修改的EBOOT.NB0一样效果(通过修改灯来区别)
请问这么编译EBOOT不可以吗?

后来我利用build and sysgen再烧写进去就可以更新EBOOT
可是我现在是在调试啊,每次sysgen我都受不了更何况是build and sysgen??
请问有没有好的办法??
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

17
 
1. 所以你現在的 SDRAM 是 K4S511633F x 2 = 64M x 2 = 128 MBytes, 不是 256 MB.

2. EBoot 的生成方式應是可以啊, 最後會放在 %_TARGETPLATROOT%\target\ARMV4I\retail\EBoot.nb0.
通常我會用 Open Build Release Directory, 鍵入 "cd %_TARGETPLATROOT%\src\bootloader", "set WINCEREL=1", "build -c"
有幾個 folder 要改, 就開幾個 DOS box, 切到相對應的 folder 去 build

Paul, Chao @ Techware
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

18
 

您是用命令行编译,
WINCE4我是这么做的
但是到了CE5有方便的方法我就基本没用命令行,可是应该是一样的吧
我刚才试了一下sysgen是可以更新的

不过时间也比较长

另外弱弱的问:WINCE5自带的那个xlli_mem_init是256 MB的吗?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

19
 
1. 你有看過 MainStoneII 的 OEMAddressTable 嗎?? 它是 64 MB 的吧.
2. MS 有發佈 MainStoneIII 的 BSP, 它是 128 MB 的.
3. 256 MB 的, 你用那一顆應是 K4S511633F x 4 吧. 多用了一支 Chip Select, 而且 Use large 1-Gbyte memory map(MDCNFG - MDENX = 1).

Paul, Chao @ Techware
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

20
 
我的是K4S511633F x 2 = 128MB的 SDRAM
刚才看了一下OEMAddressTable:
ALIGN
g_oalAddressTable

        DCD     0x80000000, 0xA0000000, 64      ; MAINSTONEII: SDRAM (64MB).      
        DCD     0x84000000, 0x5C000000,  1      ; BULVERDE: Internal SRAM (64KB bank 0).
        DCD     0x84100000, 0x58000000,  1      ; BULVERDE: Internal memory PM registers.
        DCD     0x84200000, 0x4C000000,  1      ; BULVERDE: USB host controller.
        DCD     0x84300000, 0x48000000,  1      ; BULVERDE: Memory controller.
        DCD     0x84400000, 0x44000000,  1      ; BULVERDE: LCD controller.
        DCD     0x84500000, 0x40000000, 32      ; BULVERDE: Memory-mapped registers (peripherals).
        DCD     0x86500000, 0x3C000000, 64      ; BULVERDE: PCMCIA S1 common memory space.
        DCD     0x8A500000, 0x38000000, 64      ; BULVERDE: PCMCIA S1 attribute memory space.
        DCD     0x8E500000, 0x30000000, 32      ; BULVERDE: PCMCIA S1 I/O space.
        DCD     0x90500000, 0x2C000000, 64      ; BULVERDE: PCMCIA S0 common memory space.
        DCD     0x94500000, 0x28000000, 64      ; BULVERDE: PCMCIA S0 attribute memory space.
        DCD     0x98500000, 0x20000000, 32      ; BULVERDE: PCMCIA S0 I/O space.
        DCD     0x9A500000, 0xE0000000,  1      ; MAINSTONEII: Zero-bank
        DCD     0x9A600000, 0x14000000,  1      ; MAINSTONEII: nCS5: eXpansion board header.
        DCD     0x9A700000, 0x10000000,  1      ; MAINSTONEII: nCS4: SMSC 91C111 Ethernet controller.
        DCD     0x9A800000, 0x0A000000,  1      ; MAINSTONEII: nCS2 (upper half): 2MB SRAM.
        DCD     0x9A900000, 0x08000000,  1      ; MAINSTONEII: nCS2 (lower half): Board registers (FPGA).
        DCD     0x9AA00000, 0x04000000, 32      ; MAINSTONEII: nCS1: Secondary flash (32MB).
        DCD     0x9CA00000, 0x00000000, 32      ; MAINSTONEII: nCS0: Boot Flash (32MB).
        DCD     0x9EA00000, 0x50000000,  1      ; BULVERDE: Camera peripheral interface.
        DCD     0x9EB00000, 0x15000000,  1      ; MAINSTONEII: nCS5: QL MAB IDE interface.
        DCD     0x9EC00000, 0x16000000,  1      ; MAINSTONEII: nCS5: QL MAB SDIO interface.
        DCD     0x9F000000, 0x17000000, 16      ; MAINSTONEII: nCS5: QL MAB PCI interface.        
        DCD     0x00000000, 0x00000000,  0      ; end of table
我还有64M怎么办呢?可以分配不连续的内存空间给它吗??
难道还得全部往下串??
另外我现在的EBOOT还没调用这个OEMaddressTable吧?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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