linux的uboot启动映像uImage制作过程

[uboot] uboot启动kernel篇(一)——Legacy-uImage & FIT-uImage 一、uImage编译kernel之后,会生成Image或者压缩过的zImage。但是这两种镜像的格式并没有办法提供给uboot的足够的信息来进行load、jump或者验证操作等等。因此,uboot提供了mkimage工具,来将kernel制作为uboot可以识别的格式,将生成的文件称之为uImage。 uboot支持两种类型的uImage。 Legacy-uImage FIT-uImage 阅读详情

其实uboot启动映像主要是在原来的zImage前加上一个他要0x40的tag,告诉uboot一些关于内核启动的信息。

  在arch/arm/boot/Makefile      62行开始有命令和规则:

quiet_cmd_uimage = UIMAGE  $@
      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
  -C none -a $(LOADADDR) -e $(STARTADDR) \
  -n 'Linux-$(KERNELRELEASE)' -d $< $@

80行开始有命令和规则:

$(obj)/uImage: $(obj)/zImage FORCE
$(call if_changed,uimage)
@echo '  Image $@ is ready'

  其实uboot启动映像主要是在原来的zImage前加上一个他要0x40的tag,告诉uboot一些关于内核启动的信息。这个规则的命令就是63行到65行的定义

  -A指定CPU体系结构

  -O指定是什么操作系统

  -T指定映像类型,如standalone、kernel、ramdisk、multi、firmware、script、filesystem等

  -C指定映像压缩方式,如none(不压缩)、gzip、bzip2。这里不对uImage进行压缩

  -a指定映象在内存中的加载地址,映象下载到内存中时,要按照用MKIMAGE制作映象时,这个参数所指定的地址值来下载

  -e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个MKIMAGE添加的0x40个字节的头)

  -n 指定映象名

  -d 指定制作映象的源文件

  上面命令中ZRELADDR在24行定义

  ZRELADDR := $(zreladdr-y)在第17行有

  include $(srctree)/$(MacHINE)/Makefile.boot

  而这个Makefile.boot的中有

  zreladdr-y := 0x30008000

  所以ZRELADDR := 0x30008000

uImage和zImage的区别 1. 各种文件的意义 vmlinux 编译出来的最原始的内核文件,未压缩。 zImage 是vmlinux经过gzip压缩后的文件。 bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。 uImage U-boot专用的映像文件,它是在zImage之前加上一个长度为0x 阅读详情

相关推荐

IDEA 2023.2最新破解安装教程(含详细配置步骤及常见问题解决)

本文详细介绍了IDEA 2023.2的安装流程及高效开发环境搭建指南,涵盖基础配置、项目结构优化、核心功能使用、插件推荐、性能优化等全方位内容,帮助开发者快速掌握这一强大的Java开发工具。

x2y3z4a5b的博客 1750

linux内核文件变成,linux的几个内核镜像格式Image 和 u-boot启动内核和文件系统时的一些环境变量的设置...

(编译uboot源码,编译成功后载uboot/tools目录下会生成mkimgage工具,将mkimage工具拷贝到/usr/bin/目录下即可。)mkimage工具内核编译完后zImage在内核根目录下,mkimage工具在u-boot根目录下的tools文件夹中,将zImage和mkimage放在同一个目录下,执行:./mkimage -A arm -O linux -T kernel -C ...

weixin_39641236的博客 646

想学嵌入式但没开发板?试试这个免费的STM32虚拟仿真平台(含LVGL界面教程)

本文介绍如何利用免费的STM32虚拟仿真平台学习嵌入式开发,特别适合预算有限或零硬件基础的学习者。通过详细的LVGL界面开发教程,展示虚拟仿真在嵌入式学习中的高效性和实用性,涵盖环境搭建、代码实现到实机迁移的全流程,助力快速掌握嵌入式开发核心技能。

weixin_29266647的博客 306

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

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

ooonebook的博客 3万+

使用3sigma原则去除数据表中的极端值

