启动uboot后,在重新烧写程序之前,查看传递给内核的参数时(命令为: printenv),看到如下内容:

bootargs=console=ttyS0,115200 mtdparts=spi0.0:256k(u-boot),64k(u-boot-env),14528k(rootfs),1408k(uImage),64k(mib0),64k(ART) board=DB120

另外一块板子打印消息却是如下:

bootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 init=/sbin/init mtdparts=ath-nor0:256k(u-boot),64k(u-boot-env),14528k(rootfs),1408k(uImage),64k(mib0),64k(ART)

有些迷茫,查找资料,得到要点如下.

Uboot 将分区信息(形如 mtdparts=xxx)添加到bootargs中,kernel在启动的时候会解析mtdparts.

下面说一下mtdparts,以及它的用法:

要想让Uboot中的mtdparts起作用,内核中必须支持mtd,机内核配置时需要选上:

Device Drivers   -->

   Memory Technology Device (MTD) support  -->

Command line partition table parsing

mtdparts 的格式如下:

mtdparts=<mtddef>[;<mtddef]

mtdparts 可以由一个或多个 mtddef 组成。每个mtddef定义如下:

<mtddef> := <mtd-id>:<partdef>[,<partdef>]

mtddef 可以由mtd-id 和一个或多个partdef组成,每个partdef定义如下:

<partdef> := <size>[@offset][<name>][ro]

<mtd-id> := unique id used in mapping driver/device

<size> := standard linux memsize OR "-" to denote all remaining space

<name> := (NAME)

因此在使用的时候,需要按照下面的格式来设置:

mtdparts=mtd-id:<size1>@<offset1>(<name1>),<size2>@<offset2>(<name2>)

这里需要注意的地方如下:

(1) mtd-id 必须跟当前平台 flash 的 mtd-id 一致,不然整个 mtdparts会失效。如何获取当前平台的flash 的mtd-id? 在bootarg参数立邦中,可以指定当前falsh的 mtd-id, 指定mtdids:nand0=gen_nand.1,前面的 nand0 则表示第一个flash。

(2)size在设置的时候,可以为实际的size(xxM,xxK,xx),也可以为‘-’,表示剩余的所有空间,相关信息可以查看 drivers/mtd/cmdlinepart.c中注释找到相关描述。

备注:

target/linux/ar71xx/image/Makefile 中有关于分区的定义:

db120_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6336k(rootfs),1408k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)

其中7744 这个大小为 rootfs + kernel = 6336 + 1408 = 7744

$(eval $(call SingleProfile,AthLzma,64k,DB120,db120,DB120,ttyS0,115200,$$(db120_mtdlayout),RKuImage))

uboot 传递的参数 mtdparts的更多相关文章

  1. u-boot向linux内核传递启动参数(详细)

    U-BOOT 在启动内核时,会向内核传递一些参数.BootLoader 可以通过两种方法传递参数给内核,一种是旧的参数结构方式(parameter_struct),主要是 2.6 之前的内核使用的方式 ...

  2. u-boot向linux内核传递启动参数

    U-BOOT 在启动内核时,会向内核传递一些参数.BootLoader 可以通过两种方法传递参数给内核,一种是旧的参数结构方式(parameter_struct),主要是 2.6 之前的内核使用的方式 ...

  3. uboot传递参数'console=ttyXXX'的作用

    转载于:http://blog.csdn.net/jgdu1981/article/details/8643057 linux启动时uboot传递进console=ttyS0,115200n8的参数 ...

  4. u-boot 内核 启动参数

    kernel如何得到uboot启动信息: http://blog.sina.com.cn/s/blog_89d9bec60101bzen.html u-boot向linux内核传递启动参数: http ...

  5. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  6. java方法强制传递引用参数(做为返回值),改变被传递参数值。

    Java传递参数分为2种: 值类型,Java里面也叫简单类型,这种参数类型的传递的是它的副本拷贝: 引用类型,传递的是对象引用地址,如果在方法内改变该参数对象属性即是对原引用对象的改变:如果不想这样传 ...

  7. ajax传递array参数

    var ticketId = new Array(); for(var i = 0; i < checkboxes.length; i++) { ticketId.push(checkboxes ...

  8. 将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法

    获得对象的所有属性名 || 将对象o的所有属性名放到数组中 var o = {x:1,y:2,z:3}; var arr = []; var i = 0; for(arr[i++] in o){};/ ...

  9. Web报表页面如何传递中文参数

    1.场景描述 在用报表开发工具FineReport设计的web报表中,给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,例如: <iframe id="report ...

随机推荐

  1. (string find) 亲和串 hdu2203

    亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. MySQL_select语句(不定时更新)

    1.SELECT语句 select if(fraction>=60 and fraction<=100,'合格','不合格') from sp_employeezzvalidate;

  3. Hadoop生态圈-Oozie实战之调度shell脚本

    Hadoop生态圈-Oozie实战之调度shell脚本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客展示案例:使用Oozie调度Shell脚本. 1>.解压官方案例 ...

  4. 远程升级云服务器系统 CentOS 6.x 至 CentOS 7.x

    由于docker-ce不再支持centos6,所以觉得吧系统升级为centos7,以下是踩坑的过程 1.添加源 /etc/yum.repos.d/upgrade.repo [upgrade] name ...

  5. 多目标遗传算法 ------ NSGA-II (部分源码解析)父、子种群合并 merge.c

    /* Routine for mergeing two populations */ # include <stdio.h> # include <stdlib.h> # in ...

  6. java中import机制(指定import和import *的区别)

    转自:https://www.cnblogs.com/dtts/p/4692480.html java中有两种包的导入机制,总结如下: 单类型导入(single-type-import),       ...

  7. vue.js初始学习笔记&vue-cli

    笔记一下: vue.js 安装,参考: http://www.cnblogs.com/wisewrong/p/6255817.html (vue-cli) http://www.cnblogs.com ...

  8. CSS魔法(一) 盒子模型

    序言 盒子模型(橘子橘子皮) 一个盒子,包括:外边距(margin).边框(border).内边距(padding)以及最中间的内容(content). margin.padding <styl ...

  9. 25. Spring Boot与缓存 JSR-107、Spring缓存抽象

    JSR107 Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry和Expiry. CachingProvider  ...

  10. dijkstra补充

    dijkstra主要写法: priority_queue<pair<int,int> >q; //大根堆 //dis第一维为dis的相反数 void dijkstra(){ m ...