bootloader刷写流程 bootloader

bootloader ARM Linux启动流程大致为:bootloader ----kernel----root filesystem 。bootloader 是一上电就拿到cpu 的控制权的 , 而bootloader实现了硬件的初始化 , 为kernel的运行创造好条件 。
那么bootloader一般都会做些什么
/ ====================================================== /
【 实现细节 】
工作在启动加载模式时 , uboot会自动执行bootcmd命令 , 
比如:
uboot首先把内核镜像拷贝到内存地址为0x80000000的地方 , 然后执行bootm 0x80000000命令 。
【bootloader刷写流程 bootloader】 bootm命令实际上调用的是do_bootm_linux函数:
内核调用函数:theKernel (0,bd-bi_arch_number, bd-bi_boot_params);
the kernel其实不是个函数,而是指向内核入口地址的指针,把它强行转化为带三个参数的函数指针,会把三个参数保存到通用寄存器中,实现了向kernel传递信息的功能,在这个例子里,会把R0赋值为0,R1赋值为机器号 R2赋值为启动参数数据结构的首地址 。
这里的machine id , 是让内核知道是哪个CPU , 从而调用对应的初始化函数 。
【 继续深入 】
1、需要在设备树文件中声明 , 单板需要什么样的machine_desc , (可以是一系列的字符串 , kernel会从左到右匹配这些字符串 , 一直找到匹配的为止);
2、kernel中需要表明每个machine_desc需要表明它能支持哪些单板 , 用字符串表明支持哪些单板 。
MACHINE_START和 MACHINE_END实际上被展开成一个结构体
3、 kernel有多个machine_desc跟设备树文件dts中的compatible 吻合 , 选择哪个?
设备树文件dts中compatible(属性值)从左到右的属性值与kernel中的machine_desc结构体中的dt_compat成员进行比较 , 匹配成功之后就不会再进行匹配(设备书的属性值从左右匹配优先级依次降低) 。
从内核的第一个执行文件head.S开始分析
start_kernel的调用过程如下:
注意:
C语言中的变量在汇编语言中出现 , 变量名表示的是变量的地址
如何解锁Bootloader下面我以小米手机解锁Boot Loader为例
进入小米手机申请解锁官网:申请解锁小米手机
点击立即解锁进行解锁申请
获得资格之后点击“解锁工具下载”
下载完毕后安装解锁工具并登录小米账号
让手机进入Fastboot模式并连接电脑 , 点击解锁就可以进行手机解锁
拓展:
BootLoader:是在操作系统内核运行之前运行的一段小程序 。通过这段小程序 , 我们可以初始化硬件设备、建立内存空间的映射图 , 从而将系统的软硬件环境带到一个合适的状态 , 以便为最终调用操作系统内核准备好正确的环境 。
通俗点将就是可以使手机刷入其他非官方的东西 , 但是某些厂商会因此取消保修 。
bootloader是什么意思通过刷机来提升手机系统性能 , 但是对刷机一窍不通的朋友们 , 即便可以看完刷机教程又是一头雾水 。这时候就有必要对一些刷机常用基础知识点进行了解 , 对刷机的原理、常用刷机方法等方面的知识有个初步的理解 , 从而手机刷机这事变得更加轻松 。那么bootloader是什么意思?
1、 BootLoader是在操作系统内核运行之前运行的一段小程序 。其实Bootloader就相当于手机的bios , 通过这段小程序 , 进行硬件初始化 , 获取内存大小信息等 , 调整手机到适配状态 。所以Bootloader是很重要的 , 如果bootloader不能正常加载 , 手机就是砖头一个 , 无法正常启动和使用 。然后以用户的按键组合进入到某种启动模式 , 如所熟知的电源键和音量键的组合 , 可以进入到Recovery、Fastboot或者正常开机 。
2、 对于嵌入式系统 , Bootloader是基于特定硬件平台来实现的 。因此 , 几乎不可能为所有的嵌入式系统建立一个通用的Bootloader , 不同的处理器架构都有不同的Bootloader 。Bootloader不但依赖于CPU的体系结构 , 而且依赖于嵌入式系统板级设备的配置 。对于2块不同的嵌入式板而言 , 即使它们使用同一种处理器 , 要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上 , 一般也都需要修改Bootloader的源程序 。
3、 Bootloader被锁的手机必须要破解才能刷第三方rom 。如果不破解bootloader , 就无法初始化手机硬件 , 手机也就无法使用 。

秒懂生活扩展阅读