本文使用3sigma解决数据表中出现的极端值问题,其中包括基本原理、使用原则(检验方法)、代码展示这3个部分

qq_51397866的博客 4377

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7610

制作uImage镜像 .

由于uboot 只能用来启动uImage,不能启动zImage,因此当内核编译结束生成zImage 镜像文件后,还需要进一步制作uImage 镜像. (1)制作uboot 时,在uboot 的tools 目录下会生成mkimage 工具,约52kB. (2)将tools 目录下生成的mkimage 文件拷贝到/bin 目录中.             # cp u-boot/tools/mk

xiaoaide01的专栏 1420

GEE案例:计算区域生态总体脆弱性分析

计算区域生态总体脆弱性分析需要考虑多个指标和因素。下面是一个基本的方法:选择指标:选择一组能够反映区域生态系统脆弱性的指标。这些指标可以包括生物多样性指数、森林覆盖率、湿地保护率、土地退化程度等。为每个指标分配权重:为了使得各指标在计算中的重要性相对均衡,可以为每个指标分配一个权重。权重可以根据各指标的重要性和可利用的数据进行确定。数据收集和处理:收集每个指标的数据,并对其进行处理,确保数据的准确性和一致性。如果有需要,可以对数据进行归一化处理。计算指标值:根据收集的数据和权重,计算每个指标的值。

此星光明博客 464

4019 设备树 Linux device tree 概述

一:主要关键字定义说明 <1>. DT :Device Tree <2>. FDT : Flattened Device Tree <3>. OF :Open Firmware <4>. DTS :device tree source <5>. DTSI:device tree source include <6>...

OpenWrt/WLAN/驱动/Android/嵌入式开发总结 2690

论文学习——Connected Speech-Based Cognitive Assessment in Chinese and English——TAUKADIAL挑战赛介绍

这个比赛很有意义,因为目前AD检测的主要问题就是数据集过少,大部分数据集都是英语数据集,但是实际上很多患者分布在非英语的国家,所以需要解决多语种数据小的问题。这个比赛刚好是解决了英语检测样本和中文检测样本的问题,不过Baseline做的实在不够高明,对于语义信息的提取还是需要再进一步改良的。 这篇文章主要是对这个数据集了解的更加深刻,方便以后自己做科研!加油!趁现在,抓紧把论文写完!

Blackoutdragon的博客 1909

GitLab CI/CD .gitlab-ci.yml 关键词(十一):发布版本 release

本篇文章介绍使用GitLab CI/CD 发布一个版本,对外发布。并填写一些发布的信息。

知无涯 4717

zz linux的uboot启动映像uImage制作过程

在arch/arm/boot/Makefile 62行开始有命令和规则: quiet_cmd_uimage = UIMAGE  $@      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel /           -C none -a $(ZRELADDR) -e $(ZRELADDR) / 

伟哥的专栏 877

CAPL自动化测试

通过本文的学习,读者应该对CAPL自动化测试有了初步的了解,并能够编写复杂的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1526

移植过程问题小节

移植内核:2.6.30.4 内核根目录下的.config为当前配置内核的且已经配置好的内核配置。make zImage以此为依据 配置内核的过程: cd linux-2.6.30.4(进入Linux根目录) cp arch/arm/configs/s3c2410_defconfig /linux-2.6.30.4(作为配置参考,考到根目录下) mv s3c2410_defconfig .

weizhanshen的专栏 633

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Linux内核映像vmlinux、Image、zImage、uImage区别

本文介绍几种常用的Linux内核映像的区别。 一、vmlinux vmlinux:Linux内核编译出来的原始的内核文件,elf格式,未做压缩处理。 该映像可用于定位内核问题,但不能直接引导Linux系统启动。 使用readelf命令查看RockPI 4A单板Linux内核编译的vmlinux,内容如下: root@ubuntu:/home/run/code/rockchip-bsp/kernel# readelf -h vmlinux ELF Header: Magic: 7f 4

一口Linux的专栏 4543

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux内核映像vmlinux、Image、zImage、uImage,system.map区别

