4203|11

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于OEMaddressTable和config.bib EBOOT。BIB [复制链接]

paul_chao大侠:
现在将我的OEMaddressTable和config.bib、EBOOT.BIB都贴出来,如下:
1、WINCE50自带的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 (in reserved slot - no physical memory required).
        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

以下是修改后的:
ALIGN
g_oalAddressTable

        DCD     0x80000000, 0xA0000000, 128     ; MAINSTONEII: SDRAM (128MB).
        DCD     0x88000000, 0x5C000000,   1     ; BULVERDE: Internal SRAM (64KB bank 0).
        DCD     0x88100000, 0x58000000,   1     ; BULVERDE: Internal memory PM registers.
        DCD     0x88200000, 0x4C000000,   1     ; BULVERDE: USB host controller.
        DCD     0x88300000, 0x48000000,   1     ; BULVERDE: Memory controller.
        DCD     0x88400000, 0x44000000,   1     ; BULVERDE: LCD controller.
        DCD     0x88500000, 0x40000000,  32     ; BULVERDE: Memory-mapped registers (peripherals).
        DCD     0x8A500000, 0x3C000000,  16     ; BULVERDE: PCMCIA S1 common memory space.
        DCD     0x8B500000, 0x38000000,  64     ; BULVERDE: PCMCIA S1 attribute memory space.
        DCD     0x8F500000, 0x30000000,   1     ; BULVERDE: PCMCIA S1 I/O space.
        DCD     0x8F600000, 0x2C000000,  16     ; BULVERDE: PCMCIA S0 common memory space.
        DCD     0x90600000, 0x28000000,  64     ; BULVERDE: PCMCIA S0 attribute memory space.
        DCD     0x94600000, 0x20000000,   1     ; BULVERDE: PCMCIA S0 I/O space.
        DCD     0x9A500000, 0xE0000000,  1      ; MAINSTONEII: Zero-bank (in reserved slot - no physical memory required).
        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     0x9CA00000, 0x00000000, 32      ; MAINSTONEII: nCS0: Boot Flash (32MB).

        DCD     0x9EA00000, 0x50000000,  1      ; BULVERDE: Camera peripheral interface.
        
        DCD     0x00000000, 0x00000000,  0      ; end of table

最新回复

1. 可以. 2. 你的 config.bib, 若在   2.1 IF IMGFLASH ! 时, NK 放在 0x96CB8000, 查 OEMAddressTable 无对应. NK    96CB8000  01A00000 RAMIMAGE   2.2 IF IMGFLASH   时, NK 放在 0x80080000, 查 OEMAddressTable 是 SDRAM, 而不是在 NOR Flash. NK  80080000  01A00000 RAMIMAGE         DCD    0x80000000, 0xA0000000, 128    ; MAINSTONEII: SDRAM (128MB). 3. 若只是要点 LED, 那问题好解决 xlli_GPIOREGS_PA_BASE EQU 0x40e00000 ; 搭配 OEMAddressTable 中的    DCD    0x88500000, 0x40000000,  32    ; BULVERDE: Memory-mapped registers (peripherals). ; 该 PA 范围 0x40000000 ~ 0x42000000, xlli_GPIOREGS_PA_BASE 刚好在此范围, 最後加的 0x20000000 是 Cache to Uncache offset xlli_GPIOREGS_UA_BASE EQU (xlli_GPIOREGS_PA_BASE - 0x40000000 + 0x88500000 + 0x20000000) EXPORT LEDTEST AREA LEDTESTASM,CODE,READONLY LEDTEST     ldr r0, =xlli_GPIOREGS_UA_BASE  ; 其它的程式码不需改变, MMU 开启後, 只需将存取位址由 Physical Address 改为 Uncached Virtual Address. Paul, Chao @ Techware  详情 回复 发表于 2009-4-29 10:15
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
config.bib:
;       Name | Virtual/Cached | Size | Region Type
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MEMORY

IF IMGFLASH !
        NK    96CB8000  01A00000 RAMIMAGE

IF SDRAM_SIZE_128_MB !
        RAM   98700000  01F00000 RAM
ENDIF
IF SDRAM_SIZE_128_MB
        RAM   98700000  05F00000 RAM
ENDIF
ENDIF

IF IMGFLASH
IF FLASH_SIZE_16_MB
        NK   80080000  00E00000 RAMIMAGE
ENDIF
IF FLASH_SIZE_32_MB
        NK   80080000  01A00000 RAMIMAGE
ENDIF

IF SDRAM_SIZE_128_MB !
        RAM  96C00000  03A00000  RAM
ENDIF
IF SDRAM_SIZE_128_MB
        RAM  96C00000  07A00000  RAM
ENDIF
ENDIF

; *****************************************************************************
; Common RAM areas - Must match MemDefs.h and bvd1.inc:
; Currently Reserving [9A90 0000 - 9ABE 0000] == 3 MB
; This area is reserved regardless of the build type
; (i.e. FLASH, !FLASH, EBOOT, !EBOOT)

