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…

T104x SD/MMC boot research

PBL -> load RCW (64 bytes/512 bits) -> write to RCWSRn cfg_rcw_src [0]_[1:4]_[5:8] -> 0_0100_0000 cfg_rcw_src用以决定RCW配置字的来源 RCW[PBI_SRC]用以决定PBL初始化控制器的类别 SD启动,起始地址为0x0000_1000,SD Card block size 512KB Useful macros: CONFIG_SYS_FSL_PBL_RCW CONFIG_SYS_FSL_PBL_PBI Reference https://pagure.io/u-boot/raw/2015-07/f/board/freescale/t104xrdb/README u-boot:board/freescale/t104xrdb/README

Freescale DPAA tips

structs struct qm_fd - Frame Descriptor functions dma_addr_t qm_fd_addr(const struct qm_fd *) 获得fd的物理地址  

FreeScale QorIQ Build failure

编译fsl的QorIQ的时候可能会出现如下错误: | checking for gnumake... make | checking version of make... 4.0, bad | checking for gnumsgfmt... no 目前发现类似的还有makeinfo。系统为dabian 8.0 其实是fsl配置的时候判断过于严谨。 根据编译上下文找到对应的configuration文件,修改 if test -z "$MAKE"; then ac_verc_fail=yes else #…

NAND Flash普及

目前NAND Flash已经很普及了。我们平时所用的SD、TF、CF、U盘,其实都是一个NAND Flash芯片颗粒加上一个控制器而成。控制器的不同就形成了丰富的接口。 而目前世面上的MP3、MP4、包括速度最快、也是价格最贵的SSD,其实也是一个控制器加上N个NAND Flash颗粒构成。 我们公司在CPU的换代中也渐渐使用了NAND Flash。 下面就介绍了目前的NAND Flash的技术、工艺以及CPU对NAND的控制器。方便以后研发。 背景介绍 NAND Flash相对于NOR Flash来说,容量大,价格低,速度快。但是优点的引入必然会带了缺陷。由于制造工艺的问题,NAND Flash在生产和使用过程中会出现坏块。 坏块指的是擦除后无法变成1的扇区,通常有2钟: 出厂时有厂家标记的坏块 在使用过程中生成的坏块 由于NAND Flash坏块的存在,所以在使用时就需要对读写的数据做校验。通常使用CPU内部的ECC或者Linux MTD的软ECC对Flash做校验。 Linux MTD采用BBT记录坏区,并将这个BBT保存在芯片的最后一个好的扇区中,并且做冗余。并且使用NAND Flash每个Page的apare array,用来存储ECC和其他数据,Linux MTD下称之为OOB。 NAND Flash分类 制造工艺 从制造工艺来说,NAND Flash分为3钟:SLC/MLC/TCL。…