uboot的 bootm 和 bootargs

嵌入式 linux下arm平台的环境变量bootargs使用注意事项 1、setenv bootargs noinitrd mem=192M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot)ro,5M(kernel),125M(firstfs),125M(secondfs);saveenv;reset 2、setenv bootargs 阅读详情

在u-boot 文件夹下的/include/configs/at91sam9263.h


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非常非常的灵活,所以设置的方法有很多中形式,具体的还应该根据你的平台具体的情况来设置

【二】6.关于bootcmd和bootargs的设置 本文介绍了在嵌入式系统中配置bootcmd和bootargs的两种方式。bootcmd用于设置启动命令,支持从MMC存储设备或网络(TFTP/NFS)加载镜像文件并启动系统。具体命令包括从MMC加载镜像、从TFTP服务器获取镜像以及通过NFS挂载镜像。bootargs用于设置启动参数,支持从MMC或NFS挂载根文件系统,并配置控制台、网络等参数。通过合理配置这些命令和参数,可以灵活实现系统的启动和挂载方式。 阅读详情

相关推荐

Linux实战-1:修改uboot的bootargs设置,解决内存分配少问题

1、插电启动立马按Enter回车键,输入print命令查看打印: baudrate=115200 bootargs=console=ttyS1,115200n8 mem=32M@0x0 ispmem=8M@0x2000000 rmem=24M@0x2800000 init=/linuxrc rootfstype=squashfs root=/dev/mtdblock2 rw mtdparts=jz...

zhuyunier的博客 1万+

uboot的环境变量——bootargs简介

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

主要记录嵌入式学习与开发过程。 9409

【驱动】uboot常用环境变量和命令

Uboot常用环境变量和命令汇总

郭老二 580

Linux启动方式设置(bootargs 和 bootcmd 环境变量)

bootargs bootargs 保存着 uboot 传递给 Linux 内核的参数。 bootargs 环境变量设置:console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw 参数 含义 console=ttymxc0 设置 linux 终端,串口 1 的设备文件是/dev/ttymxc0 115200 设置串口的波特率 root=/dev/mmcblk1p2 根文件系统存放在 mmcblk1 设备的分区 2 ,即EMMC

丨晋丨 1万+

Autodesk激活无无网络选项?许可类型与脱机激活排查修复指南

软件许可激活是保障正版授权正常使用的核心环节,常见的授权模式包括单机版许可和网络版许可,两者在认证机制和应用场景上有所区别。单机版离线授权依托 FlexNet Licensing Service 等底层服务组件,在断网或内网环境下为用户提供可靠的技术支持与授权验证路径。然而在实际部署中,激活窗口并不总是显示“无网络激活方式”入口,这可能与许可类型选择、网络环境干扰、组件安装残留或系统时间偏差有关。理解入口的动态呈现逻辑与排查顺序,有助于在 AutoCAD、Revit 等 Autodesk 产品中高效解决脱机

weixin_28709649的博客 355

程序员必备75道逻辑思维题(附答案)之二

逻辑训练 身为一个大数据工程师,平时的算法训练还是不能少的,今天给大家看几道我曾经看到的逻辑思维题觉得很好,想分享一下。 【6】一个球、一把长度大约是球的直径2/3长度的直尺.你怎样测出球的半径?方法很多,看看谁的比较巧妙 【7】五个大小相同的一元人民币硬币。要求两两相接触,应该怎么摆? 【8】猜牌问题 S先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4 黑桃J、8、4、2、...

蛋蛋淡淡定的庄园 3547

uboot bootargs bootcmd bootm

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

cogizh 5292

NPP/VIIRS夜间灯光数据:从下载到应用的完整指南

本文提供了NPP/VIIRS夜间灯光数据从下载、处理到应用的完整实战指南。详细介绍了如何从官方源获取数据、解读文件结构、进行坐标校正与数据清洗,并深入探讨了其在城市扩张监测、社会经济指标估算、重大事件影响评估等领域的核心应用。文章旨在帮助研究者与从业者快速掌握这一强大的空间数据,将其转化为研究中的实用工具。

gpu4optimizer的博客 866

【uboot】booti指令详解

在上一篇,我们使用了booti指令启动Kernel,那么到底是怎么启动内核的呢?当然,修改defconfig文件最为直接,也省的每次启动都需要人工敲一遍命令了。之后按照原来的方法加载uImage,即可成功进入内核的命令行。哈哈哈,没想到吧,直接br指令跳到ep执行就可以了。比较两者二进制也可得知:前面的0x40字节就是工具补上去的。在uboot/tools文件夹下可以找到,也可直接安装。直接使用 bootm命令启动Image,报了如下错误。镜像,也仅仅是前面增加了。直接启动的,需要使用。

qinmoge8586的博客 2157

波束形成算法:LCMV实现(MATLAB)

