uboot bootcmd 和bootargs参数详解

2.1【Linux系统移植之一】:移植U-Boot(制作u-boot.bin文件) 文章目录一、下载源码、编译源码二、修改源码(适配自己的开发板)2.1 拷贝配置文件2.2 拷贝头文件2.3 拷贝开发板对应板级文件夹三、编译新的U-Boot(自己开发板的U-Boot)四、烧写U-Boot到SD卡,启动U-Boot五、U-Boot命令 备注:本文以正点原子imx6ull芯片Alpha开发板为例。参考《正点原子嵌入式linux驱动开发指南V1.4.pdf》整理的笔记。 一、下载源码、编译源码 该步骤的作用是:测试源码是否可以正常编译 ARM芯片官网下载对应的U-BOOT,并解压 tar 阅读详情
 U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。(http://www.cnblogs.com/cornflower/archive/2010/03/27/1698279.html)
u-bootcmd
    前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。
u-bootargs
    bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的。bootargs的种类非常非常的多,我们平常只是使用了几种而已,感兴趣的可以看看这篇文章说的很全:http://blog.chinaunix.net/u2/79570/showart_1675071.html。bootargs非常的灵活,内核和文件系统的不同搭配就会有不同的设置方法,甚至你也可以不设置bootargs,而直接将其写到内核中去(在配置内核的选项中可以进行这样的设置),正是这些原因导致了bootargs使用上的困难。
    下面介绍一下bootargs常用参数,bootargs的种类非常的多,而且随着kernel的发展会出现一些新的参数,使得设置会更加灵活多样。

A. root 
用来指定rootfs的位置, 常见的情况有: 
    root=/dev/ram rw   
    root=/dev/ram0 rw
  请注意上面的这两种设置情况是通用的,我做过测试甚至root=/dev/ram1 rw和root=/dev/ram2 rw也是可以的,网上有人说在某些情况下是不通用的,即必须设置成ram或者ram0,但是目前还没有遇到,还需要进一步确认,遇到不行的时候可以逐一尝试。

    root=/dev/mtdx rw
    root=/dev/mtdblockx rw
    root=/dev/mtdblock/x rw
    root=31:0x

上面的这几个在一定情况下是通用的,当然这要看你当前的系统是否支持,不过mtd是字符设备,而mtdblock是块设备,有时候你的挨个的试到底当前的系统支持上面那种情况下,不过root=/dev/mtdblockx rw比较通用。此外,如果直接指定设备名可以的话,那么使用此设备的设备号也是可以的。

    root=/dev/nfs
在文件系统为基于nfs的文件系统的时候使用。当然指定root=/dev/nfs之后,还需要指定nfsroot=serverip:nfs_dir,即指明文件系统存在那个主机的那个目录下面。

B. rootfstype 
    这个选项需要跟root一起配合使用,一般如果根文件系统是ext2的话,有没有这个选项是无所谓的,但是如果是jffs2,squashfs等文件系统的话,就需要rootfstype指明文件系统的类型,不然会无法挂载根分区.

C. console 
console=tty  使用虚拟串口终端设备 .
console=ttyS[,options] 使用特定的串口,options可以是这样的形式bbbbpnx,这里bbbb是指串口的波特率,p是奇偶位(从来没有看过使用过),n是指的bits。
console=ttySAC[,options] 同上面。

看你当前的环境,有时用ttyS,有时用ttySAC,网上有人说,这是跟内核的版本有关,2.4用ttyS,2.6用ttySAC,但实际情况是官方文档中也是使用ttyS,所以应该是跟内核版本没有关联的。可以查看Documentation/serial-console.txt找到相关描述。

D. mem
mem=xxM 指定内存的大小,不是必须的

E. ramdisk_size
ramdisk=xxxxx           不推荐   
ramdisk_size=xxxxx   推荐
上面这两个都可以告诉ramdisk 驱动,创建的ramdisk的size,默认情况下是4m(s390默认8M),你可以查看Documentation/ramdisk.txt找到相关的描述,不过ramdisk=xxxxx在新版的内核都已经没有提了,不推荐使用。

F. initrd, noinitrd
当你没有使用ramdisk启动系统的时候,你需要使用noinitrd这个参数,但是如果使用了的话,就需要指定initrd=r_addr,size, r_addr表示initrd在内存中的位置,size表示initrd的大小。

G. init
init指定的是内核启起来后,进入系统中运行的第一个脚本,一般init=/linuxrc, 或者init=/etc/preinit,preinit的内容一般是创建console,null设备节点,运行init程序,挂载一些文件系统等等操作。请注意,很多初学者以为init=/linuxrc是固定写法,其实不然,/linuxrc指的是/目录下面的linuxrc脚本,一般是一个连接罢了。

H. mtdparts
mtdparts=fc000000.nor_flash:1920k(linux),128k(fdt),20M(ramdisk),4M(jffs2),38272k(user),256k(env),384k(uboot)
要想这个参数起作用,内核中的mtd驱动必须要支持,即内核配置时需要选上Device Drivers  ---> Memory Technology Device (MTD) support  ---> Command line partition table parsing

mtdparts的格式如下:
mtdparts=[;
  := :[,]
  := [@offset][][ro]
   := unique id used in mapping driver/device
    := standard linux memsize OR "-" to denote all remaining space
    := (NAME)
因此你在使用的时候需要按照下面的格式来设置:
mtdparts=mtd-id:@(),@()
这里面有几个必须要注意的:
a.  mtd-id 必须要跟你当前平台的flash的mtd-id一致,不然整个mtdparts会失效
b.  size在设置的时候可以为实际的size(xxM,xxk,xx),也可以为'-'这表示剩余的所有空间。
举例:
假设flash 的mtd-id是sa1100,那么你可以使用下面的方式来设置:
mtdparts=sa1100:-     →  只有一个分区
mtdparts=sa1100:256k(ARMboot)ro,-(root)  →  有两个分区
可以查看drivers/mtd/cmdlinepart.c中的注释找到相关描述。

I. ip
指定系统启动之后网卡的ip地址,如果你使用基于nfs的文件系统,那么必须要有这个参数,其他的情况下就看你自己的喜好了。设置ip有两种方法:
ip = ip addr
ip=ip addr:server ip addr:gateway:netmask::which netcard:off
这两种方法可以用,不过很明显第二种要详细很多,请注意第二种中which netcard 是指开发板上的网卡,而不是主机上的网卡。

说完常见的几种bootargs,那么我们来讨论平常我经常使用的几种组合:
1). 假设文件系统是ramdisk,且直接就在内存中,bootargs的设置应该如下:
setenv bootargs ‘initrd=0x32000000,0xa00000 root=/dev/ram0 console=ttySAC0 mem=64M init=/linuxrc’

2). 假设文件系统是ramdisk,且在flash中,bootargs的设置应该如下:
setenv bootargs ‘mem=32M console=ttyS0,115200 root=/dev/ram rw init=/linuxrc’
注意这种情况下你应该要在bootm命令中指定ramdisk在flash中的地址,如bootm kernel_addr ramdisk_addr (fdt_addr)

