为了系统和稳定性,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. 20165310_java_blog_week1.md

    2165310 <Java程序设计>第1周学习总结 教材学习内容总结 了解Java基本配置环境 学习Java命名.编译.运行规则 拓展学习包的编译.运行 熟悉Git的运用方式 教材学习中的 ...

  2. Go第七篇之规范的接口

    接口本身是调用方和实现方均需要遵守的一种协议,大家按照统一的方法命名参数类型和数量来协调逻辑处理的过程. Go 语言中使用组合实现对象特性的描述.对象的内部使用结构体内嵌组合对象应该具有的特性,对外通 ...

  3. Linux中设备号及设备文件【转】

    本文转载自:http://blog.csdn.net/ymangu666/article/details/39292651 主.次设备号 应用程序可以通过对/dev 目录下的设备文件读写,从而访问实际 ...

  4. ReentrantReadWriteLock分析

    ReentrantReadWriteLock会使用两把锁来解决问题,一个读锁,一个写锁 线程进入读锁的前提条件: 没有其他线程的写锁, 没有写请求或者有读请求,但调用线程和持有锁的线程是同一个 线程进 ...

  5. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决方法

    项目忽然出现 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Pat ...

  6. apiCloud检出代码出现以下图示错误:

    问题如下: Initialized empty Git repository in H:/simlpe/.git/ 已经在 H:\simlpe 完成必要的项目初始化工作正在尝试从代码服务器获取数据.. ...

  7. NOI 4977 怪盗基德的滑翔翼(LIS)

    http://noi.openjudge.cn/ch0206/4977/ 描述: 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯.而他最为突出的地方,就是他每次都能逃脱中村警部的重重围 ...

  8. fusion--RNAseq

    融合基因(Fusion gene)是指两个基因的全部或一部分的序列相互融合为一个新的基因的过程.其有可能是染色体易位.中间缺失或染色体倒置所致的结果. 异常的融合基因可以引起恶性血液疾病以及肿瘤.例如 ...

  9. python 斐波那契查找

    def fibonacci_search(lis, key): # F = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 ...

  10. 安装Zookeeper和kafka,安装完毕后,遇到的错误

    按照原文链接 http://www.cnblogs.com/swneng/p/10212460.html 在windows下进行安装 之后运行 D:\00H_Bigdata\kafka_2.11-2. ...