IF SDRAM_SIZE_128_MB !
        DISPLAY    9A600000  002B0000  RESERVED
        CAMERA_DMA 9A900000  001D0000  RESERVED
        IM_SAV     9AB00000  00040000  RESERVED
        AUD_DMA    9AB40000  0000A000  RESERVED
        SLEEP_SAV  9AB4A000  00001000  RESERVED
        DRV_GLB    9AB4B000  00001000  RESERVED
        CACHE_FLG  9AB4C000  00001000  RESERVED
        OHCI_DMA   9AB4D000  00009000  RESERVED
        GDE_BUF    9AB56000  00004000  RESERVED
        SDMMC_BUF  9AB5A000  00004400  RESERVED
        UNUSED_BUF 9AB5E400  00080000  RESERVED
        EDBG       9ABE0000  00020000  RESERVED
ENDIF

IF SDRAM_SIZE_128_MB
        DISPLAY    9E600000  002B0000  RESERVED
        CAMERA_DMA 9E900000  001D0000  RESERVED
        IM_SAV     9EB00000  00040000  RESERVED
        AUD_DMA    9EB40000  0000A000  RESERVED
        SLEEP_SAV  9EB4A000  00001000  RESERVED
        DRV_GLB    9EB4B000  00001000  RESERVED
        CACHE_FLG  9EB4C000  00001000  RESERVED
        OHCI_DMA   9EB4D000  00009000  RESERVED
        GDE_BUF    9EB56000  00004000  RESERVED
        SDMMC_BUF  9EB5A000  00004400  RESERVED
        UNUSED_BUF 9EB5E400  00080000  RESERVED
        EDBG       9EBE0000  00020000  RESERVED
ENDIF

        ZBANK      96500000  00100000  RESERVED

;*******************************************************************************************************************
;*******************************************************************************************************************
CONFIG

; ROMFLAGS is a bitmask of options for the kernel
;       ROMFLAGS        0x0001  Disallow Paging
;       ROMFLAGS        0x0002  Not all KMode
;       ROMFLAGS        0x0004  CELog enable

COMPRESSION=ON
KERNELFIXUPS=ON
PROFILE=OFF
ROMFLAGS=2

IF IMGFLASH !
   ROMSTART=96CB8000
   ROMWIDTH=32
ENDIF

IF IMGFLASH
    ROMSTART=80080000
    ROMWIDTH=32
ENDIF

IF FLASH_SIZE_16_MB
        ROMSIZE=0E00000
ENDIF

IF FLASH_SIZE_32_MB
        ROMSIZE=1A00000
ENDIF

FSRAMPERCENT=0x60000000
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
EBOOT.BIB:
; Memory Map
; ----------
;
; 8000.0000 -+
;            | Bootloader Stack (64KB)
; 8001.0000 -+
;            | Bootloader RAM (64KB)
; 8002.0000 -+
;            | Bootloader Code (256KB)
; 8006.0000 -+
;            | GAP (reserved for future)
; 800F.F000 -+
;            | ARGS (4KB)
; 8010.0000 -+
;            |
;            | OS (NK) Code (48MB)
;            |
; 8310.0000 -+   **auto-size**
;            |
;            | OS (NK) RAM (15MB)
;            |
; 8400.0000 -+
;
;******************************************************************************

MEMORY

;   Name     Start     Size      Type
;   -------  --------  --------  ----
    STACK    80000000  00010000  RESERVED
    RAM      80010000  00010000  RAM
    EBOOT    80020000  00040000  RAMIMAGE
    RSVD     80060000  0009F000  RESERVED
    ARGS     80FF0000  00001000  RESERVED


CONFIG

    AUTOSIZE=OFF
        COMPRESSION=OFF
        PROFILE=OFF
        KERNELFIXUPS=ON
   
        ROMSTART=80020000
        ROMWIDTH=32
        ROMSIZE=00040000

    ; The bootloader is fixed up to run from RAM, but is stored in flash.  ROMOFFSET
    ; adjusts the .bin file record headers to that they lie in flash (this tells the
    ; bootloader already on the device to store the image in flash).
    ROMOFFSET=3C9E0000

MODULES

;   Name    Path                                                    Memory Type
;   ------  ----------------------------------------------          -----------
    nk.exe  $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.exe  EBOOT
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
说明:
1、之所以要修改OEMAddressTable,是因为以前的那个Table的SDRAM是64M的
   而我的板子上是128M的

2、为什么我说只要修改了OEMAddressTable就会卡死在打开MMU着
   是因为以前我调WINCE42下的EBOOT时,因为当时我换了FLASH(从32M升到64M)所以我需要在OEMAddressTable中将FLASH的
   SIZE变大,
   刚开始我是把FALSH的虚拟空间后面的依次变大,顺序向下串,程序就卡死在打开MMU那了
   后来我把这个TABLE改动了一点,将PCMCIA直接去掉,空了出来给FLASH另外需要的32M,这样才可以跳过MMU那,正常启动了
   所以我觉得是因为OEMAddressTable改动会造成卡死在打开MMU那
   (WINCE42和WINCE50的虚拟空间分配顺序是不一样的)
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
1. 請問 lz 的 IMGFLASH, SDRAM_SIZE_128_MB 等設定為何 ??

