硬件调试点滴(二)

硬件设计如下:核心板为ARM9(TI的AM1808)外部总线和其它信号到底板,底板是FPGA扩展Uart口等

问题描述:客户做EMC实验后反馈底板有问题导致CPU启动不了

硬件排查如下:

1.上电后发现液晶有显示并且正确,表明FPGA工作正常。上电后的启动画面有FPGA读取SPI FLASH中的数据显示而成,所有的显示都是FPGA处理的。

2.跳线使核心板上电进入串口启动模式,如果正常应该在串口打印“BOOT ME”,但是没有打印,表明要么CPU可能没有工作,是否一直处于复位,检查复位没有问题。

2.去掉跳线测量核心板的NAND FLASH的片选和读信号,发现正常,说明CPU确实工作了,可能是在某个前期步骤初始化不正常等待或者死机了。

2.打开原理图,用示波器测量外部总线的数据和地址线是否正确,发现正常。表明取指令没有问题。

3.把核心板总线的一边翘起,和底板脱离接触后,上电就可以启动。

4.测量外部总线的IOREDY信号,发现正常,表明没有因为外部错误而等待。

5.总结以上现象和结果,CPU上电后,复位正常,从NAND FLASH读取前几K的程序,然后就没有动静了。在这个UBL阶段唯一初始化的也就是内部的一些资源PLL,UART等,根本不涉及IIC等容易死机的东西,也不是外部总线或者信号导致的等待,那么是什么原因呢?唯一的解释是UART口的RX不对,因为跳线从UART启动时UBL会解析串口数据,如果正确打印“BOOT ME”不正确自然不会打印而且一直在等待正确指令。

6.测量RX信号,一直为“0”。。。。。问题找到了,我们知道串口信号应该常“1”起始位是“高变低”。如果长低表明一直有数据传输。翘起RX后就可以正常启动了。

7.继续查找,发现TVS管的型号焊接不对,耐压不够,一般信号5V即可,但是232电平稍高需要更高耐压的TVS管。

8.整个数据通路,TVS管(注意有的TVS管是有极性的),232芯片(电荷泵电压应该超过+-5V)和光耦全部坏掉了,可能就是因为TVS管耐压不够没有保护好后面的芯片。


总结:

1.CPU正常的工作模型是:上电->复位正常,时钟正常->进入固定地址执行->从存储器取指令代码和数据->初始化内部和外部器件->正常工作。

2.可能影响CPU正常工作的因素有:没有正常复位,时钟不对,数据地址线错误(比如短路断路)导致取的指令码错误,外部某些信号错误导致的等待(IOREDY等信号),初始化某些器件错误导致的等待(IIC总线没有ACK)等等。

3.再次强调,复位,数据&地址线,外部等待信号和IIC是最常见的导致CPU不正常工作的因素。


复制 搜索

你可能感兴趣的:(硬件调试点滴(二))