博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
start kernel 之后没有任何输出与uboot无法将bootargs传入内核的调查方法与解决之道
阅读量:4170 次
发布时间:2019-05-26

本文共 806 字,大约阅读时间需要 2 分钟。

可能的原因

昨晚在Yocto中适配TQIMX6的时候,bootm之后出现start kenrel之后没有任何输出。对此一般有多种调试方法,与调查方向,可能的原因如下级类:

  1. 串口的引脚是否配置正确,例如pincltrl指定的Debug串口引脚,串口选错没有
  2. 串口的直连与交叉问题
  3. 查看bootargs传过去的console=是否正确,例如ttyXX是否正确,波特率
  4. 内核使用的command Line是uboot的还是内核的,还是dtb中chosen中的

调查方法

串口硬件问题的调查

可以使用示波器与逻辑分析仪来确认

串口软件配置问题的调查

可以使用在uboot查看log_buf的方法来查看问题出在哪里

当内核在start kernel之后,没有任何输出,等一会于用reset按键软reset,并停在uboot命令行中,使用下面方法来查看kenrel的log_buf,即printk存储log的地方。

在内核编译目录下面的System.map中找到__log_buf的位置,例如:

这个表示log_buf位于内核虚拟地址0x80dcdd84的位置,这个地方是直接映射段,因此对于imx6而言就是0x10dcdd84。

于是在uboot中使用md命令来查看这段区域的内容:

然后一直回车,最后可以看到内核最后使用的bootargs/commandLine:

然后我们可以看看内核中使用的串口叫上面名字其实是ttymx0,而不是前面我们指定的ttySC0:

kernel command line传入的调查

新的内核支持四种方式来组成commandline:

  1. 使用uboot中的
  2. 使用内核配置中的
  3. 使用uboot+内核配置中的
  4. 使用dtb中的chosen中的bootargs

这些都在menuconfig中可以看到,因此如果你在内核中看到的commandline与自己从uboot中传入的不一样,那么检查下面选项:

你可能感兴趣的文章
Apache的使用方法
查看>>
PHP环境配置:Apach+Tomcat+mysql+php
查看>>
CVE-2019-0708漏洞影响面分析及采用多种规则的检测方法
查看>>
拿走不谢!固件逆向分析过程中的工具和技巧(上)
查看>>
整理网络安全措施的5个小技巧
查看>>
入侵win10(下)--渗透系统
查看>>
烦请解释一下“驱动表”的概念
查看>>
IPAide(IP助手) v1.01
查看>>
Oracle 11g RAC SCAN basics
查看>>
ASM appears to be running, but connect via sqlplus, says idle instance.??
查看>>
Oracle EBS R12 - Steps and Issues/Resolutions during R12.1.1 to R12.1.3 Upgration
查看>>
跳过17:30,跳过瑞星定时扫描
查看>>
自动订饭
查看>>
Dos下命令运行带有包名的Java类
查看>>
Tomcat6数据源配置
查看>>
xmove.pl
查看>>
Excel简单五子棋
查看>>
Java之synchronized小例
查看>>
jstl之set与out小例
查看>>
apploc.bat
查看>>