嵌入式linux下界面开发 嵌入式linux做界面用什么
ahcoder 2024-12-26 11:26 29 浏览
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系统网络配置:
相关推荐
- PC也能装MAX OS X
-
MACBOOK向来以其时尚的外观以及易用的OSX操作系统成为了时(zhuang)尚(bi)人士的最爱。但是其动不动就上万元的昂贵价格,也将一批立志时(zhuang)尚(bi)人士的拒之门外。但是最近...
- 一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?
-
前言:有很多粉丝都问过本人,一千多元到底能买到什么样的笔记本?在此笔者只想说,这样的资金预算真的太低了!如果想买全新的,那大概率买的就是性能比较拉垮的上网本,比如搭载英特赛扬N系列、J系列处理器的轻薄...
- 首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境
-
德国Linux硬件供应商TUXEDOComputers宣布正在开发一款配备高通骁龙XElite处理器(SnapdragonXEliteSoC)的ARM笔记本电脑,内部将该...
- System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器
-
IT之家3月30日消息,主打Linux硬件的厂商System76于今天发布了新一代Gazelle笔记本电脑,共有15英寸和17英寸两个版本,将于3月30日接受预订,...
- Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统
-
IT之家3月25日消息,KubuntuFocusXeGen2笔记本于近日发布,这是一款预装Kubuntu22.04LTSGNU/Linux发行版的轻薄本。上一代Kub...
- 这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起
-
Linux笔记本可能因为比较小众,一般都是拿Windows笔记本换个系统而来,硬件上也会落后同期Windows笔记本一两代,不过现在专门做Linux电脑的System76,推出了一款名为LemurP...
- 戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux
-
IT之家4月25日消息,科技媒体phoronix今天(4月25日)发布博文,报道称最新发布的Linux内核补丁,针对骁龙芯片的戴尔Inspiron14Plus笔记本,让其...
- TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U
-
IT之家8月12日消息,Linux硬件企业TUXEDO当地时间本月2日推出了InfinityFlex14二合一Linux笔记本。该笔记本搭载2+8核的英特尔酷睿i5-...
- 登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?
-
这是不是国家机密啊。事实什么样的不知道,但是从美国的探测器来看,就算不是也是相似的东西。下面我来说说我知道的。龙芯已经随北斗卫星上天了.就算登月探测器嫦娥是用"龙芯+Linux"也不出奇.没必要...
- DNS分离解析实验
-
如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力目录一、分离解析概述二、实验需求三、实验步骤3.1双网卡服务器配置3.1.1添加两张网卡(内外网)3.1.2对两个网卡进...
- 一个小实验巩固下进程管理
-
先回顾下之前的三篇文章:Linux进程在内核眼中是什么样子的?Linux进程线程是如何创建的?Linux是如何调度进程的?通过这三篇文章的学习我们知道,无论内核进程还是用户进程,都是可以用task...
- VMware Kali无线WIFI密码破解
-
WIFI破解前准备工作一张支持Kali系统监听的无线网卡VMware虚拟机安装好Kali系统(本实验用的是Kali2022版本)Kali系统下载、安装官方网站:https://www.kali.or...
- python多进程编程
-
forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...
- 拔电源十台电脑藏后门!德国实验惊曝Windows致命漏洞
-
2025年4月15日,央视突然曝出一个超级大新闻!原来美国国家安全局通过黑龙江,往微软Windows系统里发送加密信息,激活了系统里藏着的后门程序,想破坏哈尔滨亚冬会!这消息一出来,大家才发现,竟然已...
- 深度探索RK3568嵌入式教学平台实战案例:设备驱动开发实验
-
一、产品简介TL3568-PlusTEB人工智能实验箱国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产操作系统二、实验目的1、熟悉基本字符设备的驱动程序...
- 一周热门
- 最近发表
-
- PC也能装MAX OS X
- 一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?
- 首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境
- System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器
- Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统
- 这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起
- 戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux
- TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U
- 登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?
- DNS分离解析实验
- 标签列表
-
- linux 远程 (37)
- u盘 linux (32)
- linux 登录 (34)
- linux 路径 (33)
- linux 文件命令 (35)
- linux 是什么 (35)
- linux 界面 (34)
- 查看文件 linux (35)
- linux 语言 (33)
- linux代码 (32)
- linux 查看命令 (33)
- 关闭linux (34)
- root linux (33)
- 删除文件 linux (35)
- linux 主机 (34)
- linux与 (33)
- linux 函数 (35)
- linux .ssh (35)
- cpu linux (35)
- 查看linux 系统 (32)
- linux 防火墙 (33)
- linux 手机 (32)
- linux 镜像 (34)
- linux mac (32)
- linux ip地址 (34)