start kernel 之后没有任何输出与uboot无法将bootargs传入内核的调查方法与解决之道
来源:互联网 发布:labp网络管理协议 编辑:程序博客网 时间:2024/04/29 04:08
可能的原因
昨晚在Yocto中适配TQIMX6的时候,bootm之后出现start kenrel之后没有任何输出。对此一般有多种调试方法,与调查方向,可能的原因如下级类:
- 串口的引脚是否配置正确,例如pincltrl指定的Debug串口引脚,串口选错没有
- 串口的直连与交叉问题
- 查看bootargs传过去的console=是否正确,例如ttyXX是否正确,波特率
- 内核使用的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:
- 使用uboot中的
- 使用内核配置中的
- 使用uboot+内核配置中的
- 使用dtb中的chosen中的bootargs
这些都在menuconfig中可以看到,因此如果你在内核中看到的commandline与自己从uboot中传入的不一样,那么检查下面选项:
1 0
- start kernel 之后没有任何输出与uboot无法将bootargs传入内核的调查方法与解决之道
- 将自定义参数从uboot传入kernel的并读取的方法
- 内核配置的Default kernel command string和uboot的bootargs变量区别
- 内核配置中Default kernel command string和uboot中bootargs变量的区别
- ANDROID之后没有UART输出kernel log的情况
- uboot与kernel的flash分区
- uboot与内核的编译与下载
- 编译uboot与内核
- 将任何变量的值进行二进制输出的方法
- 内核分区与uboot分区的关系
- 内核分区与uboot分区的关系
- uboot的 bootm 和 bootargs
- kernel mtd 分区与UBOOT 分区的理解
- uboot向kernel的传参机制bootm与tags
- kernel mtd 分区与UBOOT 分区的理解
- uboot内核参数的传递与内核解析uboot传递的内核参数
- uboot内核参数的传递与内核解析uboot传递的内核参数
- 将两个字符串或一个字符串与数组传入一个,输出字符串中需要的字符位置
- DragonBoard 410c低速扩展口详解
- MySql常用函数
- Linux命令之rm
- 【JAVA笔记——道】Class初始化理解
- BOOL in Objectice-C
- start kernel 之后没有任何输出与uboot无法将bootargs传入内核的调查方法与解决之道
- 最小生成树Prim算法
- 删除表的外键约束
- DLVA prj
- block的使用
- 字符串中的智慧(一)
- MVC5学习系列——添加视图
- unity3d的四元数 Quaternion
- php笔记----第十二章memcache管理与应用