详细说明嵌入式linux中bootcmd与bootargs差异

news2025/1/5 8:08:58

bootcmdbootargs 是在嵌入式系统开发,特别是基于U-Boot(一个广泛应用的开源引导加载程序)环境中常见的两个重要参数,它们的区别如下:

功能用途

  • bootcmd
    • 定义bootcmd 是U-Boot中的一个环境变量,用于定义一系列在启动过程中自动执行的命令。这些命令通常用于初始化硬件设备、设置内存参数、加载内核镜像和设备树文件等操作,引导系统进入内核启动阶段。
    • 示例场景:在开发板启动时,bootcmd 可能会包含设置网络参数以通过网络加载内核镜像的命令,或者从NAND Flash、SD卡等存储设备读取内核镜像到内存的操作。例如,对于通过网络加载内核镜像的情况,bootcmd 可能类似如下设置:
setenv bootcmd 'tftpboot 0x80007FC0 uImage; tftpboot 0x80F00000 my - dtb.dtb; bootm 0x80007FC0 - 0x80F00000'

此命令首先通过TFTP协议将内核镜像 uImage 下载到内存地址 0x80007FC0,然后将设备树文件 my - dtb.dtb 下载到内存地址 0x80F00000,最后使用 bootm 命令启动内核,指定内核镜像地址以及设备树文件地址。

  • bootargs
    • 定义bootargs 同样是U-Boot的环境变量,它主要用于传递内核启动参数给Linux内核。这些参数告知内核如何初始化硬件设备、挂载根文件系统以及配置系统运行时的各种设置等。
    • 示例场景:比如要设置内核启动时的根文件系统类型为 ext4,根文件系统所在设备为 /dev/mmcblk0p2,并启用串口控制台输出,bootargs 可以设置为:
setenv bootargs 'console = ttyS0,115200 root = /dev/mmcblk0p2 rootfstype = ext4 rw'

这里 console = ttyS0,115200 表示使用串口 ttyS0 作为控制台,波特率为115200;root = /dev/mmcblk0p2 指明根文件系统位于 mmcblk0 设备的第二个分区;rootfstype = ext4 说明根文件系统类型是 ext4rw 表示以读写方式挂载根文件系统。

执行时机与作用对象

  • bootcmd
    • 执行时机:在U-Boot启动流程中,当U-Boot完成自身初始化后,会检查并执行 bootcmd 中定义的命令序列。它在U-Boot环境内执行,目的是为内核启动做准备工作,比如初始化硬件设备、准备内存空间等。
    • 作用对象:其操作主要针对U-Boot自身以及底层硬件设备,为内核的加载和启动创造条件。
  • bootargs
    • 执行时机:当 bootcmd 执行完加载内核镜像和设备树文件等操作,并通过特定命令(如 bootm)启动内核时,U-Boot会将 bootargs 中设置的参数传递给内核。所以它是在内核启动阶段起作用。
    • 作用对象:直接作用于Linux内核,影响内核的启动配置和运行时的一些基本设置。

配置内容特点

  • bootcmd
    • 内容特点:包含一系列U-Boot命令,这些命令以字符串形式存储在 bootcmd 变量中,命令之间通常用分号(;)分隔。命令内容围绕硬件初始化、数据传输(如从存储设备读取数据到内存)、网络操作等与U-Boot引导流程紧密相关的操作。
    • 可变性bootcmd 的配置可能因硬件平台不同而有较大差异,例如不同的存储设备接口(NAND Flash、SD卡、eMMC等)需要不同的命令来读取数据;不同的网络芯片可能需要不同的网络参数设置命令。同时,开发人员也可能根据项目需求,如调试需求、特定的启动流程定制,对 bootcmd 进行灵活修改。
  • bootargs
    • 内容特点:是一组以键值对形式组成的内核启动参数,参数之间用空格分隔。这些参数主要涉及内核如何识别和配置硬件设备、文件系统挂载方式、系统运行模式等内核层面的设置。
    • 可变性:虽然也会因硬件平台和项目需求有所不同,但相对来说,在同一类硬件平台上,bootargs 的基本参数结构和大部分参数内容较为相似。例如,对于基于ARM架构的开发板,串口控制台参数 console 的设置方式基本一致,只是具体的串口设备名称和波特率可能因硬件设计不同而有所变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是Sight Words(信号词)

🧡什么是Sight Words(信号词) 简单来说,Sight Words就是我们在日常英语中常用的一些基本词汇。可以把它想象成是学练英语的“基础词汇”,这些词在各种考试中经常出现,也是在生活中必不可少的。 &#x1f…

秒鲨后端之MyBatis【3】自定义映射resultMap、动态SQL、MyBatis的缓存、MyBatis的逆向工程、分页插件(30000字)

这里我分享一下尚硅谷的pdf100页笔记和代码,大家可以参考学习。 笔记: 通过网盘分享的文件:MyBatis.pdf 链接: https://pan.baidu.com/s/14Iu1Zs-_5vZoRjBEjmagag?pwdyjh6 提取码: yjh6 --来自百度网盘超级会员v1的分享代码: …

12.31【Linux】shell脚本【运行方式,修改环境变量,数组】思维导图 内附练习

1.思维导图 2练习: 1.尝试将下列指令放到脚本中运行 在家目录下创建目录文件dir1,把/etc/passwd拷贝到dir1中,把/etc/group拷贝到dir1中并重命名为grp.txt,使用tree指令,显示dir1目录的文件树,把dir1&am…

云计算学习架构篇之HTTP协议、Nginx常用模块与Nginx服务实战

