首页 > 其他分享 >RV1126 分区教程

RV1126 分区教程

时间:2023-12-22 10:15:29浏览次数:28  
标签:文件 教程 img 分区 RV1126 烧写 挂载 打包

一、前言

期初我是想弄一个分区存放自己的 APP 程序,如果需要更改应用的时候,只需要烧写独立的分区即可,就不需要重新烧写 rootfs。这是一个简单的操作,为啥还需要记录了,因为我在里面遇到了一些坑,思路走错了,便折腾了几天。为啥会有这样的需求了,一是为了管理方便,二是将应用程序给新手的时候,他们不一定能将应用程序拷贝到开发板中。下面是我使用的一些环境

开发板:RV1126
内核版本:4.19.111
启动方式:快速启动

二、分区实现

  1. 原理
    仔细研究过的朋友便能发现,在 SDK 中是没有分区操作的,其原理并不是编译的时候将 rootfs 分成了多个块,而是在烧写的时候,烧写工具根据分区信息分成多个引导块,如下图所示:

    在这里做一个简单的测试便知道,我们只需要将 demo 分区的大小更改一下,重新烧写验证即可,怎么更改接着往下看

  2. 分区规则
    这里主要是关注 “CMDLINE: mtdparts=rk29xxnand:” 之后的内容,至于 “CMDLINE: mtdparts=rk29xxnand:” 为啥不介绍了,因为我也不知道,我们就当是一个规则约束吧,不然会崩溃的,扯远了。
    在接着看冒号后面的内容是有规律的,可以知道用逗号隔开后对应的是一个分区。仔细看一下,便知道规则是“分区大小@起始地址”,并且下一个分区的起始地址是上一个分区的结束地址。

  3. 结论
    到此相信相信小伙伴都会对 RV1126 进行分区操作了,在来整理一下步奏,如下所示:

    • 首先,需要更改烧写时的 parameter.txt 分区文件,可以对其进行增删改查

    • 其次,我们需要制作自己的分区,并烧写到对应的其实地址即可,分区的制作就比较简单了,不知道的可以参考我之前的笔记linux下制作img文件,制作好 img 文件后,烧写即可,;烧写规则如下图所示:

    • 最后,对分区进行挂载,挂载分区就比较简单了,可以在开机脚本中使用 mount 命令进行挂载,也可以在 “ etc/fstab” 文件中添加对应的挂载信息即可。

  4. 注意事项

    • 上面降到分区的规则是 “分区大小@起始地址” ,但是会在以为文件中看到 “-@起始地址” 这样的形式,其作用是自动获取剩余的空间,都是在最后一个分区中出现,如下图所示:

      注意: 再次注意,细心的小伙伴会发现,在分区名后面多了一个 “:grow” ,没错当你使用 - 表示获取剩余空间的时候,必须要在分区名的后面加上 “:grow” ,否则你开机后,变回发现挂载点不存在。

    • 看到这里,有的小伙伴就会好奇,怎么才能查看对应的挂载点,这里有两个办法,首先可是使用 lsblk 命令进行查看,但是 lsblk 命令可能在 RV1126 不存在,那还有一个方法,使用 cat /sys/class/block/xxx/uevent 查看对应的挂载点是那个,如下图所示:

到此,分区的操作就算完成了,但是笔记到这里还没结束。上面的操作显然是没问题的,这样介绍的目的是让各位小伙伴深刻理解分区的操作,不然换一个板子就不会了。后面将继续介绍怎么使用 SDK 完成分区的操作。

三、分区脚本

分区脚本在 “sdk/device/rockchip/rv1126_rv1109” 目录下,具体是那个文件,可以看板级配置文件,这里就不介绍,不明白的小伙伴,可以看我之前的笔记RV1126 快速启动

在次打开对应的分区文件,便会发现,这个分区脚本和烧写时的分区文件是一样的,没错烧写文件中的 parameter.txt 文件就从这里直接拷贝过去的,只是名称不一样而已。脚本内容如下图所示:

四、img 打包

  1. 打包脚本 mk-image.sh
    在 SDK 中,提供了一个脚本可以直接将对应的文件打包成 img 文件。在 SDK 简单找了一下,对应的打包文件是 “sdk/device/rockchip/common/mk-image.sh”,使用规则就很简单了,接着往下看。

  2. 使用规则

    mk-image.sh <src_dir> <target_image> <fs_type> [size]
    
    • src_dir:是需要打包的文件路径及名称,如“/home/demo”
    • target_image:是需要打包成的文件路径及名称,如:“/home/demo.img”
    • fs_type:文件类型,如ext2、ext2、ext4
    • size:文件大小,可以省略
      注意: 如果路径错误便会提示 “mk-image.sh <src_dir> <target_image> <fs_type> [size]”,所以有的小伙伴会发现编译的时候会提示这个错误,多数是因为路径不存在导致的
  3. 添加到 img 打包脚本中
    在之前的比中介绍到,SDK 中的 img 打包脚本是 “mkfirmware.sh”,在 “sdk/device/rockchip/common” 目录下,具体怎么添加,在 4.2 中已经介绍了,这里就不过多讲解了。