阵列信号处理,波束成形,

weixin_43601588的博客 1万+

三极管稳压电路仿真分析

Z1的负极连接到三极管的基极,三极管发射极E是输出,形成了一个射极跟随器,也就是说,E极的电压随着B电压变化而变化,但BE之间有一个压降,一般硅管0.7V左右,假设B极是6.7V,那E极就是6.7-0.7=6V,所以就有一个公式VOUT=Vz-Vbe,可以根据VOUT来选择合适的稳压管。从稳压管的SPEC中我们可以看到,Vz@Izt这个参数,指在Izt=20mA时,稳压管的稳压值Vz=5.1V,也就是说流过稳压管的电流在20mA以上,稳压效果最佳。三极管导通之后,E点电压会升高,当升高到Vbe。

U_YAO的博客 2325

uboot利用uEnv.txt文件实现灵活功能(加载PL侧bit,修改uenvcmd,配置bootargs,配置bootm,配置bootz)

基于uboot-xlnx-2013.4 通过修改zynq_common.h和zynq_zed.h,添加所需要的功能代码。 使ZED添加uboot从SD卡加载PL功能。 直接修改zynq_common.h /* Default environment */ #define CONFIG_IPADDR 192.168.1.10 #define CONFIG_SERVERIP 192.168.1.11 ...

Huskar_Liu的博客 1万+

Autosar CAN 网络管理标准文档

Autosar CAN 网络管理标准文档

蚂蚁小兵 925

start kernel 之后没有任何输出与uboot无法将bootargs传入内核的调查方法

版权声明:转载请注明出处: http://blog.youkuaiyun.com/sy373466062 作者: TonyHo https://blog.youkuaiyun.com/sy373466062/article/details/50363151 </div> ...

Qinus的博客 692

计算机网络实验报告实验七可靠传输TCP协议分析

计算机网络实验报告实验七可靠传输TCP协议分析

m0_56638814的博客 966

SAP Build Work Zone standard edition 订阅报错 OIDC trust missing 的成因与完整解决路径

摘要:用户订阅SAP Build Work Zone时遇到422错误,提示未配置OpenID Connect信任。该错误表明业务用户需通过SAP Cloud Identity Services的OIDC协议认证,而当前子账户仅配置了SAML信任或未配置信任。解决方法是进入子账户的Trust Configuration页面,使用Establish Trust功能建立与SAP Cloud Identity Services的OIDC信任关系。这是SAP新版服务的强制要求,SAML协议已不被支持。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 197

uboot的常用命令

uboot命令的介绍: linux终端设计有三种缓冲机制。无缓冲,行缓冲,全缓冲 uboot终端使用类似于行缓冲命令行。 uboot进入到shell环境下,可以进行输入命令,设置环境变量等操作。 uboot的环境变量和操作系统的环境变量工作原理和方式几乎完全相同。 uboot的命令大概有几十个。 常用的uboot命令介绍: print/printenv   用法:print命令不带参数,作用是打...

小博的博客 524

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

weixin_35749796的博客 544

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Uboot 网络加载并启动Linux - 基于移植好的网络功能

前言 根据前面的文章,到现在移植的DM9621网卡已经能正常工作了,接下来便是使用Uboot内置的网络命令集,进行相关的操作,如tftpboot加载内核,加载设备树等。下面将会对移植好的网络功能做个简单介绍。 使能DM9621网卡 说明 因为是基于USB网卡的缘故,Uboot默认启动时是没有开启USB功能的,所以没有办法自动初始化网卡,需要手动去使能USB功能,和使能DM9621网卡。 步骤 u-...

Jason_416的博客 4283

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

10. 嵌入式Linux系统移植 - uboot启动内核命令介绍

要想启动内核,必须要有内核文件,此处为uImage zImage/bzImage/Image:内核最原始的数据包 uImage:在内核原始数据包的基础上,加了一个uboot的头。 因为,uImage最开头都是一些uboot数据信息,不具有可执行能力,一旦执行,必定跑飞。 必须用bootm将前端的数据信息解析出来,才可以执行。 直接用bootm指到内存开始地址运行,发现还是运行不起来。 上面显示Starting kernel ..., 实际上代码还在uboot中 如果内核启

我思故我在! 363

uboot的基本概念

uboot的引入一 uboot是什么? uboot是bootloader的一种,是一个嵌入式引导程序。 对比pc机和嵌入式linux系统的启动过程: 1.PC机的启动过程 (1)典型的PC机的部署:BIOS程序部署在PC机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,CPU在掉电时不工作。 (2)启动过程:PC上电后先执行BIOS程序(实际上PC的BIOS就是

chenqiang_ace的博客 2833
上一篇: AT91SAM926x内核编译流程
下一篇: 系统启动挂载根文件系统时Kernel panic
lichangc
博客等级 码龄16年 207粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值