一.HTTP协议讲解 1.1rsync服务重构 bash 部署服务端: 1.安装服务 [rootbackup ~]# yum -y install rsync 2.配置服务 [rootbackup ~]# vim /etc/rsyncd.conf uid rsync gid rsync port 873 fake super yes use chroot no max connections 200 timeout 600 ignore erro…

【项目】智能BI洞察引擎 测试报告

目录 一、项目背景BI介绍问题分析项目背景 二、项目功能三、功能测试1、登录测试测试用例测试结果 2、注册测试测试用例测试结果出现的bug 3、上传文件测试测试用例测试结果 4、AI生成图表测试测试用例测试结果 5、分析数据页面测试(异步)测试用例测试结…

权限菜单之菜单管理 SpringBoot + VUE

一、 数据表设计 新建表sys_menu 表内数据 添加实体类Menu package com.example.demo.demos.web.demo.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.Ta…

【AIGC篇】AIGC 引擎:点燃创作自动化的未来之火

:羑悻的小杀马特.-CSDN博客 未来都是惊喜。你生来本应为高山。并非草芥。 引言: 在当今数字化的时代,人工智能生成内容(AIGC)正以一种前所未有的力量改变着我们的创作领域。它就像一个神秘而强大的魔法师,…

UnityRenderStreaming使用记录(三)

测试UnityRenderStreaming在Ubuntu24.04.1LTS上的表现 先放上运行图操作系统 Ubuntu24.04.1LTSUnity测试工程环境相关修改遇到的问题 先放上运行图 操作系统 Ubuntu24.04.1LTS 系统下载地址 https://cn.ubuntu.com/download/desktop安装UnityHub https://blog.csdn.net/AWNUXC…

从0开始的docker镜像制作-ubuntu22.04

从0开始的docker镜像制作-ubuntu22.04 一、拉取基础ubuntu22.04镜像二、进入拉取的docker镜像中,下载自己需要的安装包三、安装需要的系统软件四、打包现有镜像为一个新的镜像五、推送打包的镜像到私有docker服务器1.编辑docker文件,使其允许http传输和对…

多模态论文笔记——CogVLM和CogVLM2(副)

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型的LoRA版本——CogVLM和CogVLM2。在SD 3中使用其作为captioner基准模型的原因和优势。 文章目录 CogVLM论文背景VLMs 的任务与挑战现有方法及…

gitlab-runner的卸载与安装

如果你使用rpm方式安装gitlab-runner,则可以参考本教程。 卸载 停止和卸载gitlab-runner 停止 gitlab-runner stopchkconfig gitlab-runner off卸载 gitlab-runner uninstall删除rpm包 查询出rpm包名,根据包名删除rpm。 [rootEuler02 ~]# rpm -qa …

Nacos配置中心总结

Nacos配置中心总结 Nacos配置文件的加载顺序和优先级 加载顺序 nacos作为配置中心时,需要在bootstrap.yml文件中添加nacos config相关的配置,这样系统启动时就能先去拉取nacos server上的配置了。拉取过来后会和本地配置文件进行合并。 bootstrap.ym…

赛博周刊·2024年度工具精选(图片资源类)

1、EmojiSpark emoji表情包查找工具。 2、fluentui-emoji 微软开源的Fluent Emoji表情包。 3、开源Emoji库 一个开源的emoji库,目前拥有4000个emoji表情。 4、中国表情包大合集博物馆 一个专门收集中国表情包的项目,已收录5712张表情包,并…

Goland:专为Go语言设计的高效IDE

本文还有配套的精品资源,点击获取 简介:Goland是JetBrains公司开发的集成开发环境(IDE),专为Go语言设计,提供了高效的代码编辑、强大的调试工具和丰富的项目管理功能。其智能代码补全、强大的调试与测试支…

小程序发版后,用户使用时,强制更新为最新版本

为什么要强制更新为最新版本? 在小程序的开发和运营过程中,强制用户更新到最新版本是一项重要的策略,能够有效提升用户体验并保障系统的稳定性与安全性。以下是一些主要原因: 1. 功能兼容 新功能或服务通常需要最新版本的支持&…

EasyExcel(环境搭建以及常用写入操作)

文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…

典型常见的基于知识蒸馏的目标检测方法总结三

来源:Google学术2023-2024的顶会顶刊论文 NeurIPS 2022:Towards Efficient 3D Object Detection with Knowledge Distillation 为3D目标检测提出了一种知识蒸馏的Benchmark范式,包含feature的KD,Logit的cls和reg的KD&#xff0c…

通过Dockerfile来实现项目可以指定读取不同环境的yml包

通过Dockerfile来实现项目可以指定读取不同环境的yml包 1. 挂载目录2. DockerFile3. 运行脚本deploy.sh4. 运行查看日志进入容器 5. 接口测试修改application-dev.yml 6. 优化Dockerfile7. 部分参数解释8. 优化不同环境下的日志也不同调整 Dockerfile修改部署脚本 deploy.sh重新…

开源的go语言统一配置中心 - nacos + nacos go sdk

配置文件实时更新机制的场景需求 配置文件热更新主要应用于需要在不停机的情况下动态调整系统行为的场景,例如修改服务参数、切换数据源等。其原理在于通过一个中心化的管理平台来存储和分发最新的配置信息。当配置文件发生变化时,该平台会主动或被动地…

对45家“AI+安全”产品/方案的分析

一. 关键洞察 “AI+安全”创新非常活跃,一片百家争鸣之势,赛道选择上,以事件分诊Incident Triage、 安全辅助Security Copilots、自动化Automation三者为主为主,这充分反映了当前安全运营的主要需求,在产品理念选择上以 AI 和 自动化为主,这确实又切合上了在关键…