全部
  • 全部
  • 解决方案
  • 技术问答
  • 视频中心
  • 知识分享
  • 技术资讯
  • SEED产品
400-048-1230
订阅
  • 首页
  • 解决方案
  • 技术问答
  • 视频中心
  • 知识分享
  • 技术资讯
  • SEED产品
手把手教你玩转i.MX文件系统构建
来源:Arrow 发布:2022/03/08 浏览量:541

NXP的高端处理器i.MX系列主要是多核A核心,或者A Core + M Core的异构架构,适合需要运行Linux或者Android操作系统的工控场合。本文主要是介绍如何获取uboot,Linux源码,构建一个完整的根文件系统。

NXP的高端处理器i.MX系列主要是多核A核心,或者A Core + M Core的异构架构,适合需要运行Linux或者Android操作系统的工控场合。本文主要是介绍如何获取uboot,Linux源码,构建一个完整的根文件系统。

i.MX系列简介


i.MX6, 7, 8系统的系统源码以及根文件系统构建方式基本相同,只是构建的分支或者目标有区别,后续NXP的LS系列(该系列主要做工业物联网以及交换机产品)也会采用Yocto构建。


目前i.MX产品系列可以分为:i.MX RT,该类处理器主要是MCU,M7内核,不在今天讨论范围内;i.MX6、i.MX7、i.MX8以及还未上市的 i.MX9。

i.MX6:目前主要有A7和A9两种内核产品。A7主要是针对轻量级Linux操作系统,例如简单的工控网关、HMI;A9开始支持Android,目前主要是在汽车电子领域,做仪表显示以及工控场合的广告机等产品;
i.MX7:目前支持多核A7,以及A7+M4的异构架构,适用于有低功耗场合的应用,M核做功耗控制,A核做计算;
i.MX8:A53+A72或者A35+A72的多核架构,同时支持GPU渲染,对图形显示效果较高的车载信息娱乐系统,需要强大计算能力的边缘计算网关都可以完美支持。

功能如此强大的处理器,该如何让它跑起来呢?接下来我们通过尝试构建一个i.MX8的镜像,来熟悉i.MX产品开发的流程。

主机环境配置

Yocto工程需要Ubuntu主机具有以下环境才可以正常运行:
$ sudoapt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html \
docbook-utilspython-pysqlite2 help2man make gcc g++ desktop-file-utils \
libgl1-mesa-devlibglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc



设置repo工具


repo主要用于版本控制以及项目的包管理
curlhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod a+xrepo
sudo mvrepo /usr/bin/repo


1. 配置git全局参数
git config--global user.name "Ivy Guo"
git config--global user.email Ivy.guo@arrow.com
git config–list


2. repo同步设置
参考官方文档,默认从谷歌下载repo,一般用户无法完成repo下载,因此需要指定url源, –repo-url 为清华源。
mkdirimx-yocto-bsp
cdimx-yocto-bsp
repo init-u https://source.codeaurora.org/external/imx/imx-manifest-b imx-linux-gatesgarth -m imx-5.10.9-1.0.0.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo


显示 repo has been initialized in /home/***/imx-yocto-bsp 以后就可以准备开始同步源码。

3. 源码同步
repo sync

镜像编译


repo同步以后,在编译目录 imx-yocto-bsp文件夹下,会有如下文件结构:
imx-setup-release.sh README README-IMXBSP setup-envtronment sources


编译格式:
DISTRO= <distro name> MACHINE=<machinename> source imx-setup-release.sh –b <build dir>

针对具体的应用场景,如果需要使用LCD或者图形相关的镜像,建议编译Wayland后端,可以更好的发挥芯片性能,如果是不需要使用屏幕的应用场景,可以使用FB后端。

FB后端:
$: DISTRO=fsl-imx-fb MACHINE=<machine name> source imx-setup-release.sh -b build-fb

Wayland后端:
$: DISTRO=fsl-imx-wayland MACHINE=<machine name> source imx-setup-release.sh -bbuild-wayland


DISTRO:这个配置文件在 meta-imx/meta-sdk/conf/distro,可以自行查看源码支持的DISTRO,这里我们选择wayland fsl-imx-xwayland。

MACHINE:也就是本次源码的芯片或者NXP板卡型号,该版本源码支持的machine在conf/machine。

-b :编译的目录,最后编译文件会放在该目录下,该路径后续由源码根目录的imx-setup-release.sh的脚本创建,我们以i.MX8DX为例:
DISTRO=fsl-imx-xwaylandMACHINE=imx8qxpc0mek source imx-setup-release.sh -b bld-xwayland

编译:

bitbakefsl-image-qt5-validation-imx


当然,除了fsl-image-qt5-validation-imx镜像,Yocto还支持构建以下几种镜像:我们构建的是支持qt的镜像,以及后续编译qt5工程需要的交叉编译工具。在测试初期,客户一般需要重新构建文件系统,Yocto文件系统过于繁杂,实际上很多客户为了追求小体积的镜像,以及缩短启动时间,都需要裁减,定制自己的文件。系统部分,客户使用busybox构建的文件系统,组件以及工具过少,在这个基础上增加自己的配置就过于麻烦,这个时候可以构建core-image-minimal,在这个基础上增加的工作量会少很多。

Yocto构建,先使用do_fetch下载需要的package,然后通过do_compile去构建。因此整个构建过程需要的时间取决于构建时主机的网速以及性能。core-image-minimal有大概3000个任务去构建,fsl-image-qt5-validation-imx大约有8000个任务构建,时间在5个小时到十几个小时不等,耐心等待。


镜像部署

bitbake完成编译后,会在如下路径生成对应镜像:fsl-image-validation-imx-imx8qxpmek.sdcard.bz2

路径地址:
/imx-yocto-bsp/bld-xwayland/tmp/deploy/images/imx8qxpmek/

烧写到SD Card:
bunzip2 -dk -f fsl-image-qt5-validation-imx-imx8qxpmek.sdcard.bz2
sudo dd if= fsl-image-qt5-validation-imx-imx8qxpmek.rootfs.sdcardof=/dev/sd<partition>
bs=1M conv=fsync


partition:换成自己的SD card分区,不确认的情况,可以通过插拔SD烧写器,确认 ls /dev/sd* 增加或者减少了哪个设备来确认,防止格式化错误SD card,误擦除系统盘。将写入镜像的SD card插入开发板,设置开发板为SD card启动模式,重新上电即可;当然,如果预留usb-otg接口,可以通过下载nxp提供的uuu工具,通过uuu工具,借助USB线,完成镜像下载:Windows shell 终端输入如下:
.\uuu.exe.\imx-boot-imx8qxpc0evb-sd.bin-flash .\imx8qxpevb.rootfs.sdcard

开发板串口0开始打印如下信息,开始传输并烧写镜像:


到此,从源码获取到编译部署就完成了,是不是很简单呢?如果有兴趣就联系我们吧!

NXP
请使用浏览器分享功能 请点击右上角,进行分享