五、启动挂载

上面已经完成了分区和 img 文件的打包,但是这两个步奏完成后,烧写到开发板中是不具备文自动挂载的,每次都需要手动挂载。一开始我们已经介绍到了自动挂载的方式,所以只需要在打包之前更改对应的脚本文件即可。

不论是更改 “etc/fstab” 文件还是对应的启动脚本,操作方式都是一样的,只需要将文件放到对的目录下,每次编译的时候会自动将其打包到 rootfs 中,不了解的下伙伴可以看我之间的笔记【Buildroot】工具包使用

到此,我们的真个分区操作算便完成了,有写的不好的地方望各位指出,我会积极改进。

参考资料

rv1126 扩展rootfs分区以及增加分区:https://www.ebaina.com/articles/140000016845

标签:文件,教程,img,分区,RV1126,烧写,挂载,打包
From: https://www.cnblogs.com/jzcn/p/17920494.html

相关文章

  • TVBOX下载配置及本地包使用教程
    本文以电视上使用为准。【TVBOX软件下载】https://qiqi2020.lanzouq.com/b09svqv1cTVBOX有各种改版,这里推荐下载影视仓_5.0.13.apk,因为它支持“多仓”:【软件安装】打开电视上的“当贝助手”,用它来上传软件安装包,其它可以传文件到电视的软件也可以。选择文件快传:电脑浏览器打......
  • 无涯教程-Haskell - Monads
    Monads只是一种带有某些附加函数的ApplicativeFunctor,它是一个Type类,它管理称为monadic规则的三个基本规则。所有这三个规则严格适用于Monad声明,如下所示-classMonadmwherereturn::a->ma(>>=)::ma->(a->mb)->mb(>>)::ma->mb->mb......
  • Python Selenium WebDriver 使用教程
    ​ 1、安装Selenium使用SeleniumWebDriver需要先安装需要安装Selenium库,安装使用的pip在命令如下,pipinstallselenium2、安装浏览器驱动程序SeleniumWebDriver需要特定浏览器的驱动程序,使用的浏览器来下载相应的驱动程序,以便后续在代码中引用。下载地址:ChromeWebDri......
  • 无涯教程-Haskell - 输入&输出
    到目前为止,我们讨论的所有示例本质上都是静态的,在本章中,我们将学习与用户动态交流,我们将学习Haskell中使用的不同输入和输出技术。文件和流到目前为止,我们已经对程序本身中的所有输入进行了硬编码,我们一直在从静态变量获取输入,现在,让我们学习如何从外部文件读取和写入。让我们......
  • Microsoft Visio 2021专业版安装包软件下载安装教程
    Microsoftvisio2021,简称visio2021。这是一款专业的专业矢量绘图软件。visio2021不但新增了许许多多的功能,而且还优化了众多的界面性能,其一系列的改动就是为了给予用户们最直观、最便利的操作感体验。同时呢,软件的操作也是相当的简单,只要用户熟悉软件上方中的菜单栏,其菜单栏与大家......
  • 无涯教程-Haskell - 函数组合
    功能组合是将一个功能的输出用作另一个功能的输入的过程,如果我们学习组成背后的数学会更好,在数学中,组成由f{g(x)}表示,其中g()是一个函数,其输出用作输入另一个功能,即f()。看下面的示例代码。在这里,我们使用函数组合来计算输入数字是偶数还是奇数。eveno::Int->Boolnoto......
  • 无涯教程-Haskell - 运算符
    在本章中,我们将了解Haskell中使用的不同运算符,在接下来的章节中,我们将学习更多有关不同运算符及其用法的信息。 +加法顾名思义,加法(+)运算符用于加法函数。main=doletvar1=2letvar2=3putStrLn"Theadditionofthetwonumbersis:"print(var1+var......
  • 无涯教程-Haskell - 类型类
    Haskell是一种函数语言,它是严格类型化的,这意味着编译器将在编译时知道整个应用程序中使用的数据类型。Int整数类型Int是代表Integer类型数据的类型类,2147483647到-2147483647范围内的每个整数都属于Int类型类。fType::Int->Int->IntfTypexy=x*x+y*ymain=print(fT......
  • 基于rv1126 rkmeida 一路多出 原理
    基于rv1126rkmeida一路多出的坑首先说要的是介绍一下rkmedia相关内容​ RKMedia提供了一种媒体处理方案,可支持应用软件快速开发。RKMedia在各模块基础API上做进一步封装,简化了应用开发难度。该平台支持以下功能:VI(输入视频捕获)、VENC(H.265/H.264/JPEG/MJPEG编码)、VDEC(H.2......
  • 软件测试/测试开发|Ubuntu系统入门教程
    前言上文我们介绍了Ubuntu系统的安装,还没有介绍Ubuntu系统的使用,对于习惯了使用Windows系统的我们来说,Ubuntu和Windows还是有着比较大的区别的,本文就来介绍一下Ubuntu系统的入门使用。Windows和Linux文件系统区别我们都知道,Windows操作系统的文件管理是分盘的,我们有C盘,D盘......