为了系统和稳定性,flash上有两套系统。在uboot引导阶段会根据当前的bootslot变量,决择运行哪套系统。进入系统之后,会自动挂载数据区,然后启动开关的应用程序。

如上图所示系统有两块存储芯片,分别为512K的SPI-NOR与128M的SPI-NAND。Spi-nor分为5个区,其中reserved分区为预留,art分区存放WIFI校准数据。spi-nand也分为5个区,其中overlay为用户数据区。分区信息由uboot传递给kernel,通过参数mtdpartX:

mtdpartX=spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(u-boot-env-bak)ro,64k(reserved),64k(art);spi0.1:4m(kernel-0)ro,30m(root-0),4m(kernel-1),30m(root-1),-(overlay)

在include/configs/953x.h  uboot参数修改改成即可:关键思路为如下红色字体。

#define CONFIG_EXTRA_ENV_SETTINGS      \

"kernel_0_start=0x0\0" \

"root_0_start=0x400000\0"    \

"mtdparts0=spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(u-boot-env-bak),64k(reserved),64k(art);spi0.1:4m(kernel-0)ro,40m(root-0),4m(kernel-1),40m(root-1),-(overlay)\0"    \

"boot_from_slot_0=setenv bootargs ubi.mtd=6 ${std_bootargs0} mtdparts=${mtdparts0}; nboot 0x81000000 0 ${kernel_0_start}\0"   \

"kernel_1_start=0x2C00000\0"  \

"root_1_start=0x3000000\0"    \

"mtdparts1=spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(u-boot-env-bak),64k(reserved),64k(art);spi0.1:4m(kernel-0),40m(root-0),4m(kernel-1)ro,40m(root-1),-(overlay)\0"     \

"boot_from_slot_1=setenv bootargs ubi.mtd=8 ${std_bootargs1} mtdparts=${mtdparts1}; nboot 0x81000000 0 ${kernel_1_start}\0"    \

"std_bootargs0=board=CUS531MP3-NAND console=ttyS0,115200 ubi.mtd=overlay rootfs=/dev/mtdblock:rootfs  rootfstype=squashfs noinitrd init=/sbin/init  bootslot=0\0"  \

"std_bootargs1=board=CUS531MP3-NAND console=ttyS0,115200 ubi.mtd=overlay rootfs=/dev/mtdblock:rootfs  rootfstype=squashfs noinitrd init=/sbin/init  bootslot=1\0"  \

"bootslot=0\0"       \

"flash_uboot=tftp 0x80060000 u-boot.bin&&erase 0x9f000000 +$filesize&&cp.b $fileaddr 0x9f000000 $filesize\0"             \

"flash_kernel-0=tftp 0x80060000 kernel.bin&&nand erase 0x0 0x400000&&nand write $fileaddr 0x0 $filesize\0"                                                            \

"flash_root-0=tftp 0x80060000   root.bin&&nand erase 0x400000 0x2800000&&nand write $fileaddr 0x400000 $filesize\0"                      \

"flash_kernel-1=tftp 0x80060000 kernel.bin&&nand erase 0x2C00000 0x400000&&nand write $fileaddr 0x2C00000 $filesize\0" \

"flash_root-1=tftp 0x80060000  root.bin&&nand erase 0x3000000 0x2800000&&nand write $fileaddr 0x3000000 $filesize\0"           \

"overy_start=0x5800000\0"

#ifdef ATH_SPI_NAND

#       define CONFIG_BOOTCOMMAND       "if test ${bootslot} -ne 1;then run boot_from_slot_0;else run boot_from_slot_1;fi"

基于高通 qca4531 mp3 demo板 双系统引导设计的更多相关文章

  1. ARM开发板实现双系统引导的一种方法——基于迅为iTOP-4412开发板

    前言 本文所用的uboot代码为迅为官方提供,开发板是迅为iTOP-4412开发板.本文如有错误,欢迎指正. 首先,我们确定一下系统启动的流程:首先启动uboot,uboot启动内核并挂载rootfs ...

  2. Win7&Ubuntu12.04 双系统引导问题

    周末的时候手贱,重装系统,导致原来的ubuntu12.04和win7双系统的引导不见了,所以在此进行一下说明,如何修复. 1. win7和ubuntu12.04双系统引导修复 问题描述:    在重装 ...

  3. win10 + Ubuntu 20.04 LTS 双系统 引导界面美化

    版权声明:本文为CSDN博主「ZChen1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/ZChen1 ...

  4. Android图形合成和显示系统---基于高通MSM8k MDP4平台

    介绍了Android SurfaceFlinger层次以下的图形合成和显示系统,主要基于高通MSM8k MDP4x平台. 做为Android Display专题.SurfaceFlinger的详细介绍 ...

  5. Android上HDMI介绍(基于高通平台)

    本文重点针对HDMI在android上的应用,而比较相关的就是overlay机制.overlay在这里只是简单的介绍,后续会有文章再专门详述. 我没记错的话,高通从7X30开始,平台就可以支持HDMI ...

  6. 高通MSM8255 GPS 调试分析&&Android系统之Broadcom GPS 移植【转】

    本文转载自:http://blog.csdn.net/gabbzang/article/details/12063031 http://blog.csdn.NET/dwyane_zhang/artic ...

  7. 基于window 7安装ubuntu 18.04双系统

    window7下安装ubuntu双系统 1.首先下载ubuntu镜像文件 进入ubuntu官网,http://releases.ubuntu.com/18.04/.下载最新镜像,ubuntu-18.0 ...

  8. 基于Struts2,Spring4,Hibernate4框架的系统架构设计与示例系统实现

    笔者在大学中迷迷糊糊地度过了四年的光景,心中有那么一点目标,但总感觉找不到发力的方向. 在四年间,尝试写过代码结构糟糕,没有意义的课程设计,尝试捣鼓过Android开发,尝试探索过软件工程在实际开发中 ...

  9. centos7 ,windows7 grub2 双系统引导

    因为原先的windows7 和 centos6.3 安装在一台笔记本上.因为centos6.3不能识别无线网卡,在网上找了找,要升级内核到3.2以上. 因为本人初级水平,不敢擅自行动,怕把window ...

随机推荐

  1. 按时间间隔生成cron表达式

    cron表达式是使用任务调度经常使用的表达式了.对于通常的简单任务,我们只需要一条cron表达式就能满足.但是有的时候任务也可以很复杂. 最近我遇到了一个问题,一条任务在开始的时候要触发A方法,在结束 ...

  2. Python3基础 os mkdirs 创建多层文件夹

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  3. 嵌入式C语言--面试题

    C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法.这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是 ...

  4. DDMS files not found

    在eclipse中启动新建的android项目的时候,控制台提示如图: 方法1.cmd中adb kill-server,然后adb -startserver 方法2.方法1不管用,那么在任务管理器中杀 ...

  5. 支持github的chrome插件octotree

    1.这款插件有何作用? 方便浏览github上的源码 2.安装方法 通过以下链接进行安装: https://chrome.google.com/webstore

  6. P3709 大爷的字符串题

    题意 询问区间众数出现的次数 思路 唯有水题快人心 离散化+莫队 莫队一定要先加后减,有事会出错的 莫队维护区间众数: 维护两个数组,一个数组记录权值为x的出现次数,一个记录出现次数为x的数的个数 a ...

  7. SPOJ Hacking(字典树 + 搜索)题解

    思路1:字典树存每个串,然后dfs遍历是否存在.这里有个技巧,如果每次都重新初始化字典树为-1,那么会超时,所以我先初始化为-1,然后设一个Case,每个test时Case都++,那么只要开一个数组判 ...

  8. 源码编译安装keepalived

    首先到官网下载需要的包:http://www.keepalived.org/download.html [root@localhost local]# .tar.gz [root@localhost ...

  9. (转)MyBatis & MyBatis Plus

    (二期)3.mybatis与mybatis plus [课程三]mybatis ...运用.xmind0.1MB [课程三]mybatis...机制.xmind0.2MB [课程三]mybatis与j ...

  10. 关于ActiveMQ、RocketMQ、RabbitMQ、Kafka一些总结和区别

    这是一篇分享文 转自:http://www.cnblogs.com/williamjie/p/9481780.html  尊重原作,谢谢 消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: ...