wince5.0+2440 由64M改为128M Booting Windows CE version 5.00 for (ARM)
最近在弄这个这个内存的扩展工作,硬件已经进行了修改,软件的具体修改工作如下:
1.fw.s
HandleFIQ是存放着FIQ服务程序入口地址的地址,内存多了64M,所以要加上64M的内存。
HandleFIQ EQU 0x33ffff1c
改成
HandleFIQ EQU 0x37ffff1c
这个文件第二个要改的地方
ldr r3, = (0x8C000000 - 0x30000000)
改成
ldr r3, = (0x88800000 - 0x30000000)
2.map.a
DCD 0x80000000, 0x02000000, 30 ; 30 MB SROM(SRAM/ROM) BANK 0
DCD 0x82000000, 0x08000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 1
DCD 0x84000000, 0x10000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 2
DCD 0x86000000, 0x18000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 3
DCD 0x88000000, 0x20000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 4
DCD 0x8A000000, 0x28000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 5
DCD 0x8C000000, 0x30000000, 64 ; 64 MB DRAM BANK 0,1
改成
DCD 0x80000000, 0x02000000, 30 ; 30 MB SROM(SRAM/ROM) BANK 0
DCD 0x82000000, 0x08000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 1
DCD 0x84000000, 0x10000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 2
DCD 0x86000000, 0x18000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 3
DCD 0x88000000, 0x20000000, 4 ; 32 MB SROM(SRAM/ROM) BANK 4
DCD 0x88400000, 0x28000000, 4 ; 32 MB SROM(SRAM/ROM) BANK 5
DCD 0x88800000, 0x30000000, 128 ; 128 MB DRAM BANK 0,1
3.reg2440.a
;Bank 6 parameter
B6_MT EQU 0x3 ;SDRAM
B6_Trcd EQU 0x1 ;3clk ; over 180M
B6_SCAN EQU 0x1 ;9bit
;Bank 7 parameter
B7_MT EQU 0x3 ;SDRAM
B7_Trcd EQU 0x1 ;2clk
B7_SCAN EQU 0x1 ;9bit
改成
;Bank 6 parameter
B6_MT EQU 0x3 ;SDRAM
B6_Trcd EQU 0x1 ;3clk ; over 180M
B6_SCAN EQU 0x2 ;10bit
;Bank 7 parameter
B7_MT EQU 0x3 ;SDRAM
B7_Trcd EQU 0x1 ;2clk
B7_SCAN EQU 0x2 ;10bit
4.s2440.h
#define DMA_BUFFER_BASE 0xAC000000
改成
#define DMA_BUFFER_BASE 0xA8800000
5.platform.reg
[HKEY_LOCAL_MACHINE\Drivers\Display\S3C2410\CONFIG]
"DisplayDll"="s3c2410disp.dll"
"LCDVirtualFrameBase"=dword:ac100000
"LCDPhysicalFrameBase"=dword:30100000
改成
[HKEY_LOCAL_MACHINE\Drivers\Display\S3C2410\CONFIG]
"DisplayDll"="s3c2410disp.dll"
"LCDVirtualFrameBase"=dword:a8900000
"LCDPhysicalFrameBase"=dword:30100000
6.config.bib
; NK Start address
#define NKSTART 8C200000
#define NKLEN 01800000 ;02000000
#define RAMSTART 8DA00000 ;8E200000
#define RAMLEN 02600000 ;01E00000
改成
; NK Start address
#define NKSTART 88a00000
#define NKLEN 01800000 ;02000000
#define RAMSTART 8a200000 ;8E200000
#define RAMLEN 06600000 ;06600000
继续
AUD_DMA 8c002000 00002000 RESERVED
DRV_GLB 8c010000 00010000 RESERVED
DBGSER_DMA 8c022000 00002000 RESERVED
SER_DMA 8c024000 00002000 RESERVED
IR_DMA 8c026000 00002000 RESERVED
SD_DMA 8c028000 00008000 RESERVED
EDBG 8c030000 00020000 RESERVED
CPXIPCHAIN 8c050000 00008000 RESERVED
SLEEP_BUFF 8c058000 00004000 RESERVED
DISPLAY 8c100000 00100000 RESERVED
改成
AUD_DMA 88802000 00002000 RESERVED
DRV_GLB 88810000 00010000 RESERVED
DBGSER_DMA 88822000 00002000 RESERVED
SER_DMA 88824000 00002000 RESERVED
IR_DMA 88826000 00002000 RESERVED
SD_DMA 88828000 00008000 RESERVED
EDBG 88830000 00020000 RESERVED
CPXIPCHAIN 88850000 00008000 RESERVED
SLEEP_BUFF 88858000 00004000 RESERVED
DISPLAY 88900000 00100000 RESERVED
到此内核修改结束
但是该过之后WINCE不能正常启动,我的DEBUG版本下的系统启动信息如下:
......................
fhg******************************
Booting Windows CE version 5.00 for (ARM)
&pTOC = 88a0a14c, pTOC = 8a9686d4, pTOC->ulRamFree = 8b271000, MemForPT = 00000000
Old or invalid version stamp in kernel structures - starting clean!
Configuring: Primary pages: 6028, Secondary pages: 0, Filesystem pages = 3014
Booting kernel with clean memory configuration:
Memory Sections:
[0] : start: 8b272000, extension: 00002000, length: 0178c000
Sp=ffffc7cc
ARMInit done.
Windows CE KernelInit
然后就停止在此处不往下执行了,
1.ldr r3, = (0x8C000000 - 0x30000000)
改成
ldr r3, = (0x88800000 - 0x30000000)
---》这个不需要修改啊。
2.DCD 0x8C000000, 0x30000000, 64 ; 64 MB DRAM BANK 0,1
---》值需要修改为DCD 0x8C000000, 0x30000000, 128 ;而且后面的依次增加64M,也就是0想0想04000000,比如修改之前是
DCD 0x90800000, 0x48000000, 1 ; Memory control register
那应该改为
DCD 0x94800000, 0x48000000, 1 ; Memory control register
而不是像楼主那样修改
3.s2440.h
#define DMA_BUFFER_BASE 0xAC000000
---》这个不需要改
还有好一些,我就不列举了,一看就知道楼主的BSP包是之前非标准的BSP包,我们现在的产品也有类似的BSP包,我也做过SDRAM从64M升级到128M,我做了记录,楼主如有需要,我可以把这个记录文档发给你,就是关于怎么从64M升级到128M的。
驱动有地方冲突
主要是和USB的驱动程序所分配的地址冲突了,具体文件armint.c里的UsbdclearEir和ohcd.c