2012年10月2日 星期二

i.MX35 256M DDR2 at XLDR (Windows CE)

這個 code 是抄自 u-boot 的 patch:
http://lists.infradead.org/pipermail/barebox/2011-April/003461.html

要修改的檔案有 xldr.s 跟 startup.s, 但 startup.s 是 OALLIB 裡的檔案, 修改好後, 建議 XLDR / eboot / OS 三樣都一起換掉.


    ldr     r0, =0x304      ; bit 9 is DDR2_EN
    str     r0, [r1, #ESDCTL_ESDMISC_OFFSET]
+   ldr     r0, =0x30C      ; Reset mDDR
+   str     r0, [r1, #ESDCTL_ESDMISC_OFFSET]

...

    IF :DEF: BSP_CPU_TO1 ; 有兩處
    ldr     r0, =0x007FFC2F     ; Conservative
    ELSE
-   ldr     r0, =0x0079542A     ; Moderate
+   ldr     r0, =0x007FFC3F ;
    ENDIF

...
    
    ldr     r0, =0x00002000
    str     r0, [r1, #ESDCTL_ESDCTL1_OFFSET]
    ENDIF
    
+   ldr     r0, =0x007FFC3F
+   str     r0, [r1, #ESDCTL_ESDCFG0_OFFSET]

...

    IF :DEF: BSP_CPU_TO1 ; 這是第二處
    ldr     r0, =0x007FFC2F     ; Conservative
    ELSE
-   ldr     r0, =0x0079542A     ; Moderate
+   ldr     r0, =0x007FFC3F ;
    ENDIF

...
    
    ldr     r0, =0x82226080
    str     r0, [r1, #ESDCTL_ESDCTL1_OFFSET]

+   ldr     r0, =0x007FFC3F
+   str     r0, [r1, #ESDCTL_ESDCFG1_OFFSET]

    ENDIF

+   ldr     r0, =0x00000304
+   str     r0, [r1, #ESDCTL_ESDMISC_OFFSET]

這裡只貼出要修改的部份, 要完整的 code 請來我 google+ 或 facebook 找我要...

2013/01/09 update:
以下是開 9MiB frame buffer 的值, 如果有把 frame buffer size 再自行縮小設定值, RAM_SIZE 的值就再自行修正...

config.bib 中修改 RAM_SIZE 從 03500000 到 04600000

IF IMGFLASH !
    #define NK_START    80200000
.....
    #define RAM_START   83100000
;    #define RAM_SIZE    03500000
    #define RAM_SIZE    04600000
ENDIF

image_cfg.h 中做一點修正:
#define IMAGE_BOOT_RAMDEV_RAM_SIZE   (128*1024*1024) ;這是單一bank的DRAM size.

#define IMAGE_WINCE_IPU_RAM_SIZE     (8064*1024)
#define IMAGE_WINCE_IPU_REV_RAM_SIZE (9216*1024)
#define IMAGE_WINCE_IPU_RAM_OFFSET   (IMAGE_BOOT_RAMDEV_RAM_SIZE - IMAGE_WINCE_IPU_REV_RAM_SIZE) //(0x7700000)
#define IMAGE_WINCE_IPU_RAM_PA_START (CSP_BASE_MEM_PA_CSD0 + IMAGE_WINCE_IPU_RAM_OFFSET)

最後段要保留一點記憶體... 我不知道 FreeScale 在這裡動了什麼手腳.

最後記得環境變數 IMGRAM256 = 1 要設定, 其它的 source code 不用改.




沒有留言: