做U-boot开发,需要对硬件进行裁剪,U-boot的目的是为了引导内核的启动,首先保证的是u-boot要和你的内核配套,然后对硬件进行裁剪,比如说,你原版的u-boot不支持USB的下载方式,所以需要添加对USB下载方式的支持,下载之前需要做一些初始化的工作,看你的开发板需要初始化哪些硬件,都需要添加到U-boot里面,内核里面要裁剪好你这些硬件的驱动程序,u-boot和内核的移植,需要看你的开发板想要支持的硬件,还有自己想实现的功能,比如说U-boot下载界面,都是为了开发方便自己添加上去的。
为解决这个提问:
这里首先想到的是打开使能early_printk,再次启动然后看是否可以得到有效的提示信息,假如仍然不可以的话,那就你直接读取缓存 ,缓存的地址为 __log_buf其地址在systemmap被标记出来,我们可以找到具体的位置。具体如下:
首先去内核编译目录找到Systemmap文件。 接下来遭到Systemmap中__log_buf对应地址,执行:
cat /Systemmap | grep -n __log_buf
如何可能得到如下结果:
64584:c0770be8 b __log_buf
此时记住c0770be8 这个数字。
3 启动内核,内核此时卡在Starting kernel …位置。
4 重新启动系统(注意:不要断电启动),进入UBoot命令行界面
5 在命令行输入(数字是刚才得到的数字):
md 0xc0770be8
今天在学习嵌入式linux的uboot系统移植时出现了一个问题,挂载内核无反应。先贴图
问题排查
一开始我的反应是网络的问题,我就开始排查网络,测试uboot下开发板是否能ping虚拟机
发现是没有问题的,接下来我就想去试试虚拟机是否也能ping通开发板,当然我已经是完成我的开发
板的网络配置。然后出现的情况是
发现并不能ping通开发板。于是我开始纳闷是否是我的网口以及网络配置出错了。针对于此我进行了
以下几项排查工作:
1、开发板的网络环境搭建
这里我使用的设备是台式机电脑,开发板,光猫一台,网线2条。(PS:这里我明白了带路由器功能的
光猫就相当于普通光猫接路由器)然后进入虚拟机中将网络连接设置为桥接模式。
2、设置主机、虚拟机、开发板IP都在同一网段
经配置之后各IP分别是:主机:19216814,虚拟机:19216816,开发板:192168110
至此我已经配置完成网络情况,开始进行相互的ping测试,结果发现主机和虚拟机之间ping不通,经过
百度一查,才知道要关闭主机和linux虚拟机的防火墙。关于如何关闭两者防火墙参考链接:
>
非常简单,mini2440从Nor启动后,CPU运行在0x00000000地址,这片地址实际对应NorFlash,因为NorFlash是一个Ramlike器件,所以读取数据方法更内存一样,在Uboot的启动文件starts中,有一个一段代码实现NorFlash复制到SRAM的功能,复制代码完成后,通过指令,使用CPU跳到内存执行。这时候,Uboot通过另外的代码,实际是Nand subsystem部分,把kernel从Nand读到内存上,再通过指令,然后CPU跳到Kernel入口地址执行。
一旦Kernel跑起来,Kernel通过Uboot传递CMDLINE就可发现到根文件系统的分区了。所以根文件再通过一些列复杂的机制,最终把文件系统挂入系统中。
要完全了解这个过程,必须要完完整整地把Uboot和Kernel移植一遍才知道。
最后补充一下,mini2440上使用Uboot、supervivi,vivi之类的Bootloader实际功能都差不多。
以上就是关于嵌入式linux的uboot和内核的移植的相关疑问全部的内容,包括:嵌入式linux的uboot和内核的移植的相关疑问、uboot引导内核启动卡在Staring kernel该怎么分析原因、uboot导致kernel设备树读取头就错了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)