百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

嵌入式linux下界面开发 嵌入式linux做界面用什么

ahcoder 2024-12-26 11:26 47 浏览

1)实验平台:郑电Atom MPSoC开发板

2)平台购买地址:

3)全套实验源码+手册+视频下载地址:

第 9 章 构建 Linux 图形界面

一般我们使用Linux多是通过终端,也就是字符界面,其实Linux也有图形界面,比如我们使用的Ubuntu主机默认采用的是GNOME图形界面。不同于Windows系统,Windows图形界面无法更换或卸载,如果图形界面崩溃,整个系统基本就崩溃了。而Linux图形界面只是一个可以更换和卸载的应用程序。常用的图形界面有GNOME、KDE、Xfce、LXDE等。本章我们将讲解如何在DFZU2EG_4EV MPSoC开发板上搭建Linux图形界面。

9.1 简介

在 Windows 中,我们习惯使用图形界面,它不仅可以让我们操作起来方便,还可以让我们沉浸在它的娱乐之中。这是因为 Windows 长期以来一直定位于个人桌面。Linux 由于开源和稳定,长期以来服务于服务器行业,但是服务器行业对图形界面的要求不高,又缺乏商业化运作,所以 Linux 的图形界面发展一直比较缓慢。当然,现在的情况不一样了,随着 Linux 这些年的发展,Linux 的图形界面也越来越好了,比如我们现在使用的 Ubuntu 18.04 版本的图形界面,就和 Windows 的图形界面风格相差无几。

Linux 的图形界面(以下统称桌面)有很多,比如 GNOME、KDE、XFCE、LXDE 等,每个桌面都有自己的风格和特点。与 GNOME 和 KDE 不同,XFCE 和 LXDE 的定位是轻量级桌面,可以在硬件性能配置不高的电脑或者嵌入式领域使用。因为图形界面对于硬件性能还是有要求的,正因为如此,我们平时使用的电脑都是带 GPU 的,当然嵌入式领域很少有 GPU,所以一般都会使用轻量级桌面,或者用 Qt 搭建一个。

桌面只是Linux系统的一个应用,所以是可以移植的。由于我们的主要目的不是移植桌面,所以没必要花精力在这上面。当然有兴趣的可以去尝试一下。那么桌面要怎么用呢?

其实,我们可以利用Petalinux来搭建一个轻量级桌面,Petalinux提供的轻量级桌面是Matchbox,也是一个窗口管理器,关于Matchbox的介绍可以访问:,或者参考CSDN上的一篇博客:。

笔者对 Matchbox 了解不多,本章使用 Matchbox 的原因有二:第一,Petalinux 提供了这样一个轻量级的桌面,它是使用 Petalinux 构建的,并对 Petalinux 的一些功能进行了讲解;第二,为以后使用其他图形界面提供帮助或参考。

图形界面存放在根文件系统中,关于根文件系统的介绍请参考 Error! Reference source not found 一节。Linux内核启动后,会加载根文件系统进入Linux系统。Linux系统长什么样子,是由根文件系统决定的。比如对于安卓手机来说,都是运行在Linux内核上的,但是不同厂商的安卓手机界面不一样,这是由根文件系统决定的。根文件系统可以用Petalinux编译出来,如本章所示;也可以用其他开源根文件系统,比如Ubuntu、Debian等。当然不是所有的根文件系统都是通用的,每个根文件系统在生成的时候都有自己的平台架构,这是由编译工具链决定的。对于我们的MPSoc开发板来说,基本可以使用适合ARM64位的根文件系统,但是有些细节可能需要适配。有兴趣的读者可以在读完本章之后,阅读9.8节的扩展阅读。

接下来我们讲解Petalinux和根文件系统相关的内容。

9.2 配置根文件系统类型

进入第 6 章 Petalinux 设计流程实践 中创建的 petalinux 工程目录,然后按照6.3.2 节设置 Petalinux 环境变量。

现在重新配置petalinux,重新设置根文件系统类型,命令如下:

petalinux-配置

在弹出的配置界面中进入“Image Packaging Configuration”菜单下的“Root filesystem type (INITRAMFS)”子菜单,如下图:

图 9.2.1 选择“EXT (SD/eMMC/QSPI/SATA/USB)”

选择“EXT (SD/eMMC/QSPI/SATA/USB)”,按键盘“Enter”键返回,结果如下图所示:

图 9.2.2 根文件系统类型的最终配置

