RK1108系统无法启动的原因分析与查找

RK1108系统无法启动的原因分析与查找

问题描述

RK1108 在第二次小批量(40台)试产时出现很大概率的系统无法启动。第一次试产(10台)中未发现此问题。第一批与第二批不同的地方主要有更换EMMC,从工业级变到商业级。硬件EMC上加了一些保护措施。

原因分析与解决:

系统不能开机,出现问题时首先接上调试串口,发现无任何日志输出。内核没有启动,uboot有没有启动无法判断(当然有极小概率出现在uboot串口初始化之前出了问题)。
从RK1108的数据手册“system boot”一节点可以看到系统的启动流程。如下图所示
RK1108系统无法启动的原因分析与查找_第1张图片 RK1108系统无法启动的原因分析与查找_第2张图片从上面流程可以看出,如果启动出错了会进入USB下载模式,把rk1108的板子接上USB,连接电脑虚拟机(可以看到rk的设备接入),在终端打开对应的路径 输入make fww 进行下载,而且下载完成后自动重新开机可以正常启动。

给合上面的现象,可以判断RK1108 没有运行到外部uboot这一部,在内部boot时出的问题,内部读取EMMC 的ID BLOCK 出错。

这时问题从整个系统(软硬件找问题)变到硬件找问题,再缩小到找EMMC的问题。

出现这种问题的可能原因还有:
1.上电时序出的问题。rk1108主板上用的rk805的芯片控制的上电时序,检查了硬件没有哪里可以进行配置时序的地方。
2.各路电源的稳定性与纹波。
3.上次开机时有电容电没有放干净,影响下次开机启动。
硬件给出的回复是:上面三种可能出现系统不能启动的原因都分析了,没有发现什么问题(不排除这方面有问题没有注意到)。

那问题又回到EMMC上面。
下面是EMMC部分局部电路图
RK1108系统无法启动的原因分析与查找_第3张图片rk1108在运行内部boot时会读取EMMC id block,读取时要发送CMD与CLK。对应emmc的EMMC_CMD与EMMC_CLK引脚。
对比EMMC手册给的参考电路,C7是没有,R1也不用加上拉,另外C36参考是1uf,设置是22uf,bom竟弄成47uf.另外EMMC_DATA(图中的EMMC_DATA0…)总线上接上拉用的是10K的电阻。(参考设计给出的典型值是50K)
下面是EMMC手册相关参数设计图
RK1108系统无法启动的原因分析与查找_第4张图片
RK1108系统无法启动的原因分析与查找_第5张图片

  • 调试1.用示波器量EMMC_CMD ,发现把示波器接入这个引脚,系统完全启动不了。这里是什么原因目前未知? 没能分析出为什么会有这种现象。
  • 调试2.去掉C7 和R1整个系统启动不了的概率变大。这也让我很难理解,难道是信号干扰很严重。然后量EMMC_CLK上的波形,感觉波形特别乱,不管是能正常启动还是不能启动都差不多乱。

补充的知识点:

  • 是R2 电阻的作用是阻抗匹配的作用。
  • 就是rk1108的软件update升级,硬件连接如下
    RK1108系统无法启动的原因分析与查找_第6张图片
    开机前通过接下update,然后通电,因为emmc_clk,与emmc_data0对地短路了,不能正常读取EMMC的ID ,由数据手册(上面的system boot 章节)可知,会进入下载模式。

EMMC的知识补充

  • emmc的上电时序

开始上电时,VCC 或 VccQ 可以第一个倾斜上升,或者是两者同时上升;同时,每个电源电压上电时间应该是小于指定的时间 tPRU

  • 总线信号负载电容与上拉电阻

要求主机和总线电容的总和不超过 20 pF,1.2V 和 1.8V 的电源接口,推荐的最大上拉 50Kohm。3V 的供电,可以使用全范围可达 100Kohms。推荐的 CREG 值与 e•MMC 设备供应商之间可能会有所不同。需确认最大值与 e•MMC 厂商的电容准确性,因为在 e•MMC 内的调节器的电气特性受电容波动的影响。

结论

到目前为止,关于1108概率性无法启动的问题还没有解决,但在解决问题的过程中了解了很多知识。解决方法参考另一篇文章 。

你可能感兴趣的:(linux驱动,嵌入式硬件,驱动开发,linux)