基于imx8m plus开发板全体系开发教程3:Ubuntu 20.04 编译

news2024/11/15 11:50:39

前言:

i.MX8M Plus 开发板是一款拥有 4 个 Cortex-A53 核心,运行频率 1.8GHz;1 个 Cortex-M7 核心,运行频率 800MHz;此外还集成了一个 2.3 TOPS 的 NPU,大大加速机器学习推理。

全文所使用的开发平台均为与NXP官方合作的FS-IMX8MPCA开发板(华清远见imx8mp开发板),支持Weston、ubuntu20.04、Android11 等操作系统;同时支持 Xenomai 硬实时内核、EtherCAT 总线、TSN 时间敏感网络、ROS1.0、ROS2.0 等工业与机器人领域应用;可以用于工业互联网、人工智能、边缘计算、多屏异显等应用方向。华清远见研发中心编写了大量开发教程并录制了丰富视频教学资源免费提供给大家!

开发板更多资料可在评论区下方留言索取~~ ~~ ~~

Ubuntu 20.04 编译

本章节将介绍如何对 I.MX8M Plus 开发进行第 4 章 Ubuntu 20.04 系统编译与烧录。

系统源码编译

本小节主要讲述如何使用 Yocto 构建系统编译 Ubuntu 20.04 的源码。

建立源码目录

⚫ Yocto 源码导入

首先我们在 ubuntu“家”中建立 imx8mp 文件夹,用于存放 imx8mp 源码

linux@ubuntu:$ cd ~

linux@ubuntu:$ mkdir imx8mp

下面将【华清远见-I.MX8M Plus 开发资料\程序源码\imx-linux-gatesgarth】该目录下的 imxlinux-gatesgarth.tar.xzxx 文件全部导入虚拟机中刚创建好的 imx8mp 目录下。使用如下命令解压缩

linux@ubuntu:$ cat imx-linux-gatesgarth* | tar Jxvf -

解压缩完成后会得到 imx-linux-gatesgarth 目录,该目录有如下文件。

 

该目录下的 bsp_source 目录中主要存放了,系统源码包括 tf-a、u-boot、kernel 等,后面

的 linux 系统开发部分会重点讲述。sources 文件夹下主要存放 Yocto 构建系统与 ubuntu 20.04相关的配置文件。

由于 imx-linux-gatesgarth 在编译过程中会依赖很多外部源码包,我们可以在编译过程中

通过编译程序自行下载,也可以使用我们提供好的完整依赖包。

因为依赖包较大,因此将此部分单独制作成了依赖包镜像【华清远见-I.MX8M Plus-ubuntu

依赖包】将该 ISO 文件中所有的 downloads.tar.xz*文件导入到 imx-linux-gatesgarth 源码目录下,并解压。

linux@ubuntu:$ cd ~/imx8mp/imx-linux-gatesgarth

linux@ubuntu:$ cat downloads.tar.xz* | tar Jxvf -

解压完成后会在 imx-yocto-bsp 目录下得到 downloads 目录。

 

Ubuntu 20.04 编译

开发板 ubuntu20.04 的编译环境需要在 ubuntu18.04 linux 发行版进行编译,并且编译前请- 106 -确保 ubuntu 中以安装本文档前面提到的《Yocto 开发环境搭建》开发工具。

5) 将当前工作目录切换到 imx-linux-gatesgarth 文件夹下

linux@ubuntu:$ cd ${HOME}/workdir/imx8mp/imx-linux-gatesgarth

6) 导入编译配置

linux@ubuntu:$ DISTRO=imx-desktop-xwayland MACHINE= imx8mpairobotdesktop source imxsetup-desktop.sh -b build-ai-robot-desktop

7) 如果是第一次配置,需要同意一些协议

 

之后按空格到协议最后

 

输入 y 会如下如下界面

 

8) 编译源码

编译 ubuntu 20.04 镜像

linux@ubuntu:$ bitbake imx-image-desktop

 

注意:在编译 Ubuntu 20.04 系统时确保 ubuntu 主机可以连接互联网由于涉及到的源码

较多,因此编译会比较耗时。

编译完成后所生成的镜像文件保存在 tmp/deploy/images/imx8mp-ai-robot 目录下。这里的

