Posted inEmbedded
T2081 Board Debug Note
这两天调试了自己公司做的fsl T2081板子,遇到了一些坑,不过最后还是搞定了,记录之已备候查。 主要是时钟问题,由于我们的在一块主板上兼容了1022、1042和2081三种平台。所以SYS/DDR reference clock也是一样的,都是100M的SYS clock和66.66M的DDR clock。 之前调试1042的时候没有问题,但是在调试2081的时候,SD卡启动打印了一堆乱码,经过比较感觉乱发就是CPU送出来的启动信息,于是用示波器量之,发现每个bit为5.6us,和115200想比,差不多为对方的2/3。于是直接修改"board/freescale/t208xqds/spl.c"文件中board_init_f函数的16550的初始化,如下: [crayon-680150d238871281699933/] 重新烧写便可以显示正常信息。 但是,是什么原因导致基准时钟的问题呢?因为时钟差2/3,所以我开始怀疑是否是主板上DDR和SYS的时钟芯片焊反了,不过发现并没有焊反。 后来想到,评估板是66.66/133.33的时钟,而且CPU肯定允许一定范围的时钟输入,所以这个参考时钟CPU肯定不知道,需要人工设置,于是查查BSP代码, 在"board/freescale/t208xqds/spl.c"中: [crayon-680150d238876641341918/] 同样在"board/freescale/t208xqds/t208xqds.c"中也有,只是spl.c是给FPL用的,t208xqds.c是给NOR启动或者SPL使用的。 查了一下QIXIS_READ是读CPLD寄存器信息,原来FSL通过这种方法就可以在不改代码的前提下通过拨码修改参考时钟。 于是直接写死sys/ddr为100/66.66。启动后显示: [crayon-680150d238877713867709/] 显示CPU的DDR clock太快,这个问题之前在T4240上遇到过,是因为RCW配置DDR pll和DDR Latency的问题,但是查了RCW配置字中的MEM_PLL_RAT和DRAM LAT都没有问题,只能跟踪代码了。 调用流程为: board/freescale/t208xqds/ddr.c: ddr_freq = get_ddr_freq(0) / 1000000; arch/powerpc/cpu/mpc85xx/speed.c: gd->mem_clk…