将根文件系统类型设置为“EXT (SD/eMMC/QSPI/SATA/USB)”,也就是说根文件系统在EXT之外,可能在SD、eMMC、QSPI等,而不是像INITRD类型那样存放在i??mage.ub中。现在又有一个新问题,内核怎么知道根文件系统放在哪里,在哪一个,SD、eMMC、QSPI等?解决这个问题有两种方法。

首先:

配置“Device node of SD device”,即SD设备的设备节点。一般根文件系统是放在SD卡里的,所以用SD device来表示存放根文件系统的设备。默认是“/dev/mmcblk0p2”,代表第一个mmc设备/dev/mmcblk0的第二个分区,对应开发板eMMC的第二个分区。笔者把根文件系统放在SD卡的第二个分区,也就是SD卡的ext4分区,所以设置为“/dev/mmcblk1p2”,如下图所示:

图9.2.3 配置SD设备的设备节点”

第二种:

设置内核启动参数。

返回主配置界面。进入“DTG Settings”菜单下的“Kernel Bootargs”子菜单,如下图:

图9.2.4 设置内核启动参数

默认参数如下:

earlycon 控制台=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk0p2 rw rootwait

earlycon 控制台=ttyPS0,115200 clk_ignore_unused

修改为以下内容:

earlycon 控制台=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk1p2 rw rootwait

即将“root=/dev/mmcblk0p2”改为“root=/dev/mmcblk1p2”,/dev/mmcblk1p2对应的是SD卡的ext4分区,“root=/dev/mmcblk1p2”表示根文件系统存放在/dev/mmcblk1p2中。

但这个修改不会生效,如下图所示:

图 9.2.5 无编辑

显示“无编辑!”,我该如何更改?

首先,取消“generate boot args automated”,如下图:

图 9.2.6 取消“自动生成启动参数”

然后设置“user set kernel bootargs”。移动到“user set kernel bootargs”处按下键盘的回车键,进入下图所示界面。输入“earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk1p2 rw rootwait”,如下图所示:

图9.2.7 设置内核启动参数

设置完成后会出现下图:

图9.2.8 设置结果

经过以上设置后,Linux 就可以准确地从 SD 卡的第二个分区,也就是 ext4 分区加载根文件系统了。其他选项与上一章相同。现在保存配置并退出。

注意:设置的“Kernel Bootargs”可以在当前工程的components/plnx_workspace/device-tree/device-tree/system-conf.dtsi中找到,如果没有或者不对应,就编译Petalinux工程即可。

9.3 定制根文件系统

输入以下命令定制根文件系统:

petalinux-config-c 根文件系统

执行结果如下图所示:

图9.3.1 根文件系统配置界面

关于该配置界面的介绍,请参考Petalinux搭建根文件系统的“Error! Reference source not found.”一节。现在我们来定制本章需要的根文件系统。

9.3.1 添加多媒体库

为了丰富根文件系统的多媒体显示功能,比如图形界面等,需要添加多媒体库。添加多媒体库需要进行以下配置:

Petalinux 软件包组 —>

软件包组-petalinux-multimedia —>

软件包组-petalinux-multimedia (Y)

结果如下图所示:

图 9.3.2 添加多媒体库

使用 <Help> 您可以看到 packagegroup-petalinux-multimedia 包含以下软件包:

图 9.3.3 包含的多媒体库

我们在本章中使用的图形界面是火柴盒。

9.3.2 配置自动登录

之前我们在开发板上运行Linux,Linux系统启动后需要输入用户名和密码,平常使用起来比较麻烦,我们可以配置一下根文件系统,让Linux系统启动后自动登录,需要配置如下:

图像特征 —>

调试调整 (Y)

结果如下图所示:

图9.3.4 配置自动登录

9.4 编译Petalinux工程

配置完根文件系统后,编译整个Petalinux工程,得到修改后的启动镜像文件和根文件系统。在终端中输入以下命令:

petalinux-构建

执行结果如下图所示:

图9.4.1 编译整个Petalinux工程

注:有警告,Petalinux版本问题,不影响使用。

编译完成后会在项目的images/linux下生成相应的镜像文件和根文件系统(rootfs.tar.gz),如下图所示:

图9.4.2 编译后的根文件系统

9.5 创建BOOT.BIN启动文件并复制到SD卡

使用以下命令生成BOOT文件:

petalinux-package--boot--fsbl--fpga--u-boot--force

执行结果如下图所示:

图9.5.1 生成BOOT文件

生成BOOT文件之后,我们将SD卡插入Ubuntu虚拟机,将工程中image/linux目录下的BOOT.BIN和image.ub文件复制到名为boot的分区,也就是/dev/sdc1分区下,如下图所示:

