首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

S3C6410 CE6 RAM从128M升级到256M,修改config.bib和image_cfg.h,导致无法启动系统了。解决方法

2012-04-09 
S3C6410 CE6 RAM从128M升级到256M,修改config.bib和image_cfg.h,导致无法启动系统了。config.bib如下Assemb

S3C6410 CE6 RAM从128M升级到256M,修改config.bib和image_cfg.h,导致无法启动系统了。
config.bib如下

Assembly code
IF IMGMULTIXIP !#define     NKNAME       NK#define     RAMNAME      RAM#define     NKSTART      80100000IF SMDK6410_X5D#define     NKLEN        02100000    ; 33MB#define     RAMSTART     82200000#define     RAMLEN       01300000    ; 19MB (Will be auto-sized from the end of NK)ELSE#define     NKLEN        04F00000    ; 79MB (Max size, to match image_cfg.* files. This will be auto-sized)#define     RAMSTART     85000000#define     RAMLEN       09500000    ; 13MB (Will be auto-sized from the end of NK)ENDIF SMDK6410_X5D;   Single XIP;-----------------------------------------------------;   NAME        ADDRESS     SIZE            TYPE;-----------------------------------------------------    $(NKNAME)   $(NKSTART)  $(NKLEN)        RAMIMAGE    $(RAMNAME)  $(RAMSTART) $(RAMLEN)       RAMENDIFIF IMGMULTIXIP#define     NKNAME          XIPKERNEL#define     SYSTEMNAME      NK#define     RAMNAME         RAMIF IMGPROFILER#define     NKSTART         80100000#define     NKLEN           00600000#define     SYSTEMSTART     80700000#define     SYSTEMLEN       038FC000#define     RAMSTART        80400000#define     RAMLEN          06100000ELSE#define     NKSTART         80100000#define     NKLEN           00300000#define     SYSTEMSTART     80400000#define     SYSTEMLEN       03BFC000#define     RAMSTART        80400000#define     RAMLEN          06100000ENDIF#define     CHAINSTART      83FFC000#define     CHAINLEN        00004000;   Multiple XIP;-----------------------------------------------------;   NAME            ADDRESS         SIZE            TYPE;-----------------------------------------------------    $(NKNAME)       $(NKSTART)      $(NKLEN)        RAMIMAGE    $(SYSTEMNAME)   $(SYSTEMSTART)  $(SYSTEMLEN)    NANDIMAGE    $(RAMNAME)      $(RAMSTART)     $(RAMLEN)       RAM    CHAIN           $(CHAINSTART)   $(CHAINLEN)     RESERVEDENDIF ; Common RAM areas    AUD_DMA     80002000    00002000        RESERVED    TEMPS       80010000    00010000        RESERVED    ARGS        80020800    00000800        RESERVED    DBGSER_DMA  80022000    00002000        RESERVED    SER_DMA     80024000    00002000        RESERVED    IR_DMA      80026000    00002000        RESERVED    SLEEP       80028000    00002000        RESERVED    EDBG        80030000    00020000        RESERVEDIF SMDK6410_X5D    CMM         83500000    00300000        RESERVED;    FIMG_BUF    82800000    00800000        RESERVED    DISPLAY     83800000    00400000        RESERVED    MFC_JPEG    83C00000    00400000        RESERVEDELSE    CMM         86500000    00300000        RESERVED    DISPLAY     86800000    00C00000        RESERVED    MFC_JPEG    87400000    00C00000        RESERVED;    CMM         8E500000    00300000        RESERVED;    DISPLAY     8E800000    00C00000        RESERVED;    MFC_JPEG    8F400000    00C00000        RESERVEDENDIF SMDK6410_X5DCONFIG                  ; Other System Configuration for making image    COMPRESSION=ON      ; Binary compression for minimizing download transfer data    KERNELFIXUPS=ON     ; Kernel address fixup    AUTOSIZE=ON         ; ROM and RAM size will be resizing automatically for padding regionIF IMGMULTIXIP    ROM_AUTOSIZE=OFF     ; you can measure how much rom is needed to each binary image if you set this flag as ON    RAM_AUTOSIZE=OFF     ; RAM size will be resizing automatically only when ROM_AUTOSIZE is ON    DLLADDR_AUTOSIZE=ON    XIPSCHAIN=$(CHAINSTART)    AUTOSIZE_ROMGAP=10000    AUTOSIZE_DLLADDRGAP=0    AUTOSIZE_DLLDATAADDRGAP=0    AUTOSIZE_DLLCODEADDRGAP=0;; ROMFLAGS is a bitmask of options for the kernel;   ROMFLAGS    0x0000;   ROMFLAGS    0x0001      Disallow Paging;   ROMFLAGS    0x0010      Trust Module only;    ROMFLAGS=0        ELSEIF IMGTRUSTROMONLY    ROMFLAGS=10ELSE    ROMFLAGS=00ENDIF   ; END of IMGTRUSTROMONLY    ROMSTART = $(NKSTART)    ROMWIDTH = 32    ROMSIZE = $(NKLEN)ENDIF   ; END of IMGMULTIXIPIF IMGPROFILER    PROFILE=ONELSE    PROFILE=OFFENDIFIF IMGMULTIXIP#include "$(_TARGETPLATROOT)\FILES\MultipleXIP.bib"ENDIF 



