启动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. Python基础学习(五)

    一.使用模块 已经了解了什么是模块,模块就是一个个文件的体,我们可以做不同的文件中引入各个模块文件,当然如果模块有冲突,还可以给模块文件的上层建立一个目录简称包,包名只能唯一,不能重名. 另外,一旦建 ...

  2. Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) D. Minimum path

    http://codeforces.com/contest/1072/problem/D bfs 走1步的最佳状态 -> 走2步的最佳状态 -> …… #include <bits/ ...

  3. 常量引用 const T&

    1.引用本身不是对象,只是引用对象的别名,没有内存空间产生 2.引用必须严格类型匹配 3.而常量引用 const T& 可以引用字面值常量及表达式 其实也就是右值,且常量引用的不同与T类型对象 ...

  4. Class对象、反射机制、获取Constructor构造方法

    1.Class对象的三种创建方法(Class首字母大写) public class Demo { public static void main(String[] args){ Object obj= ...

  5. git杂记:忽略ssl认证

        当你通过HTTPS访问Git远程仓库,如果服务器的SSL证书未经过第三方机构签署,那么Git就会报错.这是十分合理的设计,毕竟未知的没有签署过的证书意味着很大安全风险.但是,如果你正好在架设G ...

  6. MyEclipse导入Maven项目以及Maven转化为Dynamic Web Module(转)

    MyEclipse导入Maven项目(这个博主写的比较详细)https://blog.csdn.net/w12345_ww/article/details/52094756 Maven转化为Dynam ...

  7. POJ1185 状压dp(二进制//三进制)解法

    很显然这是一道状压dp的题目 由于每个最优子结构和前两行有关,一个显而易见的想法是用三维dp[i][j][k]用来记录在第i行下为j状态,i - 1行为k状态时的最大值,然而dp[100][1 < ...

  8. Linux记录-重启后磁盘丢失问题解决方案

    1.df -TH 查看挂载情况 2.fdisk -l 查看磁盘情况 3.blkid 查看磁盘文件系统 4.vim /etc/fstab 加入  /dev/xvdf   ext4  defaults 0 ...

  9. vue-router源码分析

    上一篇我们写了前端路由,这几天比较闲,抽空研究了vue.js官方路由的vue-router的实现. 本文主要是以vue-router2.7.0(https://github.com/vuejs/vue ...

  10. 谈谈你对MVC的理解

    MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA ...