为了系统和稳定性,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. win7 + MySQL 5.6.35 免安装版部署

    之前项目开发一直用的asp.net技术,所以数据库自然而然的就用的Sql Server了,最近想着手看一下MySQL数据库,部署免安装版的MySQL的过程记录一下. 准备工作:window 7   6 ...

  2. 牛客网试卷: 京东2019校招笔试Java开发工程师笔试题(1-)

    1.在软件开发过程中,我们可以采用不同的过程模型,下列有关 增量模型描述正确的是() A 是一种线性开发模型,具有不可回溯性 B 把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析 ...

  3. Linux驱动模块的Makefile分析【转】

    本文转载自:http://blog.chinaunix.net/uid-29307109-id-3993784.html 1. 获取内核版本 当设备驱动需要同时支持不同版本内核时,在编译阶段,内核模块 ...

  4. ArchLinux For Arm 树莓派开机自启动脚本rc.local

    今天折腾了下树莓派的迅雷固件,迅雷的安装很顺利,解压直接运行portal 就搞定了, 但是自启动就有问题了,由于新版的ArchLinux切换到systemd,不但rc.conf省了,连rc.local ...

  5. excel的C#操作教程

    C# Excel Tutorial http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm How to transfer ...

  6. spring boot 启动后执行初始化方法

    http://blog.csdn.net/catoop/article/details/50501710 1.创建实现接口 CommandLineRunner 的类 package org.sprin ...

  7. 实现分享功能插件2---jiathis分享插件应用

    博主原创:未经博主允许,不得转载 在上一篇的博文中分享了如何用百度分享插件实现分享功能,现在展示用jiathis进行实现分享功能: 主要代码如下: <body> <div class ...

  8. FAST Hello World - Preparation for software's running environment

    Ubuntu 14.04 安装 libpcap-1.1.1 & libpnet-1.1.4 & NMAC function lib 参考: NetMagic.org yacc: com ...

  9. 如何新建一个datatable,并往表里赋值

    顺序是新建对象-->新建列-->新建行,示例代码如下: DataTable dt=new DataTable(); //新建对象 dt.Columns.Add("姓名" ...

  10. resource not found : rosbridge_server

    1.放到src下,改名字为rosbridge_server,编译catkin_make git clone https://github.com/RobotWebTools/rosbridge_sui ...