3). 假设文件系统是jffs2类型的,且在flash中,bootargs的设置应该如下
setenv bootargs ‘mem=32M console=ttyS0,115200 noinitrd root=/dev/mtdblock2 rw rootfstype=jffs2 init=/linuxrc’

4). 假设文件系统是基于nfs的,bootargs的设置应该如下
setenv bootargs ‘noinitrd mem=64M console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.3:/nfs ip=192.168.0.5:192.168.0.3:192.168.0.3:255.255.255.0::eth0:off’
或者
setenv bootargs ‘noinitrd mem=64M console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.3:/nfs ip=192.168.0.5’


上面就是我们经常使用的几种bootargs的组合,老实说,bootargs非常非常的灵活,所以设置的方法有很多中形式,具体的还应该根据你的平台具体的情况来设置。
【海思3798系列机顶盒NAS分区表修改软件】 海思机顶盒 NAS 从U盘启动; U盘启动 Ubuntu NAS系统; 海思NAS的Ubuntu系统使用u盘安装启动系统; 阅读详情

相关推荐

Uboot根据读写eeprom启动标记,设置不同bootcmd和bootargs启动参数

要实现此功能大体上分如下步骤: 第一,uboot

L_Nan的专栏 3112

U-boot的环境变量: bootcmd 和bootargs

U-boot的环境变量: bootcmd 和bootargsu-bootcmd<br />    前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。<br />u-bootargs<br />    bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的。bootargs的种类非常非常的多,我们平常只是使用了几种而已,感兴趣的可以看看这篇文章说的很全:ht

JINKAI 3724

UBOOT 启动参数: bootargs 和 bootcmd

