smart kids

【嵌入式】 AT91SAM9260 维修测试总结---攻城师从研发到产品的路

0
阅读(13106)

个人多年经验总结,版权保护,这里贡献给大家学习。

 9260 维修测试,个人总结如下:

1、短路

   当遇到短路的时候,我们首先在台灯下检查每一个管脚,确认管脚没有短路,这里需要注意的是,在SDRAM 管脚上面,容易连焊一个小丝丝,这样也会导致短路或则不良,还有就是大家都容易忽略的SDRAMFLASH 附近电容,在我们焊接SDRAM 的时候,无意中就搭了一丝焊锡,把电容2端短路了,以上是问题出现最多的,其次就是检查钽电容了,加工厂偶尔也会把电容焊接反,检查完这几个,基本上能排查出短路问题,如果还不能排查,那么我们就只能取下BGA,因为可能是BGA 错位或则塌陷导致,当然BGA 出问题的可能性,没有SDRAM 附近出问题的概率大。

2、内核不能识别

   这类问题,大多是焊接问题,我们可以做如下检测:

1)检查LDO 输出电压,这个是排除LDO 虚焊,或则LDO 焊接错误导致的内核不能识别

2)检查32K 晶振2个管脚有没有跟外壳连焊,因为32K 晶振会把管脚拉弯焊接,这样很容易导致管脚跟外壳连焊,解决这类问题的方法是在焊接32K 晶体的时候,我们不要把管脚弯成90度,而是稍稍有斜度,同时焊接的时候,外壳不要接触时钟焊盘,这类问题引起的内核不能识别,不容易发现所以我们要仔细用眼睛或则万用表等工具观察。
3)如果不是以上2中问题,那么可以用手压一下BGA ,如果能识别,那么肯定是BGA 没焊接好,当然我们可以先压一压核心板与底板的排针,这样拍出排针的接触问题导致的,这里需要注意的是,内核能否识别,跟芯片的焊接,和32K 是否起振,还有内核电压是否正确,有着直接的关系。

3、烧写代码问题

1Norflsh 烧写地址出现错误,这类问题,比较常见,通常我们通过2种测试方法来判断问题所在。

  I 当我们用JLINK 通过JFLASH 烧写的时候出现如下错误的时候
 

这种是烧写的时候提示地址错误,我们首先检查norflash SDRAM 的地址线和数据线有没有焊接短路,这个通常是地址线短路造成,如果我们再次焊接了一下也没有解决这个问题,那么我们就做第二步检测。

 

II  BMS=1,意思为nandflash 启动,然后拔掉N-OE 跳冒,上电后能识别到USB ,然后用SAM-BA2.9 去识别,当我们能正常识别和烧写nandflash,如下图

 

 

那么就说明SDRAM nandflash 都是好的,那么问题就处在了norflash 上面,此时建议换一个norflash 试试。当出现如下图: 

 

意思为可能是SDRAM 没焊接好导致,也可能是NOR没焊接好,此时,我们拆掉SDRAM,然后再用JLINK 烧写,如果是可以烧写,那么我们再清晰PCB 换上另外2片内存,可以解决次问题。

2  通过JLINK 烧写nor出现  不能找到任何FLASH,此时意思为norflash 出现问题,但是问题也可能处在内存上面,因为内存和NORflash共用数据地址线。当然也可能是BGA 焊接导致,这个我们只需要压住BGA 再烧写,如果正常,那么就是虚焊导致的,我们也可以利用SAM-BA 测试方法来测试定位问题。

   解决此类问题,我们还是先拆掉SDRAM,排除内存的影响,减少干扰源,因为烧写NORFLASH,只需要ARM 正常,数据地址线正常就可以了,烧写代码,不需要内存参与,但是运行代码一定需要内存参与。

 III norflash 通过JLINK 烧写代码,开始正常,但是突然中断。

    这类问题比较好解决,通常是norflash 焊接问题, 这类问题,把NORFLASH 焊接一下就能解决

4、内核不能解压问题

 

 

 此类问题一般跟内存有很大关系,因为解压等一系列均在内存完成,因为SDRAM 能运uboot说明SDRAM 低地址是好的,norflash nandflash 均可以用前面的方法烧写代码测试,遇到这类问题,我们可以通过换内存法来解决. 

 5uboot nandflash 操作的指令不能识别,如下图

 

这类问题,主要是BGA 焊接的问题,为nandflash 的控制线没焊接好导致的,通常我们可以用手压住靠近内存附近的BGA,就会正常,因此判断为BGA 焊接不良导致。

6、根文件挂载失败,如下图: 

 

 这类问题引起的原因,主要有环境变量配置问题,我们现在烧写的内核和根文件(ramdik.rom.gz)是在内存中解压后,直接在内存中运行的,所以跟普通的JFFS2YAFFS2 的环境变量不一样,同时,这样的根文件,在操作系统挂载后,新建一个文件夹,等等操作,待关机后文件会丢失,因为没有保存在nandflash,通常我们烧写uboot-LS 版本后,环境变量默认就是挂载ramdik.rom.gz 的,我们烧写这种文件系统的原因就是因为可以变的很小,这样节省时间