2. lz 目前是要 debug EBoot 還是 NK, 其執行位置為何?? (是在 NOR FLASH 還是 RAM??)

3. OEMAddressTable 不可重疊, 故修改時應注意, 其它的 Virtual Address 位置是否要一併修改.

4. LZ 的 config.bib 看起來是錯的. EBoot.bib 看起來也很奇怪, EBoot 在 RAM 中執行, 所以 OALStartUp 中有將 eboot copy to RAM 0xA0020000 ??.

5. 帖子不是大家問, 會的人就會回答嗎?? 為什麼要指定回答人呢?? 還是本論壇有何特別的設定??


Paul, Chao @ Techware
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
1、IMGFLASH, SDRAM_SIZE_128_MB 这些宏都是原BSP定义的(这个是ZLG的BSP)我并没有修改过
    可是我觉得我现在在调BOOT,并没有涉及到NK这部分吧???
    因为还没跳到CE的KERNEL中呢
2、我现在在调试EBOOT,用的就是CE自带的PXA270的BSP中的BOOT(跟ZLG的BSP这部分是一样的),执行应该先在FLASH中,然后移到RAM中(这个我不确定)

3、这个OEMAddressTable 不象在WINCE42下的BSP,这个貌似只修改OEMAddressTable 就可以了

4、调试BOOT跟CONFIG.BIB也相关吗?“EBoot 在 RAM 中執行, 所以 OALStartUp 中有將 eboot copy to RAM 0xA0020000 ??”个人觉得应该是这样的

5、.......
   坛子有这个功能,对我们这些菜鸟来说这个功能还是比较不错的!呵呵
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

7
 
1. 看来 LZ 的 eboot.bib & g_oalAddressTable 都没什麽问题.

2. Config.bib 非常的奇怪, 无法理解.

3. LZ 主要的问题看来不是 eboot.bib & g_oalAddressTable, 故可否请 LZ 再说明一下目前面对的问题?

Paul, Chao @ Techware
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
uping
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
非常感谢paul_chao兄:
引用 6 楼 paul_chao 的回复:
1. 看来 LZ 的 eboot.bib & g_oalAddressTable 都没什麽问题.

2. Config.bib 非常的奇怪, 无法理解.

3. LZ 主要的问题看来不是 eboot.bib & g_oalAddressTable, 故可否请 LZ 再说明一下目前面对的问题?

Paul, Chao @ Techware


1、是否说明eboot.bib与目前用的那个128M SDRAM的oalAddressTable 能对应上??

2、Config.bib 非常的奇怪???这个地方我并没有修改过,我是把ZLG的BSP拿来移植的 ,我想改完BOOT应该需要修改这部分的内容吧
   但是现在的问题是还没到跳进CE的KERNEL,而是在BOOT中转圈,所以我觉得CONFIG.BIB是不是还没起作用呢??

3、现在的问题是我通过在板子上点LED,发现在BOOT的startup一直到OALStartup一路畅通
   直到OALStartup中打开MMU之前都还可以点LED
   说明程序在打开MMU之前都还没有卡死,但是在打开MMU之后没有了任何反应,可是在打开MMU之后如何点LED
   我还是实验成功
    所以现在就是在这里束手无策,不知道下面改怎么进行下去了........
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

10
 
这个不是以前有人问过吗

MMU之后要使用ucached 的地址。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 
UCACHED也点不亮!!
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

12
 
1. 可以.

2. 你的 config.bib, 若在
  2.1 IF IMGFLASH ! 时, NK 放在 0x96CB8000, 查 OEMAddressTable 无对应.
NK    96CB8000  01A00000 RAMIMAGE
  2.2 IF IMGFLASH   时, NK 放在 0x80080000, 查 OEMAddressTable 是 SDRAM, 而不是在 NOR Flash.
NK  80080000  01A00000 RAMIMAGE
        DCD    0x80000000, 0xA0000000, 128    ; MAINSTONEII: SDRAM (128MB).

3. 若只是要点 LED, 那问题好解决
xlli_GPIOREGS_PA_BASE EQU 0x40e00000
; 搭配 OEMAddressTable 中的    DCD    0x88500000, 0x40000000,  32    ; BULVERDE: Memory-mapped registers (peripherals).
; 该 PA 范围 0x40000000 ~ 0x42000000, xlli_GPIOREGS_PA_BASE 刚好在此范围, 最後加的 0x20000000 是 Cache to Uncache offset
xlli_GPIOREGS_UA_BASE EQU (xlli_GPIOREGS_PA_BASE - 0x40000000 + 0x88500000 + 0x20000000)

EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY
LEDTEST
    ldr r0, =xlli_GPIOREGS_UA_BASE  ;

其它的程式码不需改变, MMU 开启後, 只需将存取位址由 Physical Address 改为 Uncached Virtual Address.

Paul, Chao @ Techware
 
 
 

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

随便看看
查找数据手册?

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