4.7 海思SS928开发 - uboot开发 - 自定义分区以及启动方案

news2025/1/16 9:10:10

4.7 uboot开发 - 自定义分区以及启动方案

  • ss928 出厂默认的启动方式以及 emmc 默认的分区,不符合需求,考虑自己做一个分区方案以及启动方案。

分区方案

  • 分区表如下:

    分区文件系统分区说明
    fastboot-存放 bootloader
    ubootenv-存储 uboot 环境变量
    kernel-存放 kernel 镜像文件
    kernel_recovery-存放 kernel recovery 镜像文件
    kernel_repoext4存放各种各样的 kernel 镜像文件
    rootfs_recoveryext4用于恢复的文件系统
    rootfsext4主文件系统
  • 对应的 xml 分区表文件如下:

    <?xml version="1.0" encoding="GB2312" ?>
    <Partition_Info ProgrammerFile="">
    <Part Sel="1" PartitionName="fastboot" FlashType="emmc" FileSystem="none" Start="0" Length="512K" SelectFile=""/>
    <Part Sel="1" PartitionName="ubootenv" FlashType="emmc" FileSystem="none" Start="512K" Length="512K" SelectFile=""/>
    <Part Sel="1" PartitionName="kernel" FlashType="emmc" FileSystem="none" Start="1M" Length="32M" SelectFile=""/>
    <Part Sel="1" PartitionName="kernel_recovery" FlashType="emmc" FileSystem="none" Start="33M" Length="32M" SelectFile=""/>
    <Part Sel="1" PartitionName="kernel_repo" FlashType="emmc" FileSystem="ext3/4" Start="65M" Length="256M" SelectFile=""/>
    <Part Sel="1" PartitionName="rootfs_recovery" FlashType="emmc" FileSystem="ext3/4" Start="321M" Length="1536M" SelectFile=""/>
    <Part Sel="1" PartitionName="rootfs" FlashType="emmc" FileSystem="ext3/4" Start="1857M" Length="-" SelectFile=""/>
    </Partition_Info>
    
  • 对应的分区参数如下:

    • blkdevparts=mmcblk0:512K(fastboot),512K(ubootenv),32M(kernel),32M(kernel_recovery),256M(kernel_repo),1536M(rootfs_recovery),-(rootfs)

启动方案

  • 启动流程图如下:

    ss928

修改源码

  • 文件 include/configs/ss928v100.hCONFIG_BOOTCOMMAND 修改为以下内容:

    #define CONFIG_BOOTCOMMAND \
        "if test ${boot_recovery} = 1; then " \
            "echo boot from EMMC (recovery);" \
            "setenv kernel_blk 0x10800;" \
            "setenv rootfs_part /dev/mmcblk0p6;" \
        "elif test ${boot_recovery} = 0; then " \
            "echo boot from EMMC (system);" \
            "setenv kernel_blk 0x800;" \
            "setenv rootfs_part /dev/mmcblk0p7;" \
        "fi;" \
        "run boot_mmc;"
    
  • 简要说明:启动时通过判断变量 boot_recovery 的值,来决定需要加载的内核镜像以及挂载的文件系统。如果有条件的话,通过硬件来判断更好。

  • CONFIG_EXTRA_ENV_SETTINGS 修改为以下内容:

    #define CONFIG_EXTRA_ENV_SETTINGS \
        "boot_recovery=0\0" \
        "boot_quiet=quiet\0" \
        "bootarg1=mem=3840M console=ttyAMA0,115200 clk_ignore_unused lpj=240000 rw rootwait rootfstype=ext4 " \
            "blkdevparts=mmcblk0:512K(fastboot),512K(ubootenv),32M(kernel),32M(kernel_recovery)," \
            "256M(kernel_repo),1536M(rootfs_recovery),-(rootfs)\0" \
        "boot_mmc=setenv bootargs ${bootarg1} recovery=${boot_recovery} ${boot_quiet} root=${rootfs_part};" \
            "mmc read 0 0x50000000 ${kernel_blk} 0x10000; bootm 0x50000000;\0"
    
  • 简要说明:bootarg1 变量存放不会被修改的内核启动参数,boot_mmc 为真正执行的启动命令,先完善传递给内核的启动参数,然后从相应的地址读取内核镜像并加载内核。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1623131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jenkins修改全局安全配置之后登录错误

