【ATU Book - i.MX8系列 - OS】NXP i.MX Linux Desktop (Ubuntu) BSP 开发环境架设

一、概述

谈论嵌入式系统的开发环境,不得不提起近年来相当实用的 Yocto 建构工具。此工具拥有极为灵活的平台扩展性,广泛的软体套件与社群支持、多平台支援整合性,能够满足开发者特定需求和多种热门的嵌入式系统架设,已成为当今顶尖的架构工具。然而,此篇文章并非重点谈论 Yocto 建构概念与相关议题,而是要带领读者快速应用 Yocto 的 Bitbake 开源工具来快速布署恩智浦 NXP i.MX8 系列的开发环境,透过此博文即可轻松实现任何有关 i.MX8 的环境架设 !!

原文:NXP i.MX Linux Desktop (Ubuntu) BSP 开发环境架设



 

由于 NXP 提供的 Linux Desktop 仍处于开发阶段,部分功能有可能并非完善 ! 然而,比较遗憾的事,原厂尚未正式发布相关该 OS 的相关讯息,故没有提供相对应的 DEMO Image。同时,原厂仍有提供相关的开发手法,能让用户提前体验 Linux Desktop 的魅力 !! 读者仅需要依照本文章的步骤,一步一脚印来产生映像档,即可轻松实现 ! 倘若读者想要更快速进入到 NXP 平台的 Linux Desktop 实作中,亦可主动联络我们给予协助。 此外,下列提供一份以 NXP I.MX 8M Plus 作为验证平台的清单,该清单列举出 Linux Desktop 目前 BSP L6.1.36 可使用的韧体套件,如 G2D / ISP / NPU / VPU / DSP 等等,至于 GStreamer 仍有需技术突破,敬请期待 !

二、快速环境架设

1.  Yocto BSP 必要软体安装

(1) 更新套件 : 

$ sudo apt-get upgrade


(2) 安装必要套件 :

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm curl repo zstd liblz4-tool


(3) 设定 Git 帐号 :

$ git config --global user.name "user name"
$ git config --global user.email "user.name@wpi-group.com"

绿色字体须自行更新为相应的字串,例如 : user name 须改为 weilly.li


(4) 设置 repo环境 :

$ cd ~
$ mkdir ~/bin
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~ /bin/repo
$ export PATH=~/bin:$PATH

 
 

2.  Yocto BSP 编译开发环境

本篇将使用 最新版本 与 NXP i.MX 8M Plus 平台来演示如何‘架设 Yocto BSP 环境’。 读者仅需要准备一台电脑以及容量保留 500GB以上的 Ubuntu OS 20.02 系统,并跟着下列步骤,即可轻松架设编译环境以及产生映像档(Image)

(1)  建立资料夹,并移动至该资料夹中 :

$ mkdir <Yocto Project>
$ cd <Yocto Project>


(2)   repo 套件下载与同步指定 BSP 版本之存储库 :

$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-mickledore -m imx-6.1.36-2.1.0_desktop.xml
$ repo sync

其他版本请查阅 ‘ 附件 - 各版本对应的 repo 指令’


(3)  BSP 环境设定 :

$ EULA=1 MACHINE=imx8mpevk DISTRO=imx-desktop-xwayland
$ source ./imx-setup-desktop.sh -b buildxwayland

其他平台设置方式 :

由于网站编辑表格不易,故以图片取代 ! 若想复制请点选此连结

详细资讯,请参考来源出处IMX_YOCTO_PROJECT_USERS_GUIDE 之1 章节 (+)

(4)  BSP 编译 :

$ bitbake imx-image-desktop

(5)  附件 - 各版本对应的 repo 指令

由于网站编辑表格不易,故以图片取代 ! 若想复制请点选此连结

 
 

3.  Yocto BSP 烧录方式

烧录映像档(Image) 至 NXP 嵌入式的平台方法有很多种,建议主要有三种方式,分别为 Linux 指令烧录方式、UUU 烧录软体、第三方烧录软体。顺带一提,目前 NXP 所采用的映像档格式为 wic 档案,请至开发环境中的 <YOCTO>/tmp/deploy/images/imx8mpevk  查看是否有 .wic 或 .wic.zst 档案 ! 此范例以 SD Card 作为储存装置的烧录方式为主,若欲了解其他储存装置,请参考 UUU 的操作方式。


烧录前,请确认 Boot Switch 开关拨片位置是否正确。如下图,若欲使用eMMC 方式开机则须设置至 0010 ,反之 SD Card 方式开机则须设定至 0011。

(1) Linux 指令

