Yocto创建自己的分区(基于STM32MP1)

前几章节我们分析了machine class里面几篇关键的class,还有machine conf里面的inc文件,大致的创建分区的流程都比较清晰了,本章节动手实际操作一把,创建一个自己的分区。

一、添加分区配置

layers/meta-farsight/meta-fs-mp1/conf/machine/include/st-machine-common-stm32mp.inc下修改
下面是完整的diff文件,关键修改就是+的地方:

//配置分区的名称、镜像名、默认挂载点、分区大小等信息
STM32MP_TTFS_IMAGE ?= “st-image-ttfs”
STM32MP_TTFS_LABEL ?= “ttfs”
STM32MP_TTFS_MOUNTPOINT ?= “/mnt/tt”
TTFS_PARTITION_SIZE ?= “10240”

//使能打开该分区配置
ST_TTFS ?= “1”

//将上面的配置信息添加到全局的PARTITIONS_CONFIG变量里面
PARTITIONS_CONFIG[ttfs] ?= “${STM32MP_TTFS_IMAGE},${STM32MP_TTFS_LABEL},${STM32MP_TTFS_MOUNTPOINT},${TTFS_PARTITION_SIZE},FileSystem”

--- a/conf/machine/include/st-machine-common-stm32mp.inc
+++ b/conf/machine/include/st-machine-common-stm32mp.inc
@@ -90,6 +90,9 @@ STM32MP_USERFS_MOUNTPOINT ?= "/usr/local"
diff --git a/conf/machine/include/st-machine-common-stm32mp.inc b/conf/machine/include/st-machine-common-stm32mp.inc
index a9eec8d..f688175 100644
--- a/conf/machine/include/st-machine-common-stm32mp.inc
+++ b/conf/machine/include/st-machine-common-stm32mp.inc
@@ -90,6 +90,9 @@ STM32MP_USERFS_MOUNTPOINT ?= "/usr/local"STM32MP_VENDORFS_IMAGE ?= "st-image-vendorfs"STM32MP_VENDORFS_LABEL ?= "vendorfs"STM32MP_VENDORFS_MOUNTPOINT ?= "/vendor"
+STM32MP_TTFS_IMAGE ?= "st-image-ttfs"
+STM32MP_TTFS_LABEL ?= "ttfs"
+STM32MP_TTFS_MOUNTPOINT ?= "/mnt/tt"# Define image partition size (supposed to be set as max size in image recipe)# Proposed value for bootfs is 64MB
@@ -120,22 +123,27 @@ ROOTFS_PARTITION_SIZE ?= "${IMAGE_ROOTFS_MAXSIZE}"USERFS_PARTITION_SIZE ?= "131072"# Proposed value for vendorfs is 16MBVENDORFS_PARTITION_SIZE ?= "16384"
+# Proposed value for ttfs is 10MB
+TTFS_PARTITION_SIZE ?= "10240"# Enable use of extra partition(s)ST_BOOTFS   ?= "1"ST_VENDORFS ?= "1"ST_USERFS   ?= "1"
+ST_TTFS   ?= "1"PARTITIONS_CONFIG[ttfs]   ?= "${STM32MP_TTFS_IMAGE},${STM32MP_TTFS_LABEL},${STM32MP_TTFS_MOUNTPOINT},${TTFS_PARTITION_SIZE},FileSystem"# Partitions configurationPARTITIONS_CONFIG += "${@bb.utils.contains('ST_BOOTFS', '1', 'bootfs', '', d)}"PARTITIONS_CONFIG += "${@bb.utils.contains('ST_VENDORFS', '1', 'vendorfs', '', d)}"PARTITIONS_CONFIG += "rootfs"PARTITIONS_CONFIG += "${@bb.utils.contains('ST_USERFS', '1', 'userfs', '', d)}"
+PARTITIONS_CONFIG += "${@bb.utils.contains('ST_TTFS', '1', 'ttfs', '', d)}"PARTITIONS_CONFIG[bootfs]   ?= "${STM32MP_BOOTFS_IMAGE},${STM32MP_BOOTFS_LABEL},${STM32MP_BOOTFS_MOUNTPOINT},${BOOTFS_PARTITION_SIZE},System"PARTITIONS_CONFIG[vendorfs] ?= "${STM32MP_VENDORFS_IMAGE},${STM32MP_VENDORFS_LABEL},${STM32MP_VENDORFS_MOUNTPOINT},${VENDORFS_PARTITION_SIZE},FileSystem"PARTITIONS_CONFIG[rootfs]   ?= "${IMAGE_BASENAME},rootfs,,${ROOTFS_PARTITION_SIZE},FileSystem"PARTITIONS_CONFIG[userfs]   ?= "${STM32MP_USERFS_IMAGE},${STM32MP_USERFS_LABEL},${STM32MP_USERFS_MOUNTPOINT},${USERFS_PARTITION_SIZE},FileSystem"+PARTITIONS_CONFIG[ttfs]   ?= "${STM32MP_TTFS_IMAGE},${STM32MP_TTFS_LABEL},${STM32MP_TTFS_MOUNTPOINT},${TTFS_PARTITION_SIZE},FileSystem"

