浅析linux驱动中uImage,zImage,bootz,bootm

news/2024/11/30 18:43:23/

1 uImage和zImage

uImage和zImage都是Linux内核启动时可能使用到的镜像格式

1.1 uImage

uImage是一种包含压缩和非压缩内核镜像的格式,它能够根据实际情况选择合适的解压缩方式。它通常用于在嵌入式系统中,通过bootloader从存储介质中加载内核镜像。

uImage头部记录了内核镜像的压缩类型、校验和、入口点等信息,可以通过mkimage命令进行创建,例如:

mkimage -A arm -O linux -T kernel -C gzip -a 0x80008000 -e 0x80008000 -n "My Kernel" \-d kernel.bin uImage

其中,-A参数表示目标体系结构(architecture),-O参数表示操作系统(OS),-T参数表示类型(type),-C参数表示压缩方式,-a参数表示入口地址,-e参数表示执行地址,-n参数表示内核名称,-d参数表示内核镜像文件。

1.2 zImage

Image是一种只包含非压缩内核镜像的格式,它能够直接被硬件平台加载并执行。它通常用于在计算机系统中,由GRUB或者LILO等bootloader从存储介质中直接加载内核镜像。

zImage具有精简的代码结构,因此可以在较小的内存中运行。与uImage不同,zImage没有头部信息和额外信息,只是一个从0x100000开始的可直接执行的二进制文件。

在Linux内核的编译过程中,可以通过在.config文件中设置CONFIG_KERNEL_GZIPCONFIG_KERNEL_BZIP2等参数来决定使用何种压缩方式,并生成对应的内核镜像文件。

总之,uImage和zImage是两种不同的Linux内核镜像格式,分别用于嵌入式系统和计算机系统等不同场合。开发人员需要根据实际情况选择合适的镜像格式,并了解相关工具和命令的使用方法。

2 bootz和bootm

bootz和bootm都是Linux内核启动命令,用于从Flash或者SD卡等存储介质中加载并启动Linux内核

2.1 bootz

bootz命令用于从存储介质中加载uImage格式的压缩内核镜像,并通过zImage格式解压后执行。uImage是一个可以包含压缩和非压缩内核镜像的格式,它能够根据实际情况选择合适的解压缩方式。

使用bootz命令启动Linux内核需要先设置启动参数,例如:

setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait'
bootz ${kernel_addr_r} - ${fdt_addr_r}

其中,setenv命令用于设置启动参数,console设定调试信息输出到串口ttyS0,root指定文件系统所在的分区,rw设置为读写模式,rootwait在挂载根文件系统前等待根设备准备就绪。

然后,通过bootz命令将存储介质中的压缩内核镜像加载到内存,再通过zImage格式进行解压缩,最终启动Linux内核。

2.2 bootm

bootm命令用于从存储介质中直接加载非压缩的内核镜像,并执行。与bootz不同,bootm不需要解压缩操作,因此启动速度更快。

使用bootm命令启动Linux内核也需要设置启动参数,例如:

setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait'
bootm ${kernel_addr_r} - ${fdt_addr_r}

其中,setenv命令同样用于设置启动参数,后面的bootm命令则将存储介质中的非压缩内核镜像直接加载到内存,然后启动Linux内核。

总之,在Linux系统中,可以通过bootz或者bootm命令启动Linux内核。要根据实际情况选择合适的命令,并在启动前设置好相应的启动参数以确保系统正确启动。


http://www.ppmy.cn/news/47533.html

相关文章

自适应模糊PID控制算法

一、自适应模糊PID控制 自适应模糊PID控制将模糊控制与传统PID控制相结合,将两种控制方式进行结合,取长补短,对传统的算法进行优化,形成一种新的控制算法,自适应模糊PID控制可以用于很多场景,比如温度控制&…

React Hooks基础

React Hooks基础 React Hooks 介绍React Hooks 基础 React Hooks 介绍 Hooks 是什么为什么要有 Hooks Hooks 是什么 Hooks:钩子、钓钩、钩住Hooks 是 React v16.8 中的新增功能作用:为函数组件提供状态、生命周期等原本 class 组件中提供的 React 功…

CT前瞻(三):Adobe系列XD软件绘制简单的原型图与交互设计

文章目录 📋前言🎯关于原型图绘制🎯XD绘制原型图与交互设计🎯关于XD软件其他功能📝最后 📋前言 Adobe XD是一个协作式易用平台,可帮助团队为网站、移动应用程序、语音界面、游戏等创建设计。还…

浙大数据结构网课第一周入门

题目详情 Given a sequence of K integers { N1​, N2​, ..., NK​ }. A continuous subsequence is defined to be { Ni​, Ni1​, ..., Nj​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For …

SSH连接本地centerOS系统配置

SSH连接本地linux系统 前提:安装好centerOS系统并能启动 目标:连通外网并设置SSH 1.网卡配置文件路径 打开linux本地终端 快捷键一般是ctrlaltf2(f1~f3) 这里是管理员登录,密码是隐藏式的输入(输入看不见) 这样就显示成功登录了! 下面查…

屏幕亮度调节工具:Simple Screen Shade Mac

Simple Screen Shade Mac版是mac上一款优秀的屏幕颜色亮度调节工具,能够让我们Mac电脑的显示器背景变暗,这样可以保护你眼睛的健康并保持舒适。Simple Screen Shade 旨在实现最大程度的简单性和易用性。你可以设置灰色背景以减轻明亮鲜艳的色彩&#xff…

Pandas入门实践2 -数据处理

为了准备数据进行分析,我们需要执行数据处理。在本节中,我们将学习如何清理和重新格式化数据(例如,重命名列和修复数据类型不匹配)、对其进行重构/整形,以及对其进行丰富(例如,离散化…

Laravel使用JWT

开始安装jwt (本次安装不建议直接在项目中安装及使用) 1.composer 安装jwt composer require tymon/jwt-auth 1.0.0-rc.1 2.在config 文件夹的app.php 中注册服务提供者 providers > [Tymon\JWTAuth\Providers\LaravelServiceProvider::class, ]…