嵌入式linux下界面开发(嵌入式linux做界面用什么)
sinye56 2024-10-29 16:19 19 浏览 0 评论
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系统网络配置:
相关推荐
- 程序员:JDK的安装与配置(完整版)_jdk的安装方法
-
对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...
- Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置
-
一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...
- 麒麟系统安装JAVA JDK教程_麒麟系统配置jdk
-
检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...
- 学习笔记-Linux JDK - 安装&配置
-
前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...
- Linux新手入门系列:Linux下jdk安装配置
-
本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...
- 测试员必备:Linux下安装JDK 1.8你必须知道的那些事
-
1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...
- Linux 下安装JDK17_linux 安装jdk1.8 yum
-
一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...
- 在Ubuntu系统中安装JDK 17并配置环境变量教程
-
在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...
- 如何在 Linux 上安装 Java_linux安装java的步骤
-
在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...
- Windows和Linux环境下的JDK安装教程
-
JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...
- linux安装jdk_linux安装jdk软连接
-
JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...
- linux安装jdk,全局配置,不同用户不同jdk
-
jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...
- 运维大神教你在linux下安装jdk8_linux安装jdk1.7
-
1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...
- window和linux安装JDK1.8_linux 安装jdk1.8.tar
-
Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...
- 最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?
-
默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)