图 9.5.2 将启动映像复制到 SD 卡

9.6 将根文件系统复制到SD卡的ext4分区

使用命令df -h可以看到SD卡的ext4分区已经挂载到/media/cx/rootfs/了,如下图所示。之前我们都没有用过这个分区,现在终于派上用场了。

图 9.6.1 挂载点

在Ubuntu主机终端输入以下命令,将本章编译好的根文件系统解压至SD卡的rootfs分区并查看:

sudo tar -zxf rootfs.tar.gz -C /media/cx/rootfs/

ls /media/cx/rootfs/

如下所示:

图9.6.2 解压根文件系统到SD卡的rootfs分区

可以看到解压完成后,SD卡的rootfs分区已经有了根文件系统,Linux内核启动时会从SD卡的rootfs分区加载根文件系统的相应文件进入Linux系统,之后修改或者复制的文件就可以保存到SD卡的rootfs分区,不会在断电时丢失。

现在您可以卸载 SD 卡。特别注意在终端中输入以下命令来卸载它:

sync #同步

cd #避开SD卡挂载的目录

卸载/dev/sdc*

/dev/sdc 就是我的SD卡所在目录,输入上述命令之后,当终端弹出下一个提示符的时候就可以拔出SD卡了,如下图所示:

图 9.6.3 卸载 SD 卡

过早移除SD卡将导致开发板上的Linux系统无法启动。

9.7 启动开发板上的Linux

将SD卡插入开发板的SD卡槽(卡槽在开发板的背面),然后使用USB Type-C线将开发板的USB_UART接口连接到电脑进行串口通信,连接miniDP线显示图形界面。接下来将开发板上的启动模式开关设置为从SD卡启动。最后连接开发板的电源线,给开发板上电。

连接到开发板miniDP接口的显示器显示的内容如下图所示:

图9.7.1 根文件系统显示的桌面

这是轻量级桌面Matchbox的图形界面,非常简单。

串行终端显示如下图所示:

图 9.7.2 串行终端

注意:按回车键显示“root@ALIENTEK-ZYNQ:~#”。

现在我们给开发板接上鼠标和键盘,就可以使用图形界面了,这里就不介绍图形界面的使用方法了,有兴趣的读者可以自行研究。

至此我们已经完成了Linux图形界面的使用。

注意:输出中的Errors、Cant find、failure等信息可能是软件本身的一些问题,但是并不影响使用。

9.8 进一步阅读

我们进入Ubuntu官网,可以看到Xilinx和Raspberry Pi,如下图:

图 9.8.1 Xilinx 和 Raspberry Pi

也就是说 Xilinx 和 Raspberry Pi 是和生产 Ubuntu 的公司合作的,相应的应该也会有针对 Xilinx 和 Raspberry Pi 的 Ubuntu 系统镜像。

我们先来看一下Xilinx,在Xilinx的页面上,有如下说明:

图 9.8.2 MPSoc 的 Ubuntu 桌面系统镜像

可以看到,有专门针对Xilinx自家的ZCU102、ZCU104、ZCU106开发板的Ubuntu桌面系统镜像。ZCU102和ZCU104都属于ZYNQ UltraScale+ MPSoc系列,理论上可以用于所有ZYNQ UltraScale+ MPSoc系列,因为同架构(同PS)的处理器根文件系统一般是通用的,只需要替换FAT32分区的启动镜像即可。很遗憾,笔者没能成功适配到我们使用的ZYNQ UltraScale+ MPSoc开发板上,有兴趣的读者可以尝试一下。

现在我们来看看树莓派,进入之后对应的网页如下图所示:

图 9.8.3 Raspberry Pi 的 Ubuntu 系统

树莓派的Ubuntu系统有桌面版和服务器版,各自的使用都有相应的教程,大家可以参考学习。

介绍完树莓派之后,可能会有读者问,那树莓派的Ubuntu系统是不是也可以在我们的开发板上使用呢?

答案是肯定的,我们先来看看树莓派各个版本的具体参数,如下图所示(图片来自百度百科):

图9.8.4 树莓派各个版本参数

可以看出,3代B、B+、CM3树莓派使用的CPU都是四核ARM A53,和我们使用的2eg、4ev开发板是一样的,而且同型号的CPU可以使用相同的根文件系统,也就是SD卡EXT4分区的内容。根文件系统运行在Linux内核上,和底层关系不大,只要内核使用我们自己的开发板,就可以使用树莓派的根文件系统。笔者尝试将服务器版的树莓派Ubuntu系统烧录到SD卡,然后替换SD卡FAT32分区的内容,开机后不知为何提示密码错误(用户名和密码都是ubuntu),如下图所示:

