打印
[嵌入式linux]

关于u-boot和linux内核启动(简述版)的一点个人总结,小白求大神指导下

[复制链接]
780|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
封尘吼吼|  楼主 | 2016-10-16 19:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
u-boot启动简介:
先从makefile里面去设置自己板子的信息,然后去执行相应的config就可以得到配置文件以及相应的开发板的头文件,然后查看连接脚本可知,可知是从start.s文件开始执行的,其实这就已经进入了uboot的第一阶段,在这个阶段里面,uboot主要是通过这个文件来进行硬件初始化,比如说关看门狗,初始化sdram,设置时钟,进入svc模式,拷贝代码,清楚bss段,然后还有就是设置堆栈,然后跳到第二阶段,在这个阶段里面主要是为了检查内存映射,还有就是进行串口的设置,还有最后总要的是要设置tag,以此来告诉kernel信息,然后判断是否有bootdelay和bootcmd,没有的话就继续通过take_kernel函数,在启动函数中主要传递机器id和执行bootm命令来获得加载地址和入口地址来将内核调动过来进行内核启动。
Linux内核启动流程:
首先先处理由uboot传进来的启动参数,其中包括机器id和tag(机器id是在刚进入内核后的汇编文件head.s里面进行处理,去检测此内核是否支持所用cpu,检测内核是否支持单板,而tag测试在c函数里面进行调用),在进入后会进行kernel_inti函数进行启用,接着建立页表,然后就是对时钟和mmu等进行使能,最后就是挂载根文件系统(而根文件系统的挂载点则是根据系统的环境变量进行设置),对根文件系统上的应用进行执行,至此整个操作系统就整体完成。

相关帖子

沙发
封尘吼吼|  楼主 | 2016-10-16 19:43 | 只看该作者
自己只是简单描述了下,求大神指导,也希望大家能多交流交流

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