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

    文章

    10980

    浏览量

    206673
  • Uboot
    +关注

    关注

    4

    文章

    123

    浏览量

    27854

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

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

收藏 人收藏

    评论

    相关推荐

    U-Boot在AT91RM9200上的移植及启动分析

    基于AT91RM9200的嵌入式目标板和U-Boot1.1.2源码资源,分析U-Boot的启动过程,介绍了U-Boot的移植方法和具体操作,最后讲述如何
    发表于 03-16 11:00

    U-BOOT详解

    本帖最后由 eehome 于 2013-1-5 10:10 编辑 u-boot代码分析
    发表于 12-14 17:20

    u-boot源码分析与移植 适合初学者

    u-boot源码分析与移植u-boot源码分析与移植
    发表于 05-21 12:57

    U-Boot是如何引导系统的

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

    U-Boot启动过程--详细版的完全分析

    Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个系统的加载启动就完全由bootloader来完成。
    发表于 12-12 22:50

    u-boot详解

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

    U-BOOT启动配置生成的内核时出现uncompressing

    用韦版主的U-BOOT去启动自己配置生成的内核时出现uncompressing linux....................done,booting the kernel.然后就i不动了,经韦
    发表于 05-16 07:15

    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与Linux内核系统是怎样去移植的

    前言这是哈工大嵌入式软硬件设计上机实验教程第二期U-Boot、Linux 内核的系统移植实验。U-Boot、Linux 内核的系统移植实验1.编译uboot设置环境变量export A
    发表于 12-22 06:01

    U-BOOT的启动流程分享

    Bootloader移植(下)U-BOOT 启动流程u-boot启动三个2启动步骤(重点)U-boot 启动源码分析U-BOOT 启动流程
    发表于 01-18 10:17

    U-Boot的启动及移植分析

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

    u-boot的Makefile分析

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

    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 3264次阅读