Hello All,
I have some issues with 512MB SDRAM support with OMAP3 WinCE6.0 BSP. I have read some discussions in the forum but I'm still facing the problem.
Our customized board is very close to Mistral EVM. Now we have two 256MB (32bit) DDR RAM connected to sdrc_cs0 and sdrc_cs1 respectively.
The register values for some SDRC registers are:
SDRC_MCFG_0 = 0x3588099
SDRC_MCFG_1 = 0x3588099
SDRC_MR_0 = 0x32
SDRC_MR_1 = 0x32
SDRC_CS_CFG = 0x2
which mean cs0 addresses SDRAM chip1 from 0x80000000-0x8fffffff and cs1 addresses 0x90000000-0x9fffffff.
I have used the same in Android and Android works fine.
I understand that I need to modify some files in WinCE6.0 BSP to make 512MB work.
The following is what I did:
1. In image_cfg.h
#define DEVICE_RAM_SIZE 0x20000000
#define IMAGE_WINCE_RAM_BANK1_SIZE 0x16600000 // RAM (2nd BANK) 102 MB + 256 MB
2. in platform.c
DDR_DEVICE_PARAM BSP_DDR_device_params[2]=
{
/* MICRON DDR */
{
(UINT32)BSP_MICRON_SDRC_MCFG_0,
(UINT32)BSP_MICRON_SDRC_MCFG_1,
(UINT32)BSP_MICRON_SDRC_ACTIM_CTRLA_0,
(UINT32)BSP_MICRON_SDRC_ACTIM_CTRLB_0,
(UINT32)BSP_MICRON_SDRC_ACTIM_CTRLA_1,
(UINT32)BSP_MICRON_SDRC_ACTIM_CTRLB_1,
(UINT32)BSP_MICRON_SDRC_RFR_CTRL_0,
(UINT32)BSP_MICRON_SDRC_RFR_CTRL_1,
},
/* HYNIX DDR */
{
(UINT32)BSP_HYNIX_SDRC_MCFG_0,
(UINT32)BSP_HYNIX_SDRC_MCFG_0, // MCFG_0 and MCFG_1 are the same
(UINT32)BSP_HYNIX_SDRC_ACTIM_CTRLA_0,
(UINT32)BSP_HYNIX_SDRC_ACTIM_CTRLB_0,
(UINT32)BSP_HYNIX_SDRC_ACTIM_CTRLA_1,
(UINT32)BSP_HYNIX_SDRC_ACTIM_CTRLB_1,
(UINT32)BSP_HYNIX_SDRC_RFR_CTRL_0,
(UINT32)BSP_HYNIX_SDRC_RFR_CTRL_1,
}
};
I know I also need to modify addrtab_cfg.inc but I don't know how to do it properly.
My current addrtab is
DCD 0x80000000, 0x80000000, 256 ; SDRAM
DCD 0x93000000, 0x13000000, 16 ; CS3, LAN9115
DCD 0x94000000, 0x14000000, 16 ; CS4, QUART
DCD 0x95000000, 0x15000000, 16 ; CS5,
DCD 0x96000000, 0x48000000, 16 ; L4 Core/Wakeup registers
DCD 0x97000000, 0x49000000, 1 ; L4 Peripheral
DCD 0x97100000, 0x68000000, 16 ; L3 registers
DCD 0x98100000, 0x6C000000, 16 ; SMS registers
DCD 0x99100000, 0x6D000000, 16 ; SDRC registers
DCD 0x9a100000, 0x6E000000, 16 ; GPMC registers
DCD 0x9b100000, 0x40200000, 1 ; 64KB SRAM
DCD 0x9b200000, 0x5C000000, 16 ; IPSS interconnect
DCD 0x9C200000, 0x00000000, 1 ; ROM
DCD 0x9C300000, 0x08000000, 1 ; NAND Registers (FIFO) and
DCD 0x00000000, 0x00000000, 0 ; end of table
If I changed SDRAM size to 512, I need to change the register mapping also. But both OEMAddressTable and config.bib must fall between 0x80000000 and 0xA0000000. Then how can I map the registers to virtual memory.
If I used current settings and rebuilt everything, The OS hangs after EnumExtensionDRAM.
Would anyone give me some advice on this issue?
Thanks,
James