编译好内核后,一般都会生成标题中的各种文件,这些文件都有什么不同呢?

l00102795的博客 1279

uboot启动流程

uboot启动过程分析

weixin_46334900的博客 2500

linux的uboot和内核区别,linux的uboot启动映像、zImage和uImage的区别

因为都是从各网站上搜集过来的资料,如果有涉权请告知.............uboot启动zImage(go)和uImage(bootm)分析1.bootm加载linux镜像是加载uIamge,uIamge是由mkimage制作而来,和zIamge的差异是uIamge是zIamge压缩过的,bootm需要先对uIamge解压,解压地址为内核入口地址。当解压完成时uIamge和zIamge几乎是相同...

weixin_30290131的博客 1029

make zImage和make uImage的区别和mkimage工具的使用

刚刚接触到linux内核编译过程的时候,相信不少人跟我一样,都是按照手册或者网上的教程一步一步的执行,对于其中的很多原理和过程都是一知半解,这其中有一个很常见的问题,就是make image命令。因为大家都知道,在编译linux内核时,往往会涉及到以下3个命令: make Image make zImage make uImage 那么,这3个命令分别是做什么的?所生成的对象又有什么区别呢?在网上查

不积跬步,无以至千里! 1万+

linux的uboot启动映像、zImage和uImage的区别

linux的uboot启动映像、zImage和uImage的区别 因为都是从各网站上搜集过来的资料,如果有涉权请告知............. uboot启动zImage(go)和uImage(bootm)分析 1.bootm加载linux镜像是加载uIamge,uIamge是由mkimage制作而来,和zIamge的差异是uIamge是zIamge压缩过的,bootm需

圈圈来了 5722

ARM uboot Legacy uImage 和 fit img (Flattened uImage Tree)原理介绍

FIT uImage 是在 Legacy uImage的基础上,为了满足Linux Flattened Device Tree(FDT)的标准,而重新改进和定义出来的一种映像文件格式。(在制作Legacy uImage的时候,我们是直接传参数给mkimage,现在是把参数先。需要注意的是,kernel 镜像的路径和其它信息是写在 its文件里的,不需要像Legacy。不需要在制作好镜像之后再另外告诉 uboot这些参数。4. 这种方式的不足就在于,镜像本身没有带有这些参数的,用工具制作完镜像后,还需要另。

Emily_rong_2021的博客 943

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

不知道你是否有这种感觉,就是学习了一段时间Uboot,学习了一段时间kernel,也知道Uboot是引导程序。但是总是连不起来。我为什么来的这样的感受是因为,我最近在学习安全相关的东西。但是这个安全的东西应用在kernel里面进行,调用的。我想知道在整个启动的过程中哪里被调用的。结果发现在Uboot到kernel过渡的时候接不上了。说来惭愧。于是就决定学习一下这个部分。按照我的习惯,从宏观和微观两个角度,宏观了解到底是个啥?微观了解具体是个啥?

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 3059

linux 映像,Linux内核映像区别

本文介绍几种常用的Linux内核映像的区别。一、vmlinuxvmlinux:Linux内核编译出来的原始的内核文件,elf格式,未做压缩处理。该映像可用于定位内核问题,但不能直接引导Linux系统启动。使用readelf命令查看RockPI 4A单板Linux内核编译的vmlinux,内容如下:root@ubuntu:/home/run/code/rockchip-bsp/kernel# rea...

weixin_35819216的博客 534

mini2440 uboot烧写uImage

详细参考:https://www.cnblogs.com/qiaoqiao2003/p/3736531.html mkimage工具: uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。 mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针...

Yfw的博客 1322

uboot启动内核命令:bootz、bootm、boot

uboot启动内核命令:bootz、bootm、boot

Calmer_的博客 4031
上一篇: make uImage(uImage生成过程)
下一篇: Linux内核源码分析--内核启动之(2)Image内核启动(汇编部分)(Linux-3.0 ARMv7)
小王20122014
博客等级 码龄15年 11粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值