深圳分销网站设计制作广州网站排名推广
- 作者: 五速梦信息网
- 时间: 2026年04月20日 09:20
当前位置: 首页 > news >正文
深圳分销网站设计制作,广州网站排名推广,室内软装设计,免费wordpress云服务器文章目录 STM32MP257系列之定制的Yocto Machine1. TFA 定制2. OPTEE OS定制3. Uboot 定制3.1 创建 board3.2 创建 board的头文件3.3 创建 board的配置文件3.4 添加我们自己的dtb文件3.5 生成新patch打包到uboot recipe中3.6 修改yocto中的配置 4. Kernel 定制4.1 定制设备树 5.… 文章目录 STM32MP257系列之定制的Yocto Machine1. TFA 定制2. OPTEE OS定制3. Uboot 定制3.1 创建 board3.2 创建 board的头文件3.3 创建 board的配置文件3.4 添加我们自己的dtb文件3.5 生成新patch打包到uboot recipe中3.6 修改yocto中的配置 4. Kernel 定制4.1 定制设备树 5. 添加Machine5.1 添加Machine文件5.2 添加image recipe 6. 完整编译烧录验证6.1 编译6.2 烧录6.3 启动 STM32MP257系列之定制的Yocto Machine 在第一篇文章中我们使用米尔官方提供的Yocto源码编译得到了产物镜像但是是米尔自己的系统本章节将在Yocto系统中添加我们自己的Machine,因为笔者想基于STM32MP257开发一个桌面机器人所以起名叫Zero Robot, 寓意从0开始的机器人之旅。
TFA 定制 首先需要适配的就是TFA的改动在yocto工程中获得TFA的源码使用如下指令将TFA的源码添加到工作区 devtool modify tf-a-stm32mp稍等片刻我们就可以在build-openstlinuxweston-myd-ld25x/workspace/sources/tf-a-stm32mp 下面看到完整的tfa源码 然后按照如下指令添加自定义设备树 cd fdts cp myb-stm32mp257x-2GB.dts zero-robot-stm32mp257x-2GB.dts cp myb-stm32mp257x-base.dtsi zero-robot-stm32mp257x-base.dtsi cp myb-stm32mp257x-2GB-fw-config.dts zero-robot-stm32mp257x-2GB-fw-config.dts cp myb-stm32mp257x-2GB-fw-config.dtsi zero-robot-stm32mp257x-2GB-fw-config.dtsi修改zero-robot-stm32mp257x-2GB.dts中的dtsi引用名称 #include zero-robot-stm32mp257x-base.dtsi // 改这个 #include stm32mp25-lpddr4-1x16Gbits-1x32bits-1200MHz.dtsi #include stm32mp25-pinctrl.dtsi #include stm32mp25xxai-pinctrl.dtsi修改zero-robot-stm32mp257x-2GB-fw-config.dts中的dtsi引用名称 #include stm32mp25-fw-config.dtsi #include zero-robot-stm32mp257x-2GB-fw-config.dtsi //改这个完成以后使用git 添加到暂存区 git add . git commit -m tfa add zero-robot dtb最后更新改动到recipe中 devtool update-recipe tf-a-stm32mp2. OPTEE OS定制 接着适配的就是OPTEE的改动首先在yocto工程中获得optee os的源码使用如下指令将optee的源码添加到工作区 devtool modify optee-os-stm32mp稍等片刻我们就可以在build-openstlinuxweston-myd-ld25x/workspace/sources/optee-os-stm32mp 下面看到完整的optee源码 然后按照如下指令添加自定义设备树 cd core/arch/arm/dts mv myb-stm32mp257x-base.dtsi zero-robot-stm32mp257x-base.dtsi mv myb-stm32mp257x-2GB.dts zero-robot-stm32mp257x-2GB.dts修改zero-robot-stm32mp257x-2GB.dts中的dtsi引用名称 #include zero-robot-stm32mp257x-base.dtsi //主要修改这个 #include myb-stm32mp257x-rcc.dtsi #include myb-stm32mp257x-2GB-resmem.dtsi #include myb-stm32mp257x-rif.dtsi #include stm32mp25-pinctrl.dtsi #include stm32mp25xxai-pinctrl.dtsi接下来需要将我们的dts添加到flavor中,修改core/arch/arm/plat-stm32mp2/conf.mk flavor_dts_file-257F_DK stm32mp257f-dk.dts flavor_dts_file-257F_EV1 stm32mp257f-ev1.dts flavor_dts_file-257X_MYB2GB myb-stm32mp257x-2GB.dts flavor_dts_file-257X_MYB1GB myb-stm32mp257x-1GB.dts flavor_dts_file-257X_MYT2GB myt-stm32mp257x-2GB.dts flavor_dts_file-257X_MYT1GB myt-stm32mp257x-1GB.dts flavor_dts_file-257X_ZERO_ROBOT myb-stm32mp257x-2GB.dts //addflavorlist-MP25 \((flavor_dts_file-257F_DK) \\)(flavor_dts_file-257X_MYB2GB) $(flavor_dts_file-257X_MYB1GB) $(flavor_dts_file-257X_MYT2GB) $(flavor_dts_file-257X_MYT1GB) $(flavor_dts_file-257F_EV1) $(flavor_dts_file-257X_ZERO_ROBOT) //add完成以后使用git 添加到暂存区 git add . git commit -m optee adds zero-robot dtb最后更新改动到recipe中 devtool update-recipe optee-os-stm32mp3. Uboot 定制 接下来就是定制Uboot,首先在yocto工程中获得Uboot的源码使用如下指令将Uboot的源码添加到工作区 devtool modify u-boot-stm32mp稍等片刻我们就可以在build-openstlinuxweston-myd-ld25x/workspace/sources/u-boot-stm32mp 下面看到完整的Uboot源码
3.1 创建 board 我们需要根据自己的要求创建属于自己的板子配置文件首先从board文件夹下拷贝myir为zero-robot,删除6ul相关的文件夹只保留跟stm32mp25系列有关的内容 创建zero-robot 文件夹 cd build-openstlinuxweston-myd-ld25x/workspace/sources/u-boot-stm32mp/board cp -r myir zero-robot rm -rf zero-robot/mys_6ulx mv zero-robot/myd_ld25x zero-robot/zero-robot_ld25x mv zero-robot/zero-robot_ld25x/myd-ld25x.c zero-robot/zero-robot_ld25x/zero-robot-ld25x.c接下来要修改 Makefile将 myd-ld25x.o 修改为 zero-robot_ld25x.o: 然后修改Kconfig,将SYS_BOARDSYS_VENDOR和SYS_CONFIG_NAME修改为我们自己的 我们的board已经准备完毕接下来就是将我们的board添加到系统中 在 arch/arm/mach-stm32mp/Kconfig.25x 文件最后增加我们的Kconfig路径这个会影响 make menuconfig 配置 这里的改动项主要是添加了一个我们的目标配置TARGET_ZERO_ROBOT_LD25X然后将我们的board路径添加进来
3.2 创建 board的头文件 有了我们自己的board以后还得有新单板的头文件继续按照如下指令操作 cd include/configs cp myd_ld25x.h zero-robot_ld25x.h这个zero-robot_ld25x.h其实就是我们在创建board文件夹中Kconfig中 SYS_CONFIG_NAME变量指定的。 3.3 创建 board的配置文件 距离大功告成还有一步就是创建我们的配置文件实操 cd configs cp myd_ld25x_2G_defconfig zero-robot_ld25x_2G_defconfig因为我们上面添加了我们自己的target所以我们还需要将zero-robot_ld25x_2G_defconfig下面的TARGET修改为刚才添加的TARGET_ZERO_ROBOT_LD25X
3.4 添加我们自己的dtb文件 上面的步骤完成以后我们已经有了自己的单板接下来就是创建我们自己的dtb文件后面所有的定制都将基于我们自己的dts文件去修改。 米尔官方的uboot使用的dts主要有如下几部分构成 编译 MYD-LD25X 的 uboot 源码时会合并相关的所有 dts/dtsi 文件生成 uboot 阶段默认使用的 myb-stm32mp257x-2GB.dtb我们以myb-stm32mp257x-2GB.dts为基础拷贝一份出来命名为zero-robot-stm32mp257x-2GB.dts作为我们单板的默认配置设备树 cd arch/arm/dts cp myb-stm32mp257x-2GB.dts zero-robot-stm32mp257x-2GB.dts接着修改该目录下的设备树 Makefile添加zero-robot-stm32mp257x-2GB.dtb 内容如下 最后还需要修改我们上面创建的zero-robot_ld25x_2G_defconfig 配置文件中默认的设备树
3.5 生成新patch打包到uboot recipe中 至此uboot部分的定制完成我们需要使用如下命令将改动同步会yocto源码中: devtool update-recipe u-boot-stm32mp3.6 修改yocto中的配置 uboot代码修改完毕以后还需要修改yocto layer里面的相关配置 修改默认的defconfig 最后修改yocto uboot recipe中meta-myir/meta-myir-stm32mp/recipes-bsp/u-boot/u-boot-stm32mp-config.inc的内容修改default_stm32mp25 的默认目标为我们的配置 UBOOT_CONFIG[default_stm32mp25] ? zero-robot_ld25x_2G_defconfig,,u-boot.dtb添加我们的设备树到系统中 这部分需要修改我们自己的Machine文件在第4章节添加Machine中补充。 添加完成以后可以使用bitbake u-boot-stm32mp 编译uboot,然后使用 bitbake u-boot-stm32mp -e | grep ^D 查看编译产物的路径 里面确实生成了我们的u-boot-zero-robot-stm32mp257x-2GB.dtbKernel 定制 4.1 定制设备树 内核定制主要就是添加我们自定义的设备树首先生成工作区获取kernel源码 devtool modify linux-stm32mp生成的kernel源码路径在build-openstlinuxweston-myd-ld25x/workspace/sources/linux-stm32mp 路径。 米尔的设备树文件位于 arch/arm64/boot/dts/myir/ 路径下 cd ./arch/arm64/boot/dts/myir/ cp myb-stm32mp257x-2GB.dts zero-robot-stm32mp257x-2GB.dts cp myb-stm32mp257x-base.dtsi zero-robot-stm32mp257x-base.dtsi然后修改zero-robot-stm32mp257x-2GB.dts里面的部分内容 /dts-v1/;#define LVDS_7INCH_PANEL 1 #define ETH_SWITCH_ENABLE 0#include zero-robot-stm32mp257x-base.dtsi //修改为我们的dtsi引用 #include myb-stm32mp257x-2GB-resmem.dtsi #include myb-stm32mp257x-ethswitch.dtsi/ {// model 和compatible 修改为我们的自定义内容model Zero Robot STM32MP257x Evaluation Board; compatible tao,zero-robot-stm32mp257x, st,stm32mp257f-ev1, st,stm32mp257;chosen {stdout-path serial0:115200n8;};memory80000000 {device_type memory;reg 0x0 0x80000000 0x0 0x80000000;};}; 最后需要在Makefile中添加我们的zero-robot-stm32mp257x-2GB.dtb 文件
SPDX-License-Identifier: GPL-2.0-only
dtb-$(CONFIG_ARCH_STM32) \stm32mp257f-dk.dtb \stm32mp257f-ev1.dtb \myb-stm32mp257x-1GB.dtb \myb-stm32mp257x-2GB.dtb \zero-robot-stm32mp257x-2GB.dtb \myb-stm32mp257x-1GB-ethswitch.dtb \myb-stm32mp257x-2GB-ethswitch.dtb完成以后就可以提交修改 git add . git commit -m add zero-robot-stm32mp257x-2GB.dtb in kernel然后将修改同步回recipe: devtool update-recipe linux-stm32mp5. 添加Machine 5.1 添加Machine文件 这一部我们需要添加属于我们自己的Machine了还是先以myd-ld25x.conf为蓝本操作 cd layers/meta-myir/meta-myir-stm32mp/conf/machine cp myd-ld25x.conf zero-robot.conf然后修改zero-robot.conf中的关键内容 MACHINENAMEzero-robotST_OPTEE_EXPORT_TA_REF_BOARD:stm32mp2common zero-robot-stm32mp257x-2GB.dtsKERNEL_DEVICETREE myir/myb-stm32mp257x-1GB.dtb \myir/myb-stm32mp257x-2GB.dtb \myir/zero-robot-stm32mp257x-2GB.dtb \myir/myb-stm32mp257x-2GB-ethswitch.dtb \myir/myb-stm32mp257x-1GB-ethswitch.dtb \ STM32MP_DT_FILES_EMMC myb-stm32mp257x-1GB STM32MP_DT_FILES_EMMC myb-stm32mp257x-2GB STM32MP_DT_FILES_EMMC zero-robot-stm32mp257x-2GB STM32MP_DT_FILES_SDCARD myb-stm32mp257x-1GB STM32MP_DT_FILES_SDCARD myb-stm32mp257x-2GB STM32MP_DT_FILES_SDCARD zero-robot-stm32mp257x-2GBSTM32MP_DT_FILES_EMMC stm32mp257f-ev1 STM32MP_DT_FILES_SDCARD stm32mp257f-ev1EXTERNAL_DEVICETREE_SDCARD zero-robot-stm32mp257x-2GB-ca35tdcid-ostl EXTERNAL_DEVICETREE_SDCARD zero-robot-stm32mp257x-2GB-ca35tdcid-ostl-m33-examples EXTERNAL_DEVICETREE_SDCARD myb-stm32mp257x-2GB-ca35tdcid-ostl EXTERNAL_DEVICETREE_SDCARD myb-stm32mp257x-2GB-ca35tdcid-ostl-m33-examples EXTERNAL_DEVICETREE_SDCARD stm32mp257f-ev1-ca35tdcid-ostl EXTERNAL_DEVICETREE_SDCARD stm32mp257f-ev1-ca35tdcid-ostl-m33-examplesEXTERNAL_DEVICETREE_EMMC zero-robot-stm32mp257x-2GB-ca35tdcid-ostl EXTERNAL_DEVICETREE_EMMC zero-robot-stm32mp257x-2GB-ca35tdcid-ostl-m33-examples EXTERNAL_DEVICETREE_EMMC myb-stm32mp257x-2GB-ca35tdcid-ostl EXTERNAL_DEVICETREE_EMMC myb-stm32mp257x-2GB-ca35tdcid-ostl-m33-examples EXTERNAL_DEVICETREE_EMMC stm32mp257f-ev1-ca35tdcid-ostl EXTERNAL_DEVICETREE_EMMC stm32mp257f-ev1-ca35tdcid-ostl-m33-examples 5.2 添加image recipe 有了machine的配置文件再创建一个属于我们的image cd layers/meta-myir/meta-myir-openstlinux/recipes-st/images cp myir-image-core.bb zero-robot-image-core.bb cp myir-image-full.bb zero-robot-image-full.bb大功告成下面就是我们的编译和验证之旅啦
完整编译烧录验证 6.1 编译 编译整体image: DISTROopenstlinux-weston MACHINEzero-robot source layers/meta-myir/scripts/envsetup.sh bitbake zero-robot-image-core然后就是漫长的等待注意这里可以修改build-openstlinuxweston-zero-robot/conf/local.conf里面的 DL_DIR 变量指向上一次你下载的downloads文件夹的路径避免重复下载组件占用磁盘空间和编译耗时 DL_DIR ? ${TOPDIR}/../../downloads终于编译成功可以在build-openstlinuxweston-zero-robot/tmp-glibc/deploy/images/zero-robot 下面看到所有的编译产物并且也生成了flashlayout_zero-robot-image-core/optee/FlashLayout_emmc_zero-robot-stm32mp257x-2GB-optee.tsv文件
6.2 烧录 接下来就是使用烧录工具将image烧录到emmc里拉首先将开发板上的启动选择拨码开关设置到0000然后USB OTG口连接到电脑上位机软件选择配置如下 点击Download开始烧录,等待片刻即可烧录完成再将板子的拨码开关调整为0100启动。 6.3 启动
- 上一篇: 深圳分销网站设计费用国外网站专题红黄
- 下一篇: 深圳福田区区住房和建设局网站美食网页
相关文章
-
深圳分销网站设计费用国外网站专题红黄
深圳分销网站设计费用国外网站专题红黄
- 技术栈
- 2026年04月20日
-
深圳非凡网站建设公司学编程先学什么
深圳非凡网站建设公司学编程先学什么
- 技术栈
- 2026年04月20日
-
深圳方维网站建设视频库网站建设
深圳方维网站建设视频库网站建设
- 技术栈
- 2026年04月20日
-
深圳福田区区住房和建设局网站美食网页
深圳福田区区住房和建设局网站美食网页
- 技术栈
- 2026年04月20日
-
深圳福田网站建设怎样做网络推广佳选豪升网络好
深圳福田网站建设怎样做网络推广佳选豪升网络好
- 技术栈
- 2026年04月20日
-
深圳高端网站制作价格做网站用什么语言快
深圳高端网站制作价格做网站用什么语言快
- 技术栈
- 2026年04月20日
