当前位置: 首页 > news >正文

u-BOOT启动流程

1、u-boot入口:入口即第一行程序,程序的链接是由链接脚本决定的,编译uboot之后,可以在根目录下生成u-boot.lds文件
编译后的uboot文件
打开lds文件可以看到代码当前入口点: :_start,_start后面就是中断向量表,通过查看map地址可以得知start地址为 0Xc0100000,即整个 uboot的起始地址就是 0Xc0100000
在这里插入图片描述
2、u-boot启动过程中主要用到的一些函数:

board_init_f:初始化一系列外设,比如串口、定时器,或者打印一些消息等。
relocate_code:用于代码拷贝
relocate_vectors:重定位向量表
board_init_f:初始化外设的后续工作
run_main_loop:uboot启动以后会进入 N(N=1.2.3…)秒倒计时,如果在 N秒倒计时结束之前按下回车键,那么就会进入 uboot的命令模式,如果倒计时结束以后都没有按下回车键,那么就会自动启动Linux内核,这个功能就是由这个函数实现的
cli_loop:uboot的命令行处理函数,我们在 uboot中输入各种命令,进行各种操作就是有 cli_loop来处理的

3、bootm启动linux内核用到的函数:

全局变量 images会在 bootm命令的执行中频繁使用到,相当于 Linux内核启动的“灵魂”。
在这里插入图片描述
bootm命令的执行函数为 do_bootm:行,主要作用是解析 bootm的命令参数和检查有没有子命令

do_bootm_states:来执行不同的 BOOT 阶段,这里要执行的 BOOT阶段有:
BOOTM_STATE_START,BOOTM_STATE_FINDOS、 BOOTM_STATE_FINDOTHER、
BOOTM_STATE_LOADOS、 BOOTM_STATE_RAMDISK、 BOOTM_STATE_OS_PREP、
BOOTM_STATE_OS_FAKE_GO和 BOOTM_STATE_OS_GO。
bootm_os_get_boot_func:来查找对应系统的启动函数,查找方法很简单,就是读取数组中指定元素。
do_bootm_linux:Linux系统对应的启动函数
kernel_entry:,看名字“内核 _进入”,说明此函数是进入 Linux内核的,此函数有三个参数 zero arch params,第一个参数 zero要 为 0;第二个参数为机器 ID;第三个参数 ATAGS或者设备树 (DTB)首地 址, ATAGS是传统的方法,用于
传递一些命令行信息啥的,如果使用设备树的话就要传递设备树 (DTB)。
调用 kernel_entry函数进入 Linux内核,此行将一去不复返, uboot的使命也就完成了

流程图:
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 自动化运维场景在数据中心的落地之网络策略自动化管理-人保科技
  • akshare量化是如何精准分析的?
  • 日常学习之:Yaml 和 Json 有什么区别
  • Debezium系列之:支持数据库ddl和dml数据发往同一个Kafka Topic
  • 项目统一规范包管理器
  • 04 Vue 注册plgins的多种形式
  • 【C语言程序设计】实验 4
  • Java中Map集合体系的基本使用和常用API
  • 【在Vue脚手架项目中使用axios】
  • mysql分库分表后,分页查询问题解决方案
  • 改进蝠鲼觅食优化算法(Matlab代码实现)
  • 【AI学习笔记】Error: ffmpeg error (see stderr output for detail)
  • 世界杯征文活动 | 神奇!一段JavaScript代码生成会动的足球
  • 职场生涯亮红灯要注意这些
  • 一文掌握 Go 文件的写入操作
  • 一文读懂Linux内存分配策略
  • [附源码]Python计算机毕业设计Django学习互助辅助系统
  • 论文投稿指南——中国(中文EI)期刊推荐(第2期)
  • 一个redux使用案例模板
  • 超详细的水果FL Studio21最新版更新全功能详细介绍!80项更新与改进!
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