bootm 0x22000000 -- 从 RECOVERY读取分区到RAM。-- 从KERNEL 分区中读取内核到RAM 0x22000000 地址,然后执行启动内核(bootm), 正常情况,bootcmd 到此结束。mw 1f001cc0 11 --"这里是针对2.4G 的wifi 设置命令"gpio out 4 1 -- gpio4 设置高电平。bootlogo 0 0 0 0 1 -- 执行bootlogo。

kekeleqy的专栏 1326

bootargs参数意义

U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。 u-bootcmd    前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。 u-bootargs    bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设

ConceptCon 1783

富瀚MC6630,uboot的bootargs和bootcmd参数详解,以及在uboot中用flash命令烧写内核的操作

富瀚MC6630,uboot的bootargs和bootcmd参数详解,以及在uboot中用flash命令烧写内核的操作bootargsbootcmd用MolDownload烧录工具烧录方法1:用uboot命令烧录内核方法2:用MolDownload烧录工具烧录内核 bootargs 这个参数设置要传递给内核的信息,主要用来告诉内核分区信息和根文件系统所在的分区 bootargs=mem=128M earlycon console=ttyS0,115200 root=/dev/mtdblock3 rootf

a812417530的博客 3942

bootargs.bin

bootargs.bin

uboot 的 bootcmd 和bootargs参数详解

U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。 u-bootcmd     前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。 u-bootargs     bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来

lh2016rocky的博客 7974

A-Level CS 计算机科学 考试知识点——考试介绍&第1章

前言:该系列文章是本人在给学生辅导本课程的过程中结合英文教材所总结的,该系列共分为30章,主要介绍了考试的核心知识点。若需要A-Level CS 计算机科学考试辅导也可以私信我。 目录 关于A-Level CS 计算机科学考试 考试简介 考试内容 考试时间 评分情况 第1章 信息表示 本章学习内容 1.01 数字系统 1.02 数字的内部编码 整数编码(Coding for integers) 二进制编码的十进制(Binary coded decimal——BCD) 1.03.

王俊的博客 6458

uboot的bootcmd bootargs参数详解

U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。 u-bootcmd     前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。 u-bootargs     bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来

For Heart 1070

TJA1445/TJA1465 CAN收发器硬件设计与软件配置实战指南

控制器局域网(CAN)总线是汽车电子和工业控制领域实现电子控制单元(ECU)间可靠通信的核心技术。其工作原理是将数字信号转换为差分信号进行抗干扰传输,技术价值在于构建稳定、高效的分布式实时控制系统。随着汽车电子架构向域集中式演进,对CAN总线的通信速率、网络复杂度和静态功耗提出了更高要求,这催生了支持CAN FD协议和智能电源管理的新一代高速CAN收发器。在车载网关、域控制器及工业网络节点等应用场景中,NXP的TJA1445和TJA1465系列收发器凭借其部分组网(Partial Networking)和选

weixin_29655587的博客 410

ADS AEL脚本进阶:参数化电感与变压器的自动化设计

本文深入探讨了如何利用ADS AEL脚本实现电感与变压器的参数化与自动化设计。通过构建可复用的函数库、封装高级设计流程、集成DRC检查与性能预估,将繁琐的手动绘制升级为高效的智能设计引擎,并最终通过创建GUI工具降低使用门槛,大幅提升射频/微波电路设计效率。

weixin_29309785的博客 203

请问rv1126配置完uboot中的bootargs参数后,怎么配置bootcmd来搭建NFS根文件系统?

要使用 NFS 根文件系统,你需要在 uboot 中设置好 bootargs 参数之后,指定 bootcmd 命令来从 NFS 服务器加载并启动内核。 通常的方法是使用 tftpboot 命令来从 NFS 服务器下载内核,然后使用 bootm 命令来启动内核。例如: setenv bootcmd "tftpboot 0x8000000 vmlinux.ub; bootm 0x8000000" 这...

weixin_35749796的博客 544

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

TFN_yzgd的博客 928

uboot--参数bootcmd和bootargs

U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。 u-bootcmd     前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。 u-bootargs     bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来

rianboe的专栏 1021

【深度学习】通俗易懂讲解循环神经网络LSTM

目录 1、循环神经网络(Recurrent Neural Networks) 2、长依赖存在的问题 3、LSTM 网络 4、LSTMs的核心思想 5、一步一步理解LSTM 6、LSTM的变种 7、总结 1、循环神经网络(Recurrent Neural Networks) 人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。...

Nieson2012的专栏 2729

vrep小车避障算法_V-REP 多车道巡线与避障