二、编写image bb文件

添加一个image 镜像文件:
layers/meta-farsight/meta-fs-mp1/recipes-st/images/st-image-ttfs.bb
实际内容如下:

SUMMARY = "STM32MP ttfs Image"
LICENSE = "MIT"include recipes-st/images/st-image-partitions.inc# Define to null ROOTFS_MAXSIZE
IMAGE_ROOTFS_MAXSIZE = ""# Add demo application described on specific packagegroup
PACKAGE_INSTALL += " \servo-ttfs \"

st-image-ttfs.b内容比较简单,其实主要的工作都在st-image-partitions.inc里面,我们在st-image-ttfs 镜像里面只安装了一个 servo-ttfs包

三、应用包recipe bb编写

servo-ttfs 实际上就是一个简单的QT demo程序,比较简单,这里就不贴源码了,只放一下bb文件的内容:

# My application of Qt5 for exampleSUMMARY = "My application of Qt5 for example"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"FILESEXTRAPATHS_prepend := "${THISDIR}/:"
SRC_DIR = "servo"
SRC_URI = "file://servo/"DEPENDS += "qtbase"PACKAGES += "${PN}-ttfs"S = "${WORKDIR}/servo"
inherit qmake5do_install() {install -d ${D}/mnt/ttinstall -m 0755 ${B}/Servo    ${D}/mnt/tt
}FILES_${PN}-ttfs = "/mnt/tt/"

这里面有几个需要注意的点:

  1. QT依赖
    因为是一个QT demo程序,编译需要依赖QT库,所以需要指定如下内容:
    inherit qmake5
    DEPENDS += “qtbase”
  2. 提供包
    我们的应用程序是作为一个package的,所以需要指定
    PACKAGES += “${PN}-ttfs”
  3. 安装
    do_install 里面会把我们编译出来的Servo应用程序安装到 KaTeX parse error: Expected group after '_' at position 19: …/mnt/tt下面 FILES_̲{PN}-ttfs = “/mnt/tt/” 则会在打包的时候把我们安装的包打进去,缺一不可
    /mnt/tt因为是我们image的默认挂载点,所以在这里安装路径也写成了这个,这样在rootfs里面会自动创建这个路径。

至此,添加分区的工作的就完成了,是不是相当简单。

编译验证

上面的工作完成以后执行我们的yocto编译:
DISTRO=openstlinux-eglfs MACHINE=fsmp1a source layers/meta-farsight/scripts/envsetup.sh
bitbake fs-mp1a-qt
少等片刻,编译完成以后我们到image产物下面看看我们的分区镜像是否生成:
可以看到生成了st-image-ttfs-openstlinux-eglfs-fsmp1a-20221203130814.ttfs.ext4 镜像
自动生成的flashlayout 刷机文件中也已经添加了我们的ttfs分区信息,在最后一行

开机验证

将上面的分区镜像和刷机脚本烧录到开发板上查看:
开机信息:

可以看到开机自动mount了我们的分区到/mnt/tt路径下面

进入系统查看,使用df -Th查看分区可以看到自动添加了一个分区/dev/mmcblk2p6,大小在8.7M,比我们设置的10M稍微小一点,可能是文件系统占用了一部分开销,挂载点也是/mnt/tt。
进入/mnt/tt可以看到里面确实有我们的QT Demo应用程序Servo。
至此,分区相关分析到此结束!