图9.8.5 用户名与密码不对应

由于时间关系,笔者没有做太多的尝试,感兴趣的读者可以自行尝试。

相关信息:

1)刻录Ubuntu映像:

2)Ubuntu系统网络配置:

相关推荐

KaOS 2025.05版本发布:全面拥抱Qt6,彻底告别Qt5

KaOSLinux2025.05版本重磅发布:全面拥抱Qt6,开启KDE生态新篇章继2025.03版本发布两个月后,专注于KDE桌面环境、采用XFS文件系统的滚动发行版Li...

基于FIMC接口的CMOS摄像头驱动分析与设计

摘要:目前的嵌入式系统中,USB摄像头使用比较普遍,但其应用会受到传输速度的限制。本文采用一款高速CMOS摄像头,其驱动利用S3C6410内置的FIMC接口技术,采用DMA和ping-pong缓冲...

没错是微软 推出基于Linux的交换机系统

2015-09-2205:59:59作者:郑伟你没看错,为了提升自身Azure云数据中心内网络设备的兼容性及开放性,微软也开始推出基于Linux的网络交换机系统了。这个被称为AzureCloud...

Linus Torvalds 宣布首个 Linux 内核 6.16 候选版本

Linux内核负责人兼创始人LinusTorvalds宣布关闭合并窗口,该窗口用于将主要新功能添加到内核中,并开始发布Linux6.16候选版本,从候选版本1(Linux6.16-r...

Linux内核漏洞将影响Haswell架构服务器

在infoq网站上,GilTene最近报告一个十分重要,但并不为人知Linux内核补丁,特别对采用Haswell架构的Linux系统用户和管理员应该特别关注。报告提醒RedHat发行版的用户(包括...

关于Linux性能调优中网络I/O的一些笔记

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...

国产操作系统- Veket Linux(国产操作系统之光银河麒麟阅读理解)

VeketLinux是一个随身的可装在U盘的Linux操作系统。主要面向桌面用户。它的设计重点是提供简单易用且稳定的操作系统,同时保持更新和开发。它具有强大的功能集和广泛的用户基础,可满足...

AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术

IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...

跟老韩学Linux运维架构师系列,vim与view的基本使用

下面是vim和view的10个实例:用vim打开一个新文件:vimnewfile.txt这个命令将会在vim编辑器中打开一个新文件。在vim中移动光标:使用方向键或h、j、k、l键来移动光标。在v...

malloc底层原理剖析——ptmalloc内存池

malloc底层为什么是内存池malloc大家都用过,其是库函数。我们都知道库函数在不同的操作系统中其实执行的是系统调用,那么malloc在Linux上执行的是哪个系统调用呢?brk()和mmap()...

Zen 6架构首秀Linux,AMD加速下一代处理器布局

IT之家5月15日消息,科技媒体Phoronix昨日(5月14日)发布博文,报道称AMD已经开始为下一代“Zen6”处理器做准备,已为该构架向Linux内核提交了首个补丁,...

为何越来越多企业转向安卓/Linux工业平板电脑?答案在这里

在工业领域,设备的稳定性至关重要,尤其是工业平板电脑,常年运行在高温、粉尘、潮湿等复杂环境下,一旦系统崩溃或者卡顿,可能会影响整个生产流程。那么,为什么越来越多的企业选择安卓/Linux工业平板电脑,...

从3ms到0.8ms:ARM+Linux如何重塑工业控制实时性标杆

在智能制造领域,产线控制系统对实时性的要求越来越高。根据行业调研数据,超过65%的工业现场出现过因系统响应延迟导致的故障停机,平均每次停机造成的直接损失高达2-8万元。传统x86架构搭配Windows...

看Linux如何&quot;挖坑种树&quot;

写在前面,有人看我的Linux文章说技术难度不深,笔者不是不想写深,笔者是觉得Linux难就难在入门,入门之后你就知道如何上网查询你所要要解决的Linux需求。如果你已入门,此文已对你无用,请略过此...

AlmaLinux 9.6 发布,新增功能亮点纷呈!

距离上一版本AlmaLinux9.5发布六个月后,基于5.14内核的AlmaLinux正式宣布其企业级Linux发行版的9.x系列第六个更新——AlmaLinux9.6(Sag...