简介

高通的IPQ4018的SoC使用了ARM的CPU,并使用了高通的QSDK.

在开发中发现很难在它的架构中去修改MTD分区信息。

今天就提供一种可以修改MTD分区的方式。

MTD分区信息是如何从Uboot传到linux的,有几种方式?

换一种问法 uboot如何把参数传入linux呢?

cmdline和FTD(设备树)

先讲一下简单的cmdline

Uboot以bootarg命令的方式把cmdline传递给linux内核。内核在启动过程中会读取cmdline中的各个参数,并做相关的处理。

其中一个参数是mtdparts.

mtdparts=ath-nor0:256k(u-boot),64k(u-boot-env),9600k(uImage),5760k(custom),640k(nvram),64k(art),9600k@0x50000(firmware)

mtdparts就是flash的分区信息。Linux按这个信息对flash进行区与区的隔离与读写。

除了uboot以bootarg命令传递cmdline。还有种方式IMAGE_CMDLINE_HACK的特性。这是内核编译选项,打开它后,编译linux系统的.config中配置CONFIG_CMDLINE.这样linux自己带着参数,就可以不麻烦uboot里配置了。

如果用户在uboot里配置了bootarg又在linux里编译了CONFIG_CMDLINE,有两个参数,那系统使用哪一个呢?

这个我没仔细读代码。大家可以自己试一试。

再说设备树的方式

有关设备树的知识比较庞大。大家需要有一个背景知识。高通的IPQ4018就是使用设备树的方式向linux里传入各种参数。

IPQ4019的分区信息的传递过程请见下文

uboot把系统分区的信息从相应的区块中读取(如上文的nor-system-partition-ipq40xx.bin)。然后再去把信息加工成设备树(或是of_node信息),挂到设备树的上。然后启动linux.

Linux自然就从设备树上读到了分区的信息,解析分区信息的软件模块叫ofparts。

如下图的打印,在ofpart上发现了分区信息。

修改IPQ4019的分区信息的机制

上一节讲到了两种分区信息的传递方式。那么IPQ4019用这种设备树的方式。对我们来说太麻烦了。

但是IPQ4019也是支持IMAGE_CMDLINE_HACK。

我们在内核代码中把ofparts机制关掉,在编译项目中打开IMAGE_CMDLINE_HACK并且配置好CONFIG_CMDLINE就可以了。

具体修改如下:

CONFIG_ATAGS 打开ATAGS功能,linux内核去读取CMDLINE

CONFIG_CMDLINE_FORCE 就是上文的IMAGE_CMDLINE_HACK的替换者。不处理uboot输入的参数。

linux分区命令mtd,修改IPQ4019/4018的MTD分区相关推荐

  1. 修改IPQ4019/4018的MTD分区

    简介 高通的IPQ4018的SoC使用了ARM的CPU,并使用了高通的QSDK. 在开发中发现很难在它的架构中去修改MTD分区信息. 今天就提供一种可以修改MTD分区的方式. MTD分区信息是如何从U ...

  2. Linux基础命令学习——方法二(给swap分区增加500M)

    在之前的博客中也有相关介绍,将Swap分区扩展500M,当然有很多方法,今天来记录第二种方法. 上篇介绍swap分区扩展500M的方法: Linux基础命令学习--实战篇(给swap分区增加500M) ...

  3. 在LINUX中怎样用FIDISK分区,fdisk分区命令详解与fdisk非交互式分区

    1.说明:fdisk如何来学习 fdisk,就是在linux中用来分区的一个命令了,至于详细的参数,可以man一下,这里给出实际应用过程中最常用的用法,因为这样比起单纯讲命令的语法功能更能掌握一个命令 ...

  4. 补充笔记(Linux常用命令+sql表空间,索引,分区,创建用户)

    Linux操作笔记 cd +目录 切换目录 ll看详情 pwd看路径 mkdir 创建文件 -p 级联 rmdir [-p] dirName/子目录   删除空目录 du 查看每个文件占用情况 df ...

  5. fdisk分区命令详解与fdisk非交互式分区

    1.说明:fdisk如何来学习 fdisk,就是在linux中用来分区的一个命令了,至于详细的参数,可以man一下,这里给出实际应用过程中最常用的用法,因为这样比起单纯讲命令的语法功能更能掌握一个命令 ...

  6. Linux基础命令---sysctl修改内核参数

    sysctl sysctl指令用来修改正在运行的内核参数,可以修改的参数都保存在/proc/sys/目录中,修改会立即生效.Linux中的sysctl支持需要Procfs.您可以使用sysctl来读取 ...

  7. php 磁盘配额,Linux edquota命令:修改用户(群组)的磁盘配额

    针对用户和群组的配额限制(Quota),不仅可以手动控制开启和关闭,还可以手动修改配额参数,即使用 edquota 命令. edquota 命令,是 edit quota 缩写,用于修改用户和群组的配 ...

  8. Linux【命令】修改文件内容

    目标: 在/opt/hello/world.txt文件中增加一行  hello linux world ! 方法一: 命令是:vi,vim vi 编辑器,相当于记事本,有编辑功能,但较弱 vim 复杂 ...

  9. linux chpasswd命令 批量修改用户密码

    chpasswd  批量修改用户密码 工作原理: 从系统的标准输入读入用户的名称和口令,并利用这些信息来更新系统上已存在的用户的口令 语法: 1:# echo 用户名:密码 | chpasswd 2: ...

  10. Linux——k8s命令别名修改

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在实际操作linux系统时,如k8s集群,一些命令较长,使用不方便,可以通过linux一些系统文件进行别名配置,便于使用. 配置 ...

最新文章

  1. 激活函数GELU()
  2. 把内表 itab1 的 n1 到 n2 行内容附加到 itab2 内表中去.
  3. [Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形
  4. 面了三次字节,他的一些感悟
  5. 网页版四则运算(未全部完成)
  6. Qt中颜色选择框输出所选中的颜色值
  7. python课堂笔记之django-day02(7)
  8. B - Cube HDU - 1220 (数学计数)
  9. 使用HTML5中的Canves标签制作时钟特效
  10. python身份证号掩盖出生日期的代码_Python实现第一、二代公民身份证号码有效性校验...
  11. CAD如何在线查看图纸?
  12. 什么是敏捷开发(Scrum)?
  13. css linux 等宽字体,css 等宽字体有哪些
  14. 我以为我会junit,原来我还不会
  15. Day050--jQuery表单事件 轮播图 插件库 ajax
  16. 通过复制粘贴输入网址
  17. 大数据算法系列10:字符串检验算法
  18. 排名前5位的开源问答系统
  19. 广州python培训什么
  20. python水果超市项目_水果超市经营模式,实现营业额翻3倍,年纯利超24万的经营干货...

热门文章

  1. 代码生成器AutoGenerator
  2. java开发是什么_java开发到底是做什么的
  3. 做片子留着备用 超级游戏影视配乐音效库36套合集
  4. cruise软件模型,cruise增程混动仿真模型,功率跟随控制策略,Cruise混动仿真模型,串联混动汽车动力性经济性仿真
  5. kitkat(KRT16S)刷入实机nexus4
  6. 《强化学习》-读书笔记-第三章 有限马尔科夫决策过程
  7. 计算机信息处理技术员初级难不难,考信息处理技术员之前,这些问题你要知道!...
  8. loadrunner11 中文破解版(附详细安装教程)
  9. gbadev上的资料搬运贴
  10. 谈一下MSDN和下载原版windows7