分类: LINUX
2010-03-10 16:45:01
在立宇泰的板子上移植的 u-boot 2009.11 + kernel 2.6.33。
内核加上了LCD的显示以后,显示模块初始化完成以后(s3c_fb_probe 已经返回了)系统就挂机了。最郁闷的是,我编译了kernel hacking,挂的时候任何调试信息没有!!!!
用jlink连上,系统跑到0xffffXXXX的地址去了,根本不知道在哪挂的。
找了一天多才发现,只要不使能LCD控制器(VIDCON0的ENVID或者WINCON0的ENWIN_F不使能),就能正常跑下去。看了两天的LCD控制器部分的spec和代码,没找到问题。
最后用立宇泰自带的u-boot和kernel交叉实验了一下,发现问题不在内核,而是在u-boot!
没办法一个一个对比了一下立宇泰板子上的System Controller和Dram Controller 寄存器。
发现问题在Dram Controller的 P1MEMCFG2的第0位sync。
我的u-boot的PLL是async mode的,按照spec的描述我就将此位设为0了。但结果,此位要为1,才能正常跑下去!不知道是不是因为我的APLL和MPLL都是533M的过。
现在我也不知道到底是为啥。能跑就行。
但为啥其他时候系统能跑,而到了LCD模块就不行了,而且没有任何调试信息?我感觉是和LCD windows的DMA‘s Burst有关,可能是他导致内存部分出问题了。
顺便说一下在弄得过程中发现的LCD controller的另外一个问题。
因为板子发烫的过,我把不用的模块的CLK_GATE全关了,"需要的模块“都打开了,结果屏幕没有任何输出。
后来发现是LCD要设置MOFPCON的by-pass和SPCON以后才能跑(spec的490页)。而两个寄存器所在的IHOST和DHOST模块的CLK_GATE我给关掉了!
不论如何看见小企鹅了。
过年回来到现在问题一个接一个,而且都很怪。这几天陆续的把问题都写一下吧。