任务概要在给定的赛道中,实现多车道的避障和视觉巡线。避障算法没有限定,可使用人工势场、RRT等路径规划算法。车体大小、赛道信息以及参考资料在此处下载。完成情况已学习并能初步使用 V-REP Python Remote API 接口,实现 Python 与 V-REP 的功能交互。已实现基于视觉传感器的多车道巡线功能。已实现基于视觉传感器的多车道避障功能。V-REP Python Remote AP...

weixin_39692037的博客 1834

uboot启动uImage和rootfs(bootcmd和bootargs参数)

-boot的环境参数中有两个和内核启动相关的,它们是bootcmd和bootargs 1.u-boot中和环境参数有关的命令        printenv:打印当前环境参数        setenv param_name "value":设置环境参数        saveenv:保存环境参数到FLASH 2.bootcmd: 这个参数包含了一些命令,这些命

hanchaoman的专栏 6610

Halcon实战:5个工业质检案例教你玩转机器视觉(附完整代码)

本文通过5个工业质检实战案例,详细拆解了如何运用Halcon视觉软件库解决精密测量、包装检测、字符识别、透明物缺陷检测及深度学习质检等复杂问题。每个案例均提供完整代码与核心思路,旨在帮助工程师掌握从问题分析到方案落地的系统方法论,提升机器视觉项目的实战能力与鲁棒性。

nut55的博客 261

uboot中bootcmd和bootargs环境变量

u-boot环境变量bootcmd和bootargs简介

wangfei19841001的博客 3591

家用扫地机器人实物拆解报告-从顶盖到每一颗螺丝 · 逐层拆解旗舰扫拖一体机器人

2026年旗舰扫拖机器人拆解报告:采用D形机身设计,主机重4.5kg,基站重12kg。核心配置包括RK3588S+STM32H743双处理器、8颗21700电池、LDS激光雷达和双摄像头+结构光导航系统。创新设计亮点:锥形滚刷自动排毛发、活水循环拖地系统、基站集成450W强力集尘和自动上下水模块(带三重防漏保护)。整机采用模块化设计,关键部件均支持快速更换,在密封性、防呆设计和降本增效方面展现出成熟的工程智慧。

智能硬件研发,欢迎交流 519

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Linux系统移植13:bootcmd和bootargs环境变量

bootcmd 保存着 uboot 默认命令, uboot 倒计时结束以后就会执行 bootcmd 中的命令。这些命令一般都是用来启动 Linux 内核的,比如读取 EMMC 中的 Linux 内核镜像文件和设备树文件到 DRAM 中,然后启动 Linux 内核。可以在 uboot 启动以后进入命令行设置 bootcmd 环境变量的值。如果 EMMC 没有保存 bootcmd 的值,那么 uboot 就会使用默认的值,板子第一次运行 uboot 的时候都会使用默认值来设置 bootcmd 环境变量。

weixin_45783574的博客 462

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

uboot启动流程解析:bootcmd与bootargs的协同工作机制

本文深入解析uboot启动流程中bootcmd与bootargs两个关键环境变量的协同工作机制。bootcmd定义了uboot自动执行的命令序列,负责加载内核镜像;bootargs则向Linux内核传递启动参数,配置根文件系统挂载和串口输出等关键信息。掌握两者的正确配置对于嵌入式系统开发和uboot移植至关重要,能有效避免内核启动失败等常见问题。

rose2的博客 1010

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

uboot移植(5)--bootcmd、bootargs环境变量设置

uboot中bootcmd、bootargs环境变量设置

qq_67915669的博客 1609

bootcmd和bootargs

1. bootcmd uboot上电启动后会自动倒数bootdelay秒,如果没有人按下回车打断启动,则uboot会自动执行bootcmd启动命令来启动内核。 这个参数包含了一些命令,这些命令将在u-boot进入主循环后执行。 示例: bootcmd=boot_logo;nand read 1000000 3c0000 300000;bootm 1000000 意思是启动u-boot后,执行boot_logo显示logo信息,然后从nand flash中读内...

ARM-Linux 1023

U-Boot--bootcmd和bootargs参数

bootcmduboot 倒计时结束以后就会执行 bootcmd 中的命令bootargs保存着 uboot 传递给 Linux 内核的参数。

2401_89324144的博客 2356

[IMX][UBoot] 12.环境变量 bootcmd 和 bootargs

UBoot 环境变量 bootcmd 和 bootargs

毛线 965
上一篇: Cannot open keyboard?
下一篇: davnici dm6446中flash程序固化
android_lee2013
博客等级 码龄16年 86粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值