0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解U-Boot引导内核分析

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-04-13 15:22 次阅读

U-Boot的命令为用户提供了交互功能,并且已经实现了几十个常用的命令。如果开发板需要很特殊的操作,可以添加新的U-Boot命令。U-Boot的每一个命令都是通过U_Boot_CMD宏定义的。这个宏在头文件中定义

#defineU_BOOT_CMD(name,maxargs,rep,cmd,usage,help)\

cmd_tbl_t__u_boot_cmd_##nameStruct_Section={#name,maxargs,rep,cmd,usage}

其中:

·name:命令的名字,他不是一个字符串,不能用双引号括起来

·maxargs:最大的参数个数

·command:对应的函数指针

·usage:一个字符串,简短的使用说明

·help:一个字符串,比较详细的使用说明

对于bootm命令,其定义如下:

[plain]view plaincopy

1.U_BOOT_CMD(//bootm命令

2.bootm,CFG_MAXARGS,1,do_bootm,

3."bootm-bootapplicationimagefrommemory\n",

4."[addr[arg...]]\n-bootapplicationimagestoredinmemory\n"

5."\tpassingarguments'arg...';whenbootingaLinuxkernel,\n"

6."\t'arg'canbetheaddressofaninitrdimage\n"

7.#ifdefCONFIG_OF_FLAT_TREE

8."\tWhenbootingaLinuxkernelwhichrequiresaflatdevice-tree\n"

9."\tathirdargumentisrequiredwhichistheaddressoftheofthe\n"

10."\tdevice-treeblob.Tobootthatkernelwithoutaninitrdimage,\n"

11."\tusea'-'forthesecondargument.Ifyoudonotpassathird\n"

12."\tabd_infostructwillbepassedinstead\n"

13.#endif

14.);

bootm命令是用来引导经过U-Boot的工具mkimage打包后的kernelimage的。U-Boot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。 mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置,入口点在内存的那个位置以及映象名是什么。

U-Boot正是通过bootm命令引导Linux内核的。bootm命令调用do_bootm函数,下面我们来分析一下:

do_bootm函数流程分析

do_bootm_linux函数

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11354

    浏览量

    210657
  • Uboot
    +关注

    关注

    4

    文章

    126

    浏览量

    28378

原文标题:非常详细!图文带你详解U-Boot引导内核分析

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    U-Boot介绍

    在移植 Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核, bootloader有很多,常用的就是 U-Boot
    的头像 发表于 10-08 10:50 4257次阅读

    U-boot的基本介绍

    从本文开始,将陆续推送“手把手教你移植U-boot”系列文章,目标是由浅入深地讲解U-boot的工作流程、原理、配置方法和移植方法,手把手教你完成U-boot的移植工作,默认硬件开发平台为ARM,操作系统为Linux。
    发表于 07-14 16:52 3198次阅读
    <b class='flag-5'>U-boot</b>的基本介绍

    U-Boot是如何引导系统的

    内核的参数。run是运行环境变量中的命令,bootcmd中包含run命令。所以分析引导过程要从bootcmd开始。在U-Boot的命令行中输入printenv可显示所有的环境变量,我已
    发表于 10-22 17:43

    u-boot详解

    工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。 选择U-Boot的理由: ① 开放源码; ② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX
    发表于 07-04 04:56

    u-boot引导启动Linux 2.6的内核

    我想用u-boot引导启动Linux 2.6的内核。打算用jffs2作为根文件系统,但在配置u-boot时听说需要定义#define CONFIG_JFFS2_DEV "nor0&qu
    发表于 05-27 00:38

    U-boot引导内核详细流程

    U-boot引导内核流程分析
    发表于 03-30 12:34

    U-Boot的启动及移植分析

    bootloader 开发是嵌入式系统必不可少而且十分重要的部分,U-Boot 为功能强大的bootloader 开发软件。本文详细分析U-Boot 的启动流程,并结合其源码,阐述了U-Bo
    发表于 09-01 16:34 27次下载

    Porting U-Boot to the Control

    In this paper, the way of porting U-Boot to Control Computer Based MPC8349 will beintroduced
    发表于 01-25 15:45 13次下载

    u-boot的Makefile分析

    u-boot的Makefile分析 U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。 U-
    发表于 05-17 09:16 2082次阅读

    U-Boot结构功能介绍

      U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少
    发表于 07-30 09:17 1198次阅读
    <b class='flag-5'>U-Boot</b>结构功能介绍

    U-Boot源代码分析之Linux的引导

    映象文件必须满足U-Boot的格式要求,才能被识别和引导U-Boot中映象文件必须以一个固定格式的头部开始。这个头部由structimage_header_t描述,image_header_t的定义在文件include/ima
    发表于 04-03 22:39 51次下载

    u-boot简介

    U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导U-Boot
    发表于 10-14 11:17 3606次阅读

    S3C6410的u-boot分析与移植

    S3C6410的u-boot分析与移植
    发表于 10-31 14:44 28次下载
    S3C6410的<b class='flag-5'>u-boot</b><b class='flag-5'>分析</b>与移植

    U-Boot架构浅析

    导读:嵌入式Linux系统搭建,bootloader是必不可少的一环,而U-Boot已成嵌入式Linux事实标准。所以较为深入的分析U-Boot的设计,对于更...
    发表于 02-07 11:56 7次下载
    <b class='flag-5'>U-Boot</b>架构浅析

    tiny4412编译与移植U-Boot

    U-Boot 是一个主要用于嵌入式系统的引导加载程序, U-Boot本质是一个裸机程序,是一种普遍用于嵌入式系统中的开源的Bootloader,作用是用来引导操作系统,以及给开发人员
    的头像 发表于 08-31 08:59 1910次阅读
    tiny4412编译与移植<b class='flag-5'>U-Boot</b>