uboot怎样跳转到kernel

[kernel 启动流程] (第一章)概述 建议先参考《[kernel 启动流程] 前篇——vmlinux.lds分析》等文章。一、kernel启动之前的准备动作在kernel启动之前的准备都是由bootloader来完成。所以不管是什么bootloader,例如uboot、LK、superboot等等,都需要实现以下准备动作。这里指说明概念,不涉及代码。 我们在project X项目中使用的bootloader是uboot,具体代码参考第 阅读详情

我们都知道机器加电后首先启动uboot,然后uboot在跳转到kernel的。

 

但是它是如何从uboot跳转到kernel的呢?

 

uboot的运行的接口是从bootcmd开始执行的,也就是说通过解释bootcmd的参数执行对应的接口来达到引导kernel的功能。

所以说uboot的环境变量是很重要的。

 

因为uboot支持不同的文件系统(jffs2,cramfs,ext2等),所以需要把kernel从对应的文件系统中找出来,并且从FLASH中释放到

指定的内存中。

bootm的功能就是对存放在memory中的kernel进行处理(校验,解压,跳转)。

 

 

 

 

uboot启动kernel使用命令过程分析 为了让读者知道本文介绍的知识点在uboot所在位置,在介绍之前,先简单回顾下uboot的启动流程。.......SECTIONS#endif.text :*(.text*)........_start:/**/#elseb reset#endif分析该文件,做了一些列初始化,包括为C环境做的准备等,主要跳转了两个函数:board_init_f 和 board_init_r。 阅读详情

相关推荐

[Boot]Kernel启动

platform:RK3399 OS:Android 7.1 Kernel:4.4 参考: 1.Younix 《Android启动流程分析》 概述 Uboot最后阶段通过do_bootm_linux跳转到内核,此时内核开始运行,uboot任务完成。之后内核会完成一系列的初始化和注册,最终启动init进程(pid=1)和kthreadd(pid=2),并进入idle. 整体介绍 start_k...

Letcos 1126

[uboot] uboot启动kernel篇(二)——bootm跳转到kernel的流程

bootm命令执行流程 跳转到kernel的流程

ooonebook的博客 3万+

嵌入式UBoot如何跳转Kernel—uboot与linux交界分析

不知道你是否有这种感觉,就是学习了Uboot,学习了kernel,学习了安卓。• 不知道你是否在做启动方案的时候,在宏观上知道了整个启动链路流程,但是却在汪洋的代码中迷了路?那么这篇文章必定对你有点用处。如果没有,那请当我没说。是时候让我们看一下,这个过程可不只是简单的设置一个PC指针那么简单的操作哦。按照我的习惯,从宏观和微观两个角度:宏观了解整流程?微观了解小步骤?

嵌入式技术开发 480

UBoot怎么跳转到Kernel:uboot与linux的交界

_attribute__定义了结构体的属性,将结构体放在.u_boot_cmd段中。这样我们通过U_BOOT_CMD宏就定义了cmd_tbl_t类型的结构体变量,变量名为**__u_boot_cmd_bootm**,同时用U_BOOT_CMD宏中的参数对cmd_tbl_t结构体中的每个成员进行初始化。Struct_Section定义了结构体变量的段属性,cmd_tbl_t类型的结构体变量链接时全部链接到u_boot_cmd段中,可以查看u-boot.lds文件对u_boot_cmd段位置的安排。

u011029104的专栏 609

uboot ,s5pv210 ,bootm分析

(*(unsigned int *)(0xD0037F98)) 这表示 从这个地址 拿到了 一个值, 然后  (copy_sd_mmc_to_men) 这句表示 准换成 这个类型,前面已经定义过了,这是一个 函数的类型。这句就表示 去调用 三星自己 固化的函数  copy_sd_mmc_to_men 了。这句得到了 os 中的某个字段的内容。

weixin_44767571的博客 262

别再手动建模了!用Simscape Multibody Link一键导入SolidWorks装配体到Simulink

本文介绍了如何利用Simscape Multibody Link插件将SolidWorks装配体一键导入Simulink,实现CAD到仿真的无缝衔接。该技术显著提升机械系统设计与控制效率,特别适用于工业机器人、车辆悬架等复杂机构的动力学分析。文章详细解析了插件安装、模型导出优化及仿真验证的全流程,帮助工程师摆脱手动建模的低效工作模式。

weixin_27256197的博客 458

uboot启动kernel流程简单理解

(1)、启动4步骤 第一步:将内核搬移到DDR中 第二步:校验内核格式、CRC等 第三步:准备传参 第四步:跳转执行内核 (2)、涉及到的主要函数是:do_bootm和do_bootm_linux (3)、uboot能启动的内核格式:zImage uImage fdt方式(设备树) (4)、跳转与函数指针的方式运行内核 UBOOT启动内核过程 UBOOT——启动内核 ...

what, when, why, how... 745

用HFSS复现经典论文:从零搭建带孔缝屏蔽箱体模型(附完整建模步骤与避坑指南)

本文详细介绍了如何使用HFSS电磁仿真软件复现经典论文中的带孔缝屏蔽箱体模型,包括从零搭建模型、设置激励与边界条件、求解优化及结果验证的全过程。特别提供了建模中的布尔运算陷阱、激励设置技巧等实操难点的避坑指南,帮助工程师和学生深入理解电磁屏蔽效能研究。

weixin_30530339的博客 157

UBOOT学习笔记(七):UBOOT启动--从main_loop()到跳转到kernel入口点(UBOOT完结篇)

第78-84行do_bootm_states:调用do_bootm_states执行各个BOOT 阶段–BOOTM_STATE_OS_PREP 、BOOTM_STATE_OS_FAKE_GO 和BOOTM_STATE_OS_GO。**第534-551行,**调用bootm_start、bootm_find_os、bootm_find_other、bootm_disable_interrupts、bootm_load_os等,start 和 end这两个指针,用于存放解析出的内核映像的起始和结束地址。

2402_87288810的博客 946

D类功放LC滤波器实战:从Q值0.707到EMI优化的完整设计流程

本文详细解析了D类功放LC滤波器的完整设计流程,从确定截止频率与Q值0.707的理论基础出发,到参数计算、仿真验证及关键元器件选型,并提供了应对EMI超标和过流保护等实际问题的进阶调试策略。文章强调,精准的LC滤波器设计是平衡音质、稳定性与电磁兼容性的关键,尤其需关注电感饱和电流与电容直流偏置等细节。

e4f5g6h7的博客 1034

Coze:手把手教你搭建 小红书二创 智能体

前一篇 “” ,讲了如何针对需求进行拆解,并拆解 ”小红书二创“ 智能体,分为四个内容模块。通过上述步骤,开始一步一步构建 “小红书二创” 智能体。用来测试的小红书地址:http://xhslink.com/a/quxWEDAj3J48。

保持敏感!保持学习! 1436

UBOOT如何启动内核

定义了很多个struct tag, 排列在一起,每个tag的值表示 不同类型的tag, 由tag == ATAG_CORE 开始,到tag == ATAG_NONE 结束。ATAG_CMDLINE: 启动命令行参数,即uboot环境变量中的 bootargs. 告诉kernel如何启动。当前这里使用的是legacy 格式的kernel, 将来传参的方式,叫做tag传参。uboot中是否支持zImage格式,根据CONFIG_ZIMAGE_BOOT 来配置。通过LD工具生成的elf格式的。

weixin_43819842的博客 638

基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----上篇(第123点)

基于STM32F103C8T6的循迹避障小车完整制作过程 由于本人的一个小项目,要做一个基于STM32的循迹避障小车,前后花了约1周的时间,这个过程种也参考了很多大神分享的资料,学到很多的东西。但是资料都比较分散,有些东西也不好找,在这里就想把自己制作小车的一个整体过程记录分享一下,希望能够帮到你。 我自己也算是一个小白,之前有做过 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎...

weixin_43924857的博客 14万+

linux内核跳转到文件系统,Uboot到Kernel到文件系统(Cortex_A9)移植详细文档

处理器:Exynos4412 Cortex_A9 四核一: 4412 uboot 目录: uboot基本配置编译make xxx_config编译结果如上图。Uboot启动第一阶段分析:1. cpu/arm_cortexa9/start.Shttp://blog.chinaunix.net/uid-29589379-id-5568665.html2.cpu/arm_cortexa9/u-boot...

weixin_36371504的博客 579

从零配置Archery:手把手教你用Docker部署多数据库审核系统(MySQL/PostgreSQL/ClickHouse)

本文详细介绍了如何从零开始使用Docker部署Archery多数据库审核系统,涵盖MySQL、PostgreSQL和ClickHouse的配置与整合。文章提供了生产级Docker-compose配置、审核规则定制、工单流程设置以及企业微信通知集成等实战指南,帮助团队构建统一的企业级SQL审计平台,提升数据库操作规范与安全。

e4f5g6h7的博客 941

手把手教你用Pytorch代码实现Transformer模型(超详细的代码解读)

本文整理了非常清楚的Transformer模型结构图,建议大家在看代码的时候能结合这个结构图来理解,这样理解起来会比较容易! 用Pytorch实现Transformer的完整代码

捡起一束光的博客 7万+

kernel之启动流程head.S

通过上一篇Makefile我们分析到了,编译出vmlinux的第一个原材料是head.o。. 先回顾下uboot是怎么启动kernel的。uboot将kernel从flash中拷贝到sdram后,设置tag进行工作交接,然后启动内核。theKernel (0, bd->bi_arch_number, bd->bi_boot_params); r0 : 0 r1 : bd->bi...

dachunfree的博客 762

【ArcGIS微课1000例】0149:Geographic Imager6.6下载安装教程

首先保证电脑上安装对应版本的PS软件,笔者安装的是PS2023(V24.7)版本,然后安装本软件。保持以上窗口运行状态,然后打开PS,自动弹出如下窗口。勾选【Automatically checkout LIcense】,点击Close。双击setup开始安装,点击【确认】,一路默认安装到底。驱动器:DVD-ROM驱动器(用于DVD版本)处理器:2GHz或更快的英特尔或AMD处理器。安装完成后,将Crack中的所有文件拷贝到。硬盘:600 MB的可用硬盘空间用于安装。内存:4GB内存(建议8GB或更高)。

智慧空间实验室 1217

二、kernel_启动流程

解析uboot传入参数。解析uboot传入参数。1、启动入口文件(arch/arm/kernel/hand.S)2、start_kernel(c语言函数)(4)跳转至start_kernel。(1)查看是否支持这个CPU。(2)查看是否支持这个板子。

liutit的博客 410

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android启动过程中的kernel的启动过程

Linux内核启动过程概述:从uboot跳转到kernel/init/main.c的start_kernel()函数开始执行,完成内核初始化和驱动加载。随后通过arch_call_rest_init()调用rest_init(),启动kernel_init进程并执行Android定制的init.rc脚本。该过程从内核空间过渡到用户空间,最终加载JVM虚拟机、启动Framework服务,直至Launcher完成启动,标志着整个系统启动完成。

wangxianlin2008的博客 198

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: Linux 用户层如何调用接口设置寄存器
下一篇: image更新到盒子
weaky
博客等级 码龄25年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值