Yocto创建自己的分区(基于STM32MP1)相关推荐

  1. R语言gganimate包创建可视化gif动图、可视化动图:创建动态散点图动画基于transition_time函数、使用shadow_wake函数配置动画的渐变效果(gradual falloff)

    R语言gganimate包创建可视化gif动图.可视化动图:创建动态散点图动画基于transition_time函数.使用shadow_wake函数配置动画的渐变效果(gradual falloff) ...

  2. 里面如何创建新的module_硬盘分区:如何一次为新硬盘创建多个分区?

    心仪很久的硬盘,终于入手,到手的第一件是什么?--给它硬盘分区那么怎么使用分区助手快速的对齐分3个,4个,5个甚至更多分区呢?接下来,为你介绍快速分区神器的使用方 一.选择硬盘 打开分区助手,点击新磁 ...

  3. 服务器安装系统时无法创建新的分区,重装系统出现“我们无法创建新的分区,也找不到现有的分区”...

    今天给朋友的电脑重装系统,本来打算是使用微PE的CGI备份还原工具来给 C 盘重装一个系统,但是装完后重启无法进入系统. 不怕,以前也遇到过这种事情.根据经验我再次使用微PE,格式化 C 盘分区,找到 ...

  4. 删除Windows 7自动创建的隐藏分区

    如果你安装了Windows 7测试版,在安装完成后发现Windows 7自动划出一个隐藏的分区,大小为200MB的.又不懂该怎样删除? 其实这个隐藏分区的删除比较麻烦的,如果贸然使用DM等分区工具来删 ...

  5. maxvalue mysql自动分区_创建mysql表分区的方法

    创建 mysql 表分区的方法 我来给大家介绍一下 mysql 表分区创建与使用吧,希望对各位同学会有所帮助.表分区的测试使用,主要内容来自 于其他博客文章以及 mysql5.1 的参考手册. 表分区 ...

  6. #内存不够,swap来凑# Linux上创建SWAP文件/分区

    转自:https://www.vmvps.com/how-to-create-a-swap-file-on-the-linux-os.html 很久很久以前,电脑的内存是个珍贵东西,于是乎就有了swa ...

  7. win10安装时,提示“我们无法创建新的分区,也找不到现有分区”

    win10安装时,提示"我们无法创建新的分区,也找不到现有分区",如图所示: 解决办法: 将win10安装包(ios文件)解压,将以下文件复制到系统盘,然后重启电脑,自动进入安装过 ...

  8. 使用fdisk创建好了分区,但是在生成物理卷出现“Device /dev/sdb2 not found (or ignored by filtering).“解决方法

    使用fdisk创建好了分区,但是在生成物理卷出现"Device /dev/sdb2 not found (or ignored by filtering)."解决方法 参考文章: ...

  9. diskpart命令创建GPT磁盘分区

    利用diskpart命令创建GPT磁盘分区图文教程很多朋友都是使用工具软件完成创建GPT磁盘分区,实际上你无论你是使用光盘.U盘还是硬盘(NT6)等方式全新安装Win7或者Win8系统,都可以利用di ...

最新文章

  1. SVM支持向量机(下)
  2. linux ntfs 新建,Linux在NTFS中创建的文件的权限
  3. 前端学习(2269)vue造轮子之添加icon
  4. mysql 悲观锁 共享锁_MySQL 乐观锁 悲观锁 共享锁 排他锁
  5. 使用 Spring 简化 MyBatis
  6. linux led测试程序,Linux中加入led驱动及测试程序详解
  7. ROS入门-16.tf坐标系广播与监听的编程实现
  8. 全方位测评Hive、SparkSQL、Presto 等七个大数据查询引擎,最快的竟是……| 程序员硬核测评...
  9. 如何使用fiddler工具抓包?
  10. 双击ctrl搜索 意在颠覆用户的习惯
  11. Ubuntu录制gif图
  12. gpt和mbr用来装服务器系统,给win10分区用MBR还是GPT?详解MBR还是GPT的区别
  13. 【PM】产品需求文档PRD的一般格式
  14. Office 2010 解压后无法安装(安装程序包的语言不受系统支持)释疑
  15. 推荐几款超好用的内网穿透神器,总有一款适合你!
  16. 全国计算机程序员等级,计算机等级考试程序员级考试之四大经验
  17. 高中数学知识点;二次函数与幂函数(高考备考)
  18. 5、无线传输和卫星通信(物理层)
  19. Servlet 3 HttpServletRequest HttpServletResponse 验证码图片 form表单
  20. SQL Server无法删除数据库 xxx,因为该数据库当前正在使用(如何删除一个Sql Server数据库)

热门文章

  1. C语言与Java实现:数制转换
  2. nslookup blog.csdn.net Can't resolve blog.csdn.net
  3. Java操作wkhtmltopdf实现Html转PDF
  4. cnn是深度神经网络吗,cnn神经网络算法
  5. 读《倚天屠龙记》小感
  6. 【笔记】获取中国电信家庭宽带烽火光猫HG221GS超级管理密码的方法步骤
  7. 雾霾“倾国倾城” 谣言肆虐你中招了么?
  8. Kubernetes v1.19 正式发布
  9. JavaScript 设计模式学习第五篇-继承与原型链
  10. 湖南省计算机等级考试(二级)题库 第四部分