嵌入式linux的uboot和内核的移植的相关疑问

嵌入式linux的uboot和内核的移植的相关疑问,第1张

做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设备树读取头就错了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9762880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存