教训&#xff08;流泪&#xff09; 事情是这样的&#xff0c;第一次我需要用单点登录集成jenkins&#xff0c;jenkins可以通过插件的方式支持cas协议&#xff0c;我当时也不很懂&#xff0c;经过我学网上的一顿乱配置&#xff0c;jenkis上不去了&#xff0c;虽然这是公司本地环…

Nginx 配置 SSL(HTTPS)详解

Nginx作为一款高性能的HTTP和反向代理服务器&#xff0c;自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL&#xff0c;实现HTTPS的访问。 随着互联网安全性的日益重要&#xff0c;HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务…

C语言----枚举

当我们看过了结构体和联合体&#xff0c;那么我们接下来就将学习枚举。这也许对大家又是一个新的知识点。大家不要急&#xff0c;我来给大家简单的总结一下。先看名字&#xff0c;枚举就是一个个列举。这样大家应该比较熟悉吧。如一周有七天。这个肯定要分开列举出来吧&#xf…

LLMs——扩展数据受限的语言模型解决方案

概述 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大型语言模型的发展一直是研究的热点。这些模型通过增加参数数量和训练数据量来提升性能&#xff0c;但这种增长趋势是否会有一个极限&#xff1f;实际上&#xff0c;研究者们已经注意到&#xff0c;为了有效地…

03-JAVA设计模式-观察者模式

观察者模式 什么是观察者模式 Java中的观察者模式是一种常见的设计模式&#xff0c;它允许对象&#xff08;观察者&#xff09;订阅另一个对象&#xff08;被观察者&#xff09;的状态变化&#xff0c;并在状态变化时自动得到通知。 核心&#xff1a; 观察者模式主要用于1&a…

Python 基础 (Pandas):Pandas 入门

1. 官方文档 API reference — pandas 2.2.2 documentation 2. 准备知识&#xff1a;Pandas 数据结构 Series & DataFrame 2.1 Series 2.1.1 创建 Series 类型数据 一个 Series 对象包含两部分&#xff1a;值序列、标识符序列。可通过 .values (返回 NumPy ndarry 类型…

Swift - 基础语法

文章目录 Swift - 基础语法1. 常量1.1 只能赋值1次1.2 它的值不要求在编译时期确定&#xff0c;但使用之前必须赋值1次1.3 常量、变量在初始化之前&#xff0c;都不能使用 2. 标识符3. 常用数据类型4. 字面量4.1 布尔4.2 字符串4.3 整数4.4 浮点数4.5 数组4.6 字典 5. 类型转换…

【C++】string类的增删改查模拟实现(图例超详细解析!!!)

目录 一、前言 二、string类的模拟实现 ✨前情提要 ✨Member functions —— 成员函数 ⚡构造函数 ⚡拷贝构造函数 ⚡赋值运算符重载 ⚡析构函数 ✨Element access —— 元素访问 ⚡operator[ ] ⚡Iterator —— 迭代器 ✨Capacity —— 容量 ⚡size ⚡capacity ⚡clea…

记录一个Maxwell采集MySQL数据时报安全证书时间不通过的问题

【背景描述】 我的zk&#xff0c;kafka和Maxwell都正常启动了 此时我需要用Maxwell将MySQL的一张表user_info将其全量同步到kafka当中时发生报错&#xff0c;命令如下&#xff1a; [atguiguhadoop102 datas]$ /opt/module/maxwell/bin/maxwell-bootstrap --database gmall --…

Mongodb语法使用说明(含详细示例)

点击下载《Mongodb语法使用说明&#xff08;含详细示例&#xff09;》 1. 前言 MongoDB是一款高性能、开源、面向文档的NoSQL数据库&#xff0c;它使用类似JSON的BSON格式存储数据&#xff0c;提供了灵活的数据模型和强大的查询功能。本文将详细介绍MongoDB数据库的基本增删改…

机器学习-期末复习

本文的内容按照作者的课程考试要求书写&#xff0c;仅供复习参考。&#x1f337;&#x1f337;&#x1f337;欢迎大家指正&#xff01; 机器学习是一种人工智能&#xff08;AI&#xff09;的分支领域&#xff0c;它致力于开发能够通过数据学习和改进的算法和模型。简而言之&…

深入学习Linux中的“文件系统与日志分析”

目录 1.文件系统的组成 1.1inode和block 1.2inode的内容 1.3inode的号码 ​1.4文件存储小结 ​1.5inode大小 1.6inode的特殊作用 2. 链接文件 3.文件恢复 3.1EXT类型文件恢复 3.2磁盘有空间&#xff0c;但是仍然无法写入新文件 3.3恢复XFS类型的文件 3.3.1xfsdump…

面试:JVM内存结构

一、Java代码的运行步骤 一段Java代码先会被反编译为Java字节码&#xff0c;当执行java命令时&#xff0c;JVM虚拟机会被创建出来&#xff0c;并会创建一个main主线程来执行主方法。 二、JVM的内存结构有哪些&#xff1f; 1、方法区&#xff1a;&#xff08;线程共享&#xff…

实验五 Spark SQL编程初级实践

Spark SQL编程初级实践 Spark SQL基本操作 将下列JSON格式数据复制到Linux系统中&#xff0c;并保存命名为employee.json。 { "id":1 , "name":" Ella" , "age":36 } { "id":2, "name":"Bob","a…

婴儿专用洗衣机有必要吗?四大宝藏婴儿洗衣机测评对比

对于有了宝宝的家庭来说&#xff0c;洗衣成为了一项重要的家务事。大家都知道&#xff0c;宝宝的皮肤比较娇嫩&#xff0c;容易受到各种细菌、病毒的侵扰。所以&#xff0c;宝宝的衣物应该与大人的分开洗。婴儿洗衣机作为一种专门为婴幼儿家庭设计的洗衣机&#xff0c;其具有除…

Ubuntu 20.04.6下载、安装

一、下载 下载地址&#xff1a;https://cn.ubuntu.com/download 下载版本&#xff1a;ubuntu-20.04.6-desktop-amd64.iso 二、安装 参考博客&#xff1a; https://blog.csdn.net/lhl_blog/article/details/123406322 https://www.cnblogs.com/fieldtianye/p/17879840.html…

根据当年节假日和非工作时间计算请假时间-获取每个月的节假日,计算每个月的工作日时间进度,节假日每年更新

根据需求请假时间要排除法定节假日和非工作时间 1.获取当年的节假日 节假日是每年更新的&#xff0c;没有固定接口&#xff0c;需要手动录入 个人根据官方的节假日整理了当年的所有节假日&#xff0c;可以根据个人需求进行修改 // 获取每个月的节假日&#xff0c;如果当月没…

【Qt 学习笔记】Qt常用控件 | 显示类控件 | LCD Number的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 显示类控件 | LCD Number的使用及说明 文章编号&#xf…

ELK技术介绍:背景、功能及应用场景全面解析

一、ELK概述 ELK是由Elasticsearch、Logstash和Kibana三个开源软件组成的日志管理解决方案&#xff0c;这一组合在近年来得到了广泛的关注和应用。ELK的出现&#xff0c;源于大数据和云计算技术的快速发展&#xff0c;以及对高效日志管理的迫切需求。 随着企业信息化程度…

3dmax云渲染100插件怎么安装?渲染100邀请码1a12

3dmax云渲染插件能在设计师完成参数设置后&#xff0c; 通过点击插件的方式上传到云渲染平台进行渲染&#xff0c;那么3dmax云渲染插件怎么安装呢&#xff1f;以渲染100为例&#xff0c;我们来看下。 下载工具&#xff1a;渲染100客户端 1、设计师在渲染100官网(http://www.x…