簡單易懂..
2012年10月10日 星期三
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)
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 不用改.
訂閱:
文章 (Atom)