imx-image-desktop-imx8mp-ai-robot.wic.bz2 即为整体的烧录镜像。

Ubuntu20.04 烧录

在烧录镜像之前我们需要先按照下图连接必要的数据线:

 

 

按照上图分别连接 USB 数据线、电源线、以及调试串口(由下向上分别为 5V、M4_TX、

M4_RX、A53_TX、A53_RX、GND)。这里我们只连接 GND、A53_RX、A53_TX 三条线。

在上电之前我们还需要按住开发板上的红色烧录按钮,让开发板进入烧录模式。

 

imx8m plus ubuntu20.04 支持 emmc 启动。在进行烧录之前要确保 uuu 工具可以正常连接开发板。

将前面《ubuntu20.04 编译》小节编译生成的“ubuntu 镜像”导出到 Windows 主机中进行烧录。

如果没有编译 ubuntu20.04 可以使用我们【华清远见-I.MX8M Plus 开发资料\系统镜像

\imx8mp-ai-car-ubuntu20.04】目录下的镜像文件进行烧录。

该文件中包含启动镜像,rootfs 等镜像,我们可以通过不同的命令来烧写相关的镜像文件。

在进行烧录之前需要先打开 cmd 窗口,并且将工作命令切换到该目录下进行烧录。

⚫ eMMC 烧录

当使用 uuu 工具烧录镜像时,可以使用如下命令进行 Weston 镜像烧写。

dos@windows:$ uuu -b emmc_all .\imx-boot-imx8mp-ai-robot-sd.bin-flash_ddr4_evk .\im

x-image-desktop-imx8mp-ai-robot.wic.bz2

 

烧录成功如下图

 

​烧录完成后使开发板完全断电重启即可。ubuntu 默认账户和密码均为“user”

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

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

相关文章

websorm启动vue项目修改内容后自动运行内存溢出

手动启动vue项目正常运行,修改部分内容保存后会自动重新run一下, 这个时候就报错内存溢出,然后很悲伤的需要再手动重启一下。 (在网上查了好多方法就不单独加链接了) 前3个方法都试过对于我的项目无效,第4…

017 - C++ 中的静态(static)

本期我们将讨论 C 中的 static(静态)。 static 关键字在 C 中有两个意思,这个取决于上下文。 简单了解 第一种情况是在类或结构体外部使用 static 关键字,另一种是在类或者结构体内部使用 static。 基本上我们可以这样理解&am…

背包问题基础与应用

背包问题 理论基础 01背包 背包中的每个物品只能用一次 物品编号重量价值物品1115物品2320物品3430 定义:dp[i][j]表示从下标0-i的物品中任取,放进容量为j的背包的最大价值 初始化: dp [[0] * (bag_size 1) for _ in range(len(weigh…

Java程序内存占用优化实践

目录背景堆内存调整内存还会继续上涨减少线程数量TomcatDubboLogback野线程背景 上了微服务的当,喜欢将服务各种拆分,公有云模式下服务器比较多,还能玩得转。到了私有化部署,有的客户连个技术人员都没有,只想一键启动…

java——《面试题——基础篇》

1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 3、与平台无关性(JVM是Java跨平台使用的根本) 4、可靠安全 5、支持多线程 2、面向对象…

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp实现Mono12和Mono16位深度的图像保存(C#)

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp实现Mono12和Mono16位深度的图像保存(C#) Baumer工业相机Baumer工业相机保存位深度12/16位图像的技术背景代码案例分享1:引用合适的类文件2:BGAPI SDK在图像回调中联合O…

【GCU体验】基于PaddlePaddle + GCU跑通模型并测试GCU性能

一、环境 地址:启智社区:https://openi.pcl.ac.cn/ 二、计算卡介绍 云燧T20是基于邃思2.0芯片打造的面向数据中心的第二代人工智能训练加速卡,具有模型覆盖面广、性能强、软件生态开放等特点,可支持多种人工智能训练场景。同时具备灵活的可…

STM32理论 —— 定时器、时钟

文章目录 1. 定时器1.1 分类与简介1.1.1 分类与主要功能特点1.1.2 三种常用的定时器简介1.1.3 三种计数模式1.1.4 定时器计数原理 1.2 时钟来源1.3 通用定时器简介1.4 计数溢出时间公式1.4 定时器中断的原理1.5 输入捕获1.6 核心代码1.6.1 通用定时器初始化1.6.2 高级定时器初始…

【Python_Scrapy学习笔记(十三)】基于Scrapy框架的图片管道实现图片抓取

基于Scrapy框架的图片管道实现图片抓取 前言 本文中介绍 如何基于 Scrapy 框架的图片管道实现图片抓取,并以抓取 360 图片为例进行展示。 正文 1、Scrapy框架抓取图片原理 利用 Scrapy 框架提供的图片管道类 ImagesPipeline 抓取页面图片,在使用时需…

领域驱动设计理论实践

战略设计 战略设计是将“混沌”解构成“清晰”的过程,在该过程从开始到结束的历程之中,我们会划分出领域、界定通用语言范围、确定出系统限界上下文以及上下文之间的映射方式。 领域划分 战略设计在领域驱动设计中起着关键作用,因为其决定了…

使用Bazel构建前端Sass

注:本文假设对Bazel有一定的了解。本文基于Bazel 4.2.2 版本 在web前端领域,前端样式,web浏览器只认CSS样式语言。而CSS样式语言又过于低级。于是有人发明了更高级的语言:Sass[1],用于生成CSS代码。 这样的方案&#x…

【C++】队列模拟问题

文章目录队列模拟问题12.7.1 ATM问题12.7.2 队列类12.7.3 Queue类的接口12.7.4 **Queue类的实现**12.7.5 是否需要其他函数?12.7.6 Customer类queue.hqueue.cpp12.7.7 ATM模拟main.cpp队列模拟问题 12.7.1 ATM问题 Heather银行打算在Food Heap超市开设一个自动柜员…

【C++STL精讲】vector的基本使用与常用接口

文章目录💐专栏导读💐文章导读🌷vector是什么?🌷vector的基本使用🌷vector常用函数接口💐专栏导读 🌸作者简介:花想云,在读本科生一枚,致力于 C/C…

HAL库版FreeRTOS(上)

目录 FreeRTOS 简介初识FreeRTOS什么是FreeRTOS?为什么选择FreeRTOS?FreeRTOS 的特点商业许可 磨刀不误砍柴工查找资料FreeRTOS 官方文档Cortex-M 架构资料 FreeRTOS 源码初探FreeRTOS 源码下载FreeRTOS 文件预览 FreeRTOS 移植FreeRTOS 移植移植前准备添加FreeRTO…

浏览器断点调试说明

断点调试 断点调试面板 功能按钮介绍 描述:继续执行脚本 或者叫(逐过程执行) 快捷键 (F8)或者是(Ctrl\) 作用:打断点了的地方(比如有是三个断点地方)就会 第一…

大数据能力提升项目|学生成果展系列之四

导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的“π”型人才,由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

13.vue-cli

单页面应用程序:所有的功能只在index.html中完成 vue-cli是vue版的webpack 目录 1 安装vue-cli 2 创建项目 3 使用预设 4 删除预设 5 开启项目 6 项目文件内容 6.1 node_moduls 中是项目依赖的库 6.2 public 6.2.1 favicon.ico 是浏览器页签内部…

尚融宝——整合OpenFeign与Sentinel实现兜底方法——验证手机号码是否注册功能

一、整合过程 在项目添加依赖&#xff1a;添加位置 <!--服务调用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> 在需要的服务中添加启动注…

spring中常见的注解

DI(依赖注入中常见的注解) Autowired&#xff1a;按类型自动装配Resource&#xff1a;按名称或类型自动装配&#xff0c;Qualifier&#xff1a;按名称自动装配&#xff0c;Value &#xff1a;注入int、float、String等基本数据类型&#xff0c;只能标注在成员变量、setter方法上…

【Gradle-1】入门Gradle,前置必读

1、为什么要学习Gradle Gradle作为Android开发默认的构建工具&#xff0c;你的每一次编译都会用到它。招聘要求从以前的熟悉加分&#xff0c;到现在的必备技能&#xff0c;可见Gradle的重要性。 做开发这么久了&#xff0c;你是否对Gradle又爱又恨&#xff1f;是否对Gradle的…