|
最近在做2440的项目,拿开发板厂商提供的BSP修改,现在CPU可以正常睡眠,唤醒的时候可以进入系统,进入后大概1秒左右系统就飞了,屏幕花掉,但是在花屏前那段时间是可以执行操作的,触屏,程序都正常
Config.bib里面保留内存地址为:
SLEEP 8c024000 00002000 RESERVED
FW.s里面:
SLEEPDATA_BASE_VIRTUAL EQU 0xAC024000 ; keep in sync w/ config.bib
SLEEPDATA_BASE_PHYSICAL EQU 0x30024000
由于一开始睡眠的时候无法关闭LCD,所以我在power.c的ConfigStopGPIO函数里面把rGPGCON 的配置改为下面的:
s2440IOP->rGPGCON = 0x0 |(1<<8)|(1<<9);
s2440IOP->rGPGUP = 0x0 |(1<<4);
唤醒时,发现在OEMPowerOff中有如下语句:
NANDInit();
OEMInitDebugSerial();
RETAILMSG(1,(TEXT("-- Exit OEMPOWER.\r\n")));
RETAILMSG(1,(TEXT("s2440INT->rSRCPND = 0x%x \r\n"), s2440INT->rSRCPND));
RETAILMSG(1,(TEXT("s2440INT->rINTPND = 0x%x \r\n"), s2440INT->rINTPND));
RETAILMSG(1,(TEXT("s2440INT->rINTMOD = 0x%x \r\n"), s2440INT->rINTMOD)); //<----------到这一句输出不完全
RETAILMSG(1,(TEXT("s2440INT->rINTMSK = 0x%x \r\n"), s2440INT->rINTMSK));
CPUClearCS8900();
唤醒后调试串口输出信息为:
s2440INT->rSRCPND = 0x1
s2440INT->rINTPND = 0x1
s2440INT->rINTMOD
而且如果在power.c中将RETAILMSG()函数注释掉,系统无法进入睡眠状态,这个问题相当怪异,实在想不明白为什么
还有就是CPUClearCS8900()这个函数不知道起的是什么作用,似乎系统运行到这里的时候屏幕也会黑掉,然后就没反应了
不知道有没有人能帮忙解答,谢谢
|
|