该怎么改呢!

除了这个地方还需要修改那些文件呢。

谢谢

[解决办法]
bootloader的startup.s中对SP的初始化也要改,另外我的BSP中还改了两个文件,具体的忘了,明天帮你查下吧
[解决办法]
探讨
g_oalAddressTable

    ; mDDR 128 MB
        ;DCD    0x80000000, 0x50000000,  64    ; 64 MB DRAM
        DCD    0x80000000, 0x50000000,  128    ; 128 MB DRAM
       DCD 0x88000000, 0x58000000,  128      ; 128 MB Ext

红色部分是我在oemaddrtab_cfg.inc中添加的一句,然后在OAL\oal\init.c中添加了一个函数如下:
C/C++ codeBOOL OEMGetExtensionDRAM (LPDWORD pMemoryStart, LPDWORD pMemoryLength)
{*pMemoryStart=0x88000000;*pMemoryLength=0x08000000;
OALMSG(TRUE, (L"[OAL] OEMGetExtensionDRAM(LPDWORD pMemoryStart, LPDWORD pMemoryLength)\r\n"));return TRUE;
}


系统启动的时候我看了一下调试信息,这个函数已经被调用了,但是进入系统后,我查看了一下内存,还是那么大,并没有增加呢

谢谢

[解决办法]
探讨
g_oalAddressTable

    ; mDDR 128 MB
        ;DCD    0x80000000, 0x50000000,  64    ; 64 MB DRAM
        DCD    0x80000000, 0x50000000,  128    ; 128 MB DRAM
DCD0x88000000, 0x58000000,  128      ; 128 MB Ext

红色部分是我在oemaddrtab_cfg.inc中添加的一句,然后在OAL\oal\init.c中添加了一个函数如下:
C/C++ codeBOOL OEMGetExtensionDRAM (LPDWORD pMemoryStart, LPDWORD pMemoryLength)
{*pMemoryStart=0x88000000;*pMemoryLength=0x08000000;
OALMSG(TRUE, (L"[OAL] OEMGetExtensionDRAM(LPDWORD pMemoryStart, LPDWORD pMemoryLength)\r\n"));return TRUE;
}


系统启动的时候我看了一下调试信息,这个函数已经被调用了,但是进入系统后,我查看了一下内存,还是那么大,并没有增加呢

谢谢


[解决办法]
探讨
引用:
楼主你的bootloader修改了吗?

光修改这些是不够的。


bootloader有两个,eboot修改并运行良好
steploader我编译出来运行不了,没有办法

在inc中更改了寄存器的设置。

SMDK6410\SRC\BOOTLOADER\EBOOT\startup.s文件中有一句不明白是干什么的,也涉及到大小。
Assembly code; Comment:; The following loop is to direct map RAM VA == PA. i.e.; VA == 0x50XXXXXX => PA == 0x50XXXXXX for S3C6410; Fill in 8 entries to have a direct mapping for DRAM
ldr r10, =PT_1ST_BASE; Restore address of 1st level page table ldr r0, =DRAM_BASE_PA_STARTadd r10, r10, #PTR_1ST_PTE; (r10) = ptr to 1st PTE for 0x50000000add r0, r0, #0x1E; 1MB cachable bufferable orr r0, r0, #0x400; set kernel r/w permissionmov r1, #0; mov r3, #64 ; 64MB DRAMmov r3, #128; 128MB DRAM
; mov r3, #256 ; 256MB DRAM

请各位指点一下

热点排行