●  请将 SD Card 连接至 PC 端 (Linux 环境),并确认所在的路径位置

 $ ls /dev/sd*

● 烧录 Image 档至 SD Card 中 :

$ export DEVSD=/dev/sdb 
$ cd  <Yocto Project>/buildxwayland/tmp/deploy/images/imx8mpevk
$ bunzip2 -dk -f imx-image-full-imx8mpevk -*.rootfs.wic.zst 
$ sudo dd if=imx-image-full-imx8mpevk -*.rootfs.wic of=${DEVSD} bs=1M && sync



(2) UUU 烧录软体

● 请开启 PowerShell 输入下列指令,将相关档案移动至资料夹中。

$ mkdir <Windows Folder>
$ cd < Windows Folder>
$ scp -P 10001 -r weilly@10.20.7.3: <Yocto Project> /tmp/deploy/images/<platform>/*-desktop.wic.zst  .
$ scp -P 10001 -r weilly@10.20.7.3: <Yocto Project> /tmp/deploy/images/<platform>/imx-boot-*.bin-flash_evk  .

若无此档案,请至官方网站下载 Demo Image

● 请先至 NXP github 下载最新的 UUU 1.5.141.exe 工具,并移动至映像档资料夹中。

Releases · nxp-imx/mfgtools · GitHub

● 请将 Boot Switch 切换至 Serial Download 模式,并以 USB Type-C 将 EVK 与 PC 端连结后。即可开启电源,输入下列指令确认是否有顺利连接至 PC 端

 .\uuu.exe -lsusb

连结成功 :

Connected Known USB Devucs


Path Chip Pro Vid Pid BdVersion
==============================================
1:18 FB: 0x1FC9 0x0152 0x0223

● 烧录 Image 档至 SD Card 中 :

$ .\uuu.exe -b sd_all <imx-boot-imx8mpevk-sd.bin-flash_evk> <imx-image-desktop-imx8mpevk-desktop-*.wic.zst>

烧录完成后,请将 Boot Switch 切换至 SD Card 模式
透过此方式亦可烧录至 emmc , qspi , spl 等储存空间,更多细节可以参考 【ATU Book-i.MX8系列】 UUU(Universal Update Utility)


(3) 第三方烧录软体

● 下载 Rufs 烧录软体

● 点进“选择”后,选取“所有档案”选择 wic 档案 ! 即可按下“执行”!

 4.  运行 Linux Desktop

依上述步骤,就是制作完成一张专属于 i.MX8M Plus Linux Desktop 之 SD Card 。
最后仅需要将 SD Card 、萤幕与 HDMI 连接至开发板,并开启电源后,等待数秒后,即可看到以下画面 !  

顺带一提,将 Micro USB 传输线连接至开发板后,并搭配 Putty 或 Telent 等虚拟化终端机软体,即可进入到 EVK 的系统中进行操作。

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 6.1.36+g04b05c5527e9 aarch64)* Documentation:  https://help.ubuntu.com* Management:     https://landscape.canonical.com* Support:        https://ubuntu.com/advantageThis system has been minimized by removing packages and content that are
not required on a system that users do not log into.To restore this content, you can run the 'unminimize' command.The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.user@imx8mpevk:~$

三、Release Note of Newest (出处)

BSP – L6.1.36_2.2.0

●  Linux Kernel 更新至 6.1.36 版本 

●  Linux Kernel 更新至 6.1.36 版本

●  Linux Uboot 更新至 v2023.04 版本

●  EULA 使用者授权协议更新至 v48 版本

●  GGC toolchain 支援至 12.3 版本

●  Cortex-M 韧体更新

●  i.MX 8ULP
●  i.MX 8M Nano
●  i.MX 8M Mini
●  i.MX 8M Plus

●  Security 安全性

●  OP-TEE 更新至 3.21.0 版本
●  修复 Arm Trusted Firmware 潜在漏洞

●  Multimedia多媒体应用

●  Gstreamer 更新至 1.22.0 版本
●  Gstreamer支援 Hantro VPU V4L2 codec 界面 (预设)
●  Sound Open Firmware 更新至 v2.6.0 版本
●  A/V 播放预设变更为 playbin3

●  Graphis 图形

●  GPU driver 更新至 6.4.11.p2.0 版本
●  GPU SDK 更新至 6.1.1
●  Chromium 更新至 101.0.4951.54

●  Machine Learning 机器学习

●  OpenCV 更新至 4.7.0
●  Tensorflow-lite 更新至 2.11.1
●  ONNX 更新至 1.13.1.
●  Arm NN 已弃用

●  Ethernet 乙太网路

●  DPDK Driver支援 i.MX8M Mini 与 i.MX8M Plus 平台
●  DPDK 支援 L2FWD 与 L3FWD 应用

●  Arm SystemReady-IR 认证

●  i.MX 8M Mini EVK 已通过认证
●  i.MX 8M Plus EVK 已通过认证
●  i.MX 8M Quad EVK 已通过认证
●  i.MX 8M Nano EVK 已通过认证

●  Platform 平台

●  i.MX 8M Plus

●  ISP 更新至 4.2.2.23.0

●  I.MX 8ULP

●  量产阶段 (GA Quality)

●  i.M93

●  11x11 的封装,且处于量产阶段 (GA Quality)
●  9x9 的封装,且处于量产阶段 (GA Quality)

●  i.M91

●  11x11 的封装,且处于量产阶段 (GA Quality)
●  9x9 的封装,且处于量产阶段 (GA Quality)

●  i.MX 8QuadXPlus B0 MEK 已不支援 Support 与发行新的 BSP 版本
●  i.MX 8DualX MEK 已不支援 Support 与发行新的 BSP 版本
●  i.MX 8DXL A1 DDR3L EVK 已不支援 Support 与发行新的 BSP 版本
●  i.MX 6QuadPlus SABRE-AI 已不支援 Support 与发行新的 BSP 版本
●  i.MX 6Quad/Dual SABRE-AI 已不支援 Support 与发行新的 BSP 版本
●  i.MX 6DualLite SABRE-AI 已不支援 Support 与发行新的 BSP 版本

四、参考文件

[1] i.MX 8 Series Applications Processors Multicore Arm® Cortex® Processors

[2] NXP Document - i.MX Yocto Project User's Guide.pdf

[3] Welcome to the Yocto Project Documentation

[4] NXP Document - i.MX Linux Release Note

如有任何相关 OS 技术问题,欢迎至博文底下留言提问 !!
接下来还会分享更多 OS 的技术文章 !!敬请期待 ATU Book-i.MX8系列 - OS !!

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

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

相关文章

实战篇:GY-906红外测温模块 + 万年历(定时器计数中断版本) -STM32篇

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

第10章 启动过程组 (制定项目章程)

第10章 启动过程组 9.1制定项目章程&#xff0c;在第三版教材第356~360页&#xff1b; 文字图片音频方式 视频12 第一个知识点&#xff1a;主要输出 1、项目章程&#xff08;重要知识点&#xff09; 项目目的 为了稳定与发展公司的客户群(抽象&#xff0c;非具体) 可测量的项目…

探索Agent AI智能体的未来

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;Agent AI智能体正成为一种改变世界的新力量。这些智能体不仅在当前的技术领域中发挥着重要作用&#xff0c;而且在未来将以更深远的影响改变我们的生活、工作和社会结构。本文将探讨Agent AI智能体的现状、潜…

微信小程序-伪类选择器

一.伪类选择器 结构伪类常见书写方式&#xff1a; 第一类&#xff1a;找第几个孩子 1. :first-child 找第一个孩子2. :last-child 找最后一个孩子3. :nth-child()&#xff0c;正着找数字&#xff1a;写数字几就是找第几个孩子&#xff0c;2n或者even:找偶数2n1或者o…

“论微服务架构及其应用”写作框架,软考高级,系统架构设计师

论文真题 论微服务架构及其应用近年来&#xff0c;随着互联网行业的迅猛发展&#xff0c;公司或组织业务的不断扩张&#xff0c;需求的快速变化以及用户量的不断增加&#xff0c;传统的单块&#xff08;Monolithic&#xff09;软件架构面临着越来越多的挑战&#xff0c;已逐渐…

一个关于空格的Sql Server面试题

引子 先上题目&#xff1a; 回答下面sql 的输出结果 declare s1 varchar(10) declare s2 varchar(10) set s1a b set s2a b if s1s2 select true 答案是 true 那么上面的 s1 和 s2 是否相等的呢&#xff1f; 我们再看看下面的sql declare s1 varchar(10) declare s2 …

【建议收藏】Android中高级大厂面试源码秘籍,为你备战2021金三银四,直通大厂

首先来说下为什么要读源码&#xff0c;有学习源码的必要吗&#xff1f; 为什么要阅读源码&#xff1f; 关于为什么阅读和学习源码&#xff0c;我个人认为可能有以下几点&#xff1a; &#xff08;一&#xff09;吊打面试官&#xff0c;应对面试 为了找到更好的工作&#xff…

异地局域网纯软件组网如何设置?

在现代社会中&#xff0c;随着企业的不断扩张和分布&#xff0c;异地办公成为一种常见的工作模式。随之而来的是&#xff0c;如何实现异地局域网的组网设置成为了一个挑战。在这种情况下&#xff0c;采用纯软件组网方案是一种有效的解决方案。本文将介绍异地局域网纯软件组网设…

双非本,3年时间从外包到阿里P6(Android岗),看我是怎么逆袭成功的?

而在小公司&#xff0c;因为我也在小公司呆过&#xff0c;所以我有最直接的感受。整个部门技术人员没几个&#xff0c;我又大学刚毕业&#xff0c;带我的人&#xff0c;问啥啥不会&#xff0c;只有一个大佬&#xff0c;跳槽来的&#xff0c;是我们技术总监&#xff0c;有问题谁…

python数据分析案例-信用卡违约预测分析

一、研究背景和意义 信用卡已经成为现代社会中人们日常生活中不可或缺的支付工具&#xff0c;它不仅为消费者提供了便利&#xff0c;还为商家提供了更广泛的销售渠道。然而&#xff0c;随着信用卡的普及和使用量的增加&#xff0c;信用卡违约问题逐渐成为金融机构面临的重要挑…

摄像头画面显示于unity场景

&#x1f43e; 个人主页 &#x1f43e; &#x1faa7;阿松爱睡觉&#xff0c;横竖醒不来 &#x1f3c5;你可以不屠龙&#xff0c;但不能不磨剑&#x1f5e1; 目录 一、前言二、UI画面三、显示于场景四、结语 一、前言 由于标题限制&#xff0c;这篇文章主要是讲在unity中调用摄…

深入讲解C++基础知识(一)

目录 一、基本内置类型1. 类型的作用2. 分类3. 整型3.1 内存描述及查询3.2 布尔类型 —— bool3.3 字符类型 —— char3.4 其他整型 4. 有符号类型和无符号类型5. 浮点型6. 如何选择类型7. 类型转换7.1 自动类型转换7.2 强制类型转换7.3 类型转换总结 8. 类型溢出8.1 注意事项 …

机器学习好神奇,来看看Lasso的超参数调整与模型选择

目录 一、什么是机器学习&#xff1f;二、稀疏建模介绍三、Lasso回归简介四、Lasso超参数调整与模型选择 一、什么是机器学习&#xff1f; 机器学习是一种人工智能技术&#xff0c;它使计算机系统能够从数据中学习并做出预测或决策&#xff0c;而无需明确编程。它涉及到使用算…

Android面试题之动画+事件处理篇

1、Android 中的动画有哪几类 帧动画、补间动画、属性动画 2、动画能组合在一起使用么&#xff1f; 可以将动画组合在一起使用AnimatorSet&#xff0c; AnimatorSet.play() 播放当前动画的同时可以 .with() &#xff1a;将现有动画和传入的动画同时执行 .after() &#xff1a…

通过开放解析智能分块提高 RAG 性能

如果要使用大型语言模型 &#xff08;&#xff09;LLMs 实现生成式 AI 解决方案&#xff0c;则应考虑使用检索增强生成 &#xff08;RAG&#xff09; 的策略来生成上下文感知提示LLM。在启用 LLM RAG 的预生产管道中发生的一个重要过程是删除文档文本&#xff0c;以便仅将文档中…

[数据集][目标检测]药片药丸检测数据集VOC+YOLO格式152张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;152 标注数量(xml文件个数)&#xff1a;152 标注数量(txt文件个数)&#xff1a;152 标注类别…

听说你还不会用Dagger2?Dagger2 For Android最佳实践教程

Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG,chef.cook()); } } 可以看到&#xff0c;在使用Dagger2的时候&#xff0c;使用者的代码会变得非常简洁。但是&#…

如何用好swoole/webman/workerman/hyperf呢

Webman框架的依赖 "require": { "php": ">7.2", "workerman/webman-framework": "^1.5.0",// "monolog/monolog": "^2.0" }, 依赖的核心框架也是很久的了 webman-framework的核心依赖 &q…

分布式架构的优势与实现

目录 前言1. 什么是分布式架构1.1 分布式架构的定义1.2 分布式架构的基本原理 2. 分布式架构的优势2.1 可扩展性2.2 容错性和高可用性2.3 性能优化2.4 灵活性和可维护性 3. 分布式架构的实现方法3.1 服务拆分3.1.1 功能拆分3.1.2 垂直拆分3.1.3 水平拆分 3.2 数据分布与存储3.2…