|
最近接触ARM的开发,系统使用 S3C44B0X(CPU) + S29AL032D( 4MB FLASH) + K4S281632K(16MB SDRAM) 配置.读CHAR型数组时发现读出的内容与写入的内容不一致,读INT型数组时内容又是相同的.这是怎么回事.
本人第一次使用ARM单片机,原来一直用51单片机.对这个问题一头雾水,望那位高人指点一下,万分感谢!
以下是我的代码有几个地方不清楚,主要是关于SDRAM的配置问题.
void s3c44b0_init(void)
{
// Watchdog Timer
WTCNT = 0x8000;
WTDAT = 0x8000;
WTCON = 0x8000; // WT disable
// interrupt
INTMSK = 0xffffffff; // all interrupt disable
// Clock and Power Management
LOCKTIME = 0x00000fff; // LOCK TIME COUNT REGISTER
PLLCON = 0x00034080; // Fpllo = 60MHZ 晶振10MHZ 倍频到60 MHZ
CLKCON = 0x7ff8;
CLKSLOW = 0X09;
// Memory Controller
BWSCON = 0x01000002; // bank6 (0X0C000000 ~ 0X01000000)总线16位宽,零等待,不使用UB/LB。
?????? 使用UB/LB 与 不使用UB/LB 有区别吗?
// bank0 (0x00000000 ~ 0X00400000)总线16位宽。
BANKCON0 = 0x00000600;
BANKCON1 = 0x00000700;
BANKCON2 = 0x00000700;
BANKCON3 = 0x00000700;
BANKCON4 = 0x00000700;
BANKCON5 = 0x00000700;
BANKCON6 = 0x00018009;
BANKCON7 = 0x00018009;
REFRESH = 0x00A60591;
BANKSIZE = 0x00000000;
MRSRB6 = 0x20;
MRSRB7 = 0x20;
// I/O Port
GPACON = 0x000003FF;
GPBCON = 0x000007FF;
GPCCON = 0x4F155545; // FLASH_WP = INPUT GPC14
GPCUP = 0x00000000; // 0 = Pull-up Enabled
GPDCON = 0x00005554;
GPDUP = 0x00000000; // 0 = Pull-up Enabled
GPECON = 0x00004068;
GPEUP = 0x00000000; // 0 = Pull-up Enabled
GPFCON = 0x0008044A;
GPFUP = 0x00000000; // 0 = Pull-up Enabled
GPGCON = 0x00000000;
GPGUP = 0x00000000; // 0 = Pull-up Enabled
SPUCR = 0x00000004;
// interrupt
INTCON = 0x00; // Vectored interrupt mode IRQ interrupt enable FIQ interrupt enable
INTMOD = 0; // IRQ mode
I_ISPC = 0x3ffffff; //
INTMSK = ~INT_GLOBAL; // Global Interrupt Enable
} |
|