STM32MP157系列教程连载-Linux应用开发篇1:STM32MP1微处理器之Ubuntu安装与体验

截至目前上传的博文已经有6篇了(硬件4篇,安装环境2篇),最近手头在搞STM32MP157C核心板相关设计。FS-MP1A开发板的硬件设计晚些更新,前6篇看到有朋友的留言,问相关开发环境搭建后如何在电脑上连接linux的问题,本篇讲解Ubuntu操作系统安装方式以及体验,学习目录如下所示:

第 1章 嵌入式Linux开发介绍

  • 1.1 安装前准备

第2 章 VMware Player安装

  1. 2.1 VMware Player介绍
    2.2 VMware安装

第 3章 Ubuntu操作系统

  • 3.1 发行版Linux介绍
  • 3.2 Ubuntu下载
  • 3.3 Ubuntu安装
  • 3.4 配置虚拟机
    3.4.1 网络连接修改
    3.4.2 安装VMware Tools
    3.4.3 启用共享文件夹
    3.4.4 常用工具安装
    3.4.5 安装TFTP服务器
    3.4.6 安装NFS服务器
    3.5 Linux开发工具安装

第4 章 Ubuntu初体验

  • 4.1 磁盘分区表相关操作
    4.1.1 MBR分区和GPT分区
    4.1.2 linux下磁盘文件节点名
    4.1.3 MBR创建分区及格式化
    4.1.4 将GPT分区转换为MBR分区

第 1 章 嵌入式Linux开发介绍

1.1 安装前准备

华清远见开发环境是基于Ubuntu 18.04 LTS 64-bit操作系统搭建的,使用VMware Player免费版作为虚拟机工具软件。用作Linux的编译与开发。所以建议开发主机硬件配置越高越好,配置越高则开发效率则越高。

配置 参数
CPU Intel/AMD CPU;I5-2540M或更高;主频2GHz或者更高;双核(四线程)或者更多;3MB 缓存;
内存 内存4G以上(推荐8G以上);
硬盘 虚拟机存放硬盘分区剩余空间80G以上;
USB 支持USB2.0或者更高(2路或者更多);
网卡 至少一路以太网卡;
操作系统 Windows XP或者更新(32位/64位操作系统);

第 2 章 VMware Player安装

2.1 VMware Player介绍

VMware Workstation Player中文版是一款官方免费版的精简虚拟机软件,用户无需重启电脑即可在同一台机上运行一个或多个操作系统。凭借其免费策略、简单易用的界面、流畅的性能、小巧的体积以及对多种不同操作系统的兼容性,VMware Workstation Player 已成为很多人首选的虚拟机软件!

VMware Workstation Player虚拟机可完美支持Windows 10/8.1/Win7/Vista/XP/2000等全系列微软操作系统以及Ubuntu、Red Hat Enterprise Linux、CentOS、Fedora、Deepin、Debian、Mint等Linux系统。而且现在也已支持DirectX 10.1和OpenGL 3.3的3D加速特性,可在虚拟机中轻松运行AutoCAD或SOLIDWORKS等要求严苛的3D应用,甚至在一些主流配置的电脑上还可流畅运行部分大型3D 游戏,性能相当不错。

2.2 VMware安装

1) 运行资料光盘【华清远见-FS_MP1A开发资料\01-工具软件】目录下的VMware-player-15.1.0-13591040.exe安装程序。

2) 【VMware Player安装程序初始化】

3) 【VMware Player安装向导】

4) 【VMware Player许可协议】

5) 【更改安装路径】

6) 【选择是否检查更新,加入用户体验改进计划】


7) 【创建快捷方式】

8) 【确认安装】

9) 【正在安装】

10) 【安装完成】

11) 【启动界面】

第 3 章 Ubuntu操作系统

3.1 发行版Linux介绍

Linux发行版(英语:Linux distribution,也被叫做GNU/Linux发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。一般用户不需要重新编译,在直接安装之后,只需要小幅度更改设置就可以使用,通常以软件包管理系统来进行应用软件的管理。Linux发行版通常包含了包括桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常由Linux内核、以及来自GNU计划的大量的函数库,和基于X Window的图形界面。有些发行版考虑到容量大小而没有预装X Window,而使用更加轻量级的软件,如:busybox,UClibc或dietlibc。现在有超过300个Linux发行版(Linux发行版列表)。大部分都正处于活跃的开发中,不断地改进。

由于大多数软件包是自由软件和开源软件,所以Linux发行版的形式多种多样——从功能齐全的桌面系统以及服务器系统到小型系统(通常在嵌入式设备,或者启动软盘)。除了一些定制软件(如安装和配置工具),发行版通常只是将特定的应用软件安装在一堆函数库和内核上,以满足特定用户的需求。

这些发行版可以分为商业发行版,比如Ubuntu(Canonical公司)、Fedora(Red Hat)、openSUSE(Novell)和Mandriva Linux;和社区发行版,它们由自由软件社区提供支持,如Debian和Gentoo。

3.2 Ubuntu下载

Ubuntu18.04官方标准安装文件可以通过ubuntu官方链接,也可以使用【华清远见-FS_MP1A开发资料\01-工具软件】目录下的ubuntu-18.04.4-desktop-amd64.iso安装文件进行安装。

打开链接后点击“64-bit PC (AMD64) desktop image”,切换至新网页并自动开始下载,下载完成后镜像文件为:ubuntu-18.04.4-desktop-amd64.iso

3.3 Ubuntu安装

  1. 打开Vmware Player:
  2. 点击 “创建新虚拟机”,弹出安装向导:
  3. 点击“浏览”按钮在弹出的浏览ISO镜像窗口中找到下载好的Ubuntu镜像文件,并点击“打开”按钮:

    选择好镜像后,如果镜像无误的话会显示识别到的系统版本
  4. 点击“下一步”继续安装:
  5. 点击填写用户信息并点击“下一步”继续安装,用户信息会作为安装后Ubuntu的管理员用户信息,华清远见开发环境Ubuntu管理员用户名为“linux”,密码为“1”:
  6. 选择Ubuntu安装路径,点击“浏览”,在弹出窗口中找到虚拟机安装的硬盘盘符,点击“新建文件夹”创建虚拟机安装文件夹,创建好文件夹后选择文件夹并点击确认,确认安装路径,最后点击“下一步”继续安装:
  7. 执行硬盘容量,根据开发使用情况,推荐磁盘大小不小于“80GB”,选择“将虚拟磁盘拆分成多个文件”方便后期虚拟机移动,最后点击“下一步”继续安装:
  8. 虚拟机创建完成:自定义硬件按钮可以自定义可以定制虚拟机配置,本章节使用默认配置即可,后期如需调整根据需求适当调整,勾选 “创建后开启此虚拟机”点击“完成”按钮完成虚拟机的创建并开始安装Ubuntu。
  9. 虚拟机启动后直接进入Ubuntu 简易安装界面,这个过程需要一些时间。

  10. 安装完成后系统自动启动。

    3.4 配置虚拟机

现在Ubuntu 18.04操作系统已经安装完成了,但是为了后续开发方便还需要对系统进行进一步的配置与修改。

3.4.1 网络连接修改
Ubuntu系统安装成功之后,默认网络配置为NAT模式,为了后续方便Ubuntu与主机进行网络通信需要修改为桥接模式。

在系统关闭的状态下,点击“编辑虚拟机设置”将网络适配器改为桥接模式。

3.4.2 安装VMware Tools

1) 选择VMware菜单栏下的“虚拟机”选项卡下的“安装 VMware Tools”选项。

2) 在安装好的ubuntu18.04系统中可看到“VMware Tools”DVD光盘。

3) 打开光盘可以看到如下文件。

4) 将VMwareTools-10.3.10-12406962.tar.gz压缩包复制到左侧的Downloads文件夹中。

5) 选中该文件右键选择“Extract Here”选项,进行解压。

6) 解压完成后会生成一个文件夹。

7) 进入VMwareTools-10.3.10-12406962/vmware-tools-distrlib文件夹。

8) 在该文件夹空白处右键,选择“Open in Terminal”选项,打开一个终端。


9) 执行vmware-install.pl脚本。

linux@ubuntu:$ sudo ./vmware-install.pl

输入密码1后看到如下界面

输入yes之后的选项全部默认“回车键”。

10) 安装完成默认如下图所示。

11) 重启系统。

linux@ubuntu:$ sudo reboot

3.4.3 启用共享文件夹

在启用共享文件夹前请确保VMwareTools已经正确安装。

为了便于后续Ubuntu与主机直接的文件传输可以启用虚拟机的共享文件夹将主机上的一个文件夹挂载到Ubuntu系统中。

在主机上任意位置建立一个用于共享文件的文件夹。(这里以G:\liunx_share为例)

点击“编辑虚拟机设置”找到“选项”下的共享文件夹。

选择界面右侧的“总是启用”选项后添加一个共享文件夹。

添加完成后如下界面中选中“启用此共享”后点击”完成“

点击完成后就可以看到刚刚添加的文件夹路径了。

开启虚拟机之后在/mnt/hgfs就可以看到共享的文件夹了。

3.4.4 常用工具安装

1) net-tools安装

从ubuntu18.04版本开始,在系统中默认不支持ifconfig命令进行网络状态查看。需要安装net-tools方可使用。

linux@ubuntu:$ sudo apt-get update
linux@ubuntu:$ sudo apt install net-tools


2) vim安装

系统安装完成后自带的文本编辑器是vi编辑器,这里推荐使用vim编辑器进行文本编辑。

linux@ubuntu:$ sudo apt-get update
linux@ubuntu:$ sudo apt-get install vim


为了后续开发方便可以为vim安装一些辅助插件。将【华清远见-FS_MP1A开发资料\01-工具软件】目录下的jeffy-vim-read.tar.gz压缩包导入到虚拟机中。

解压缩

linux@ubuntu:$ tar -xvf jeffy-vim-read.tar.gz

解压成功后会得到jeffy-vim-read文件夹,进入该文件夹下进行插件安装。

linux@ubuntu:$ ./install.sh


选择y

选择y,之后出现如下界面。

安装完成出现如下提示。

安装ctags

linux@ubuntu:$ sudo apt-get install ctags

3) openssh安装

linux@ubuntu:$ sudo apt-get update
linux@ubuntu:$ sudo apt-get install openssh-server

3.4.5 安装TFTP服务器

linux@ubuntu:$ sudo apt-get update
linux@ubuntu:$ sudo apt-get install tftp-hpa tftpd-hpa

在根目录下建立tftp工作目录

linux@ubuntu:$ sudo mkdir /tftpboot

修改tftpboot文件夹权限

linux@ubuntu:$ sudo chown linux:linux /tftpboot/
linux@ubuntu:$ sudo vi /etc/default/tftpd-hpa

将TFTP_DIRECTORY="/var/lib/tftpboot"修改为TFTP_DIRECTORY="/tftpboot"

重启tftp服务

linux@ubuntu:$ sudo service tftpd-hpa restart

3.4.6 安装NFS服务器

linux@ubuntu:$ sudo apt-get update

安装 NFS服务器端

linux@ubuntu:$ sudo apt-get install nfs-kernel-server

安装 NFS客户端

linux@ubuntu:$ sudo apt-get install nfs-common

建立NFS共享目录

linux@ubuntu:$ sudo mkdir /source
linux@ubuntu:$ sudo chown linux:linux /source
linux@ubuntu:$ mkdir /source/rootfs

添加共享目录

linux@ubuntu:$ sudo vi /etc/exports

若需要把 “/source/rootfs” 目录设置为NFS共享目录,在该文件末尾添加下面的一行:

/source/rootfs  *(rw,sync,no_root_squash,no_subtree_check)


使能NFS V2版本

linux@ubuntu:$ sudo vi /etc/default/nfs-kernel-server

在文件的最后添加下面的配置

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"


重启NFS

linux@ubuntu:$ sudo /etc/init.d/nfs-kernel-server restart

3.5 Linux开发工具安装

linux@ubuntu:$ sudo apt-get update
linux@ubuntu:$ 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
linux@ubuntu:$ sudo apt-get install libsdl1.2-dev xterm
linux@ubuntu:$ sudo apt-get install make xsltproc docbook-utils fop dblatex xmlto
linux@ubuntu:$ sudo apt-get install python-git-doc
linux@ubuntu:$ sudo apt-get install ncurses-dev libncurses5-dev libncursesw5-dev lib32ncurses5 libssl-dev linux-headers-generic u-boot-tools device-tree-compiler bison flex g++ libyaml-dev
linux@ubuntu:$ sudo apt-get install python-crypto
linux@ubuntu:$ sudo apt-get install coreutils bsdmainutils sed curl bc lrzsz corkscrew cvs subversion mercurial nfs-common nfs-kernel-server libarchive-zip-perl dos2unix texi2html diffstat libxml2-utils
linux@ubuntu:$ sudo apt-get install default-jre

第 4 章 Ubuntu初体验

4.1 磁盘分区表相关操作

4.1.1 MBR分区和GPT分区
全新硬盘未初始化之前,必须对齐进行分区,硬盘分区初始化的格式包括MBR和GPT两种。

  • MBR分区
    MBR的全称是Master Boot Record(主引导记录),MBR早在1983年IBM PC DOS 2.0中就已经提出。之所以叫“主引导记录”,是因为它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。
    MBR最大支持2.2TB磁盘,它无法处理大于2.2TB容量的磁盘。MBR只支持最多4个主分区,如果想要更多分区,则需要创建 “扩展分区”,并在其中创建逻辑分区。
  • GPT分区
    GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,它的推出是和UEFI BIOS相辅相成的,鉴于MBR的磁盘容量和分区数量已经不能满足硬件发展的需求,GPT首要的任务就是突破了2.2T分区的限制,最大支持18EB的分区。
    在分区数量上,GPT会为每一个分区分配一个全局唯一的标识符,理论上GPT支持无限个磁盘分区,不过在Windows系统上由于系统的限制,最多只能支持128个磁盘分区,基本可以满足所有用户的存储需求。在每一个分区上,这个标识符是一个随机生成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。

4.1.2 linux下磁盘文件节点名

基本上,linux下所有实体外部存储设备的文件名都被命名成 /dev/sd[a-p]的格式,第一个存储设备的文件名为/dev/sda。而分区的文件名若以第一个存储设备为例,则为/dev/sda[1-128]。除了实体磁盘之外,虚拟机的磁盘通常为/dev/vd[a-p]的格式。 若有使用到软件磁盘阵列的话,那还有/dev/md[0-128]的磁盘文件名。

4.1.3 MBR创建分区及格式化

如果我们拿到的是一个没有任何分区的外部存储器,则需要我们对其建立分区。这里以在虚拟机中的ubuntu操作系统为例来创建一个新的分区。

首先需要用到TF读卡器,虚拟机识别到SD读卡器。

右键点击图标选择“连接(断开与主机的连接)”

查看生成的设备节点,笔者SD卡在Ubuntu系统中的设备节点是/dev/sdc,这里提供一种方式查看设备节点,首先输入ls /dev/sd*【代表匹配所有符合sd的选项】,sd最后的设备为sdc。

这里可以看到一共有3个外部存储设备被接入该系统,这里的/dev/sdc为刚刚插入的TF卡设备。/dev/sdc1则表示sdc上的第一个分区。如果tf卡中没有任何分区则不会显示此节点。

接下来我们新建一共分区并将其格式化为FAT32格式, 这里以/dev/sdc为例。

linux@ubuntu:$ sudo  fdisk  /dev/sdX  (X表示实际的标号)


输入“p”查看当前分区。

如果这里看到的是如下现象,说明已经存在一个分区则可以跳过此步骤。

如果没有看到有相关分区,则输入“n”创建一个分区。

选择“p”默认选项创建主分区。

分区号选择默认“1”

起始扇区选择默认“2048”

结束扇区直接回车默认即可。

再次输入“p”查看分区

之后输入“w”保存分区

对刚刚创建的分区进行格式化。

linux@ubuntu:$ sudo  mkfs.vfat  /dev/sdcX(X 表示实际的标号)


此时可以点击虚拟机的USB图标断开与ubuntu的连接,使TF卡接入PC。

在资源管理器中可以看到,TF已经被正确识别。

4.1.4 将GPT分区转换为MBR分区

当我们制作开发板sdcard系统卡之后,整个sdcard会被设置为GPT分区,并且此时TF卡不能被PC机正常识别,如果想要在PC上正常使用TF卡。则需要将TF卡重新格式化成FAT32格式。(此操作会丢失TF卡中所有的数据)。

在ubuntu系统下使用

linux@ubuntu:$ sudo parted -s /dev/sdX mklabel msdos    (X 表示实际的标号)


之后就可以参照【MBR创建分区及格式化】小节进行建立分区和格式化。

累到手软,本期博文就写到这里了,有问题的朋友可以留言提问~~~

左月先生
2020.10.13

STM32MP157系列教程连载-Linux应用开发篇1:STM32MP1微处理器之Ubuntu安装与体验相关推荐

  1. STM32MP157系列教程连载-Linux系统移植篇4:STM32MP1微处理器之Bootloader移植

    STM32MP157系列教程连载-Linux系统移植篇4:STM32MP1微处理器之Bootloader移植 第 1 章 BootLoader(Uboot)移植 1.1 实验原理 1.1.1 概念 简 ...

  2. STM32MP157系列教程连载-硬件设计篇3:STM32MP1微处理器之时钟篇

    STM32MP157系列教程连载-硬件设计篇3:STM32MP1微处理器之时钟篇 一.RCC系统概述 本文涉及的内容主要包含在以下几个文档中,文档可从ST官方网站与意法半导体stm32中国下载. 序号 ...

  3. STM32MP157系列教程连载-硬件设计篇2:STM32MP1微处理器之电源篇

    STM32MP157系列教程连载-硬件设计篇2:STM32MP1微处理器之电源篇 一.官网资料下载 官网是获取设计资料与技术支持的最好途径.ST官网为用户提供了STM32MP1系列处理器的详细设计资料 ...

  4. STM32MP1系列教程连载-硬件设计篇1:初识STM32MP1系列微处理器

    STM32MP1系列教程连载-硬件设计篇1:初识STM32MP1系列微处理器 一.与一只蝴蝶的邂逅 时间退回至2007年9月,对于刚步入大学的笔者而言,微控制器的含义仅仅局限于文字.而在同年的6月意法 ...

  5. STM32MP1系列教程连载-华清远见FS-MP1A开发板使用

    STM32MP1系列教程连载-华清远见FS-MP1A开发板使用 1.1 FS_MP1A硬件资源介绍 FS-MP1A采用STM32MP157A处理器.STM32MP157A是基于Cortex-A7 32 ...

  6. linux驱动开发篇(三)—— 总线设备驱动模型

    linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...

  7. linux驱动开发篇(四)—— platform平台设备驱动

    linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...

  8. Struts1.x系列教程:用MyEclipse开发第一个Struts程序

    本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅<Struts 2系列教程>来比较Struts 1.x和Struts 2.x的相同点和不同点. 在这篇文章中将以一 ...

  9. python网络爬虫系列教程_Python网络爬虫系列教程连载 ----长期更新中,敬请关注!...

    感谢大家长期对Python爱好者社区的支持,后期Python爱好者社区推出Python网络爬虫系列教程.欢迎大家关注.以下系列教程大纲,欢迎大家补充.视频长期连载更新中 --------------- ...

最新文章

  1. OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)
  2. OpenGL编程指南8:模型组合变换
  3. springboot @PropertySource+@Value注入properties配置文件属性值
  4. 装AJAX.NET 1.0的环境,我遇到个问题,进来解答下
  5. sort 与 sorted 区别:
  6. ghelper怎么在手机上用_当长时间不用手机玩《崩坏3》、《战双》
  7. css随机数,在LESS CSS中生成随机数?
  8. Linux父进程如何发信号给子进程,在父进程和子进程之间发送信号
  9. python如何跳出函数_python如何跳出函数
  10. python图片处理教程_Python图像入门教程:Python图像入门教程推荐
  11. 音频特征(2):时域图、频谱图、语谱图(时频谱图)
  12. 【BLE】CC2640芯片简介
  13. 11210怎么等于24_所有能算24点的四个数,(4个数只能是1——10之间的数)我举个例:1,1,1,8.1,1,2,6.………………所有能算...
  14. SDN — OpenvSwitch 常用指令和应用示例
  15. 最全解决方法:未解压的word文档修改保存后找不到
  16. https 请求需要证书,忽略安全证书
  17. ios xcode如何修改应用的名称
  18. 数据治理-数据生命周期管理-大数据归档与销毁
  19. STM32寄存器配置USART1串口及USART->BRR值的计算
  20. 战地4稳定的服务器,战地4 游戏服务器

热门文章

  1. 【绝对好用】java poi 导入、导出excel(支持xsl、xslx)
  2. 使用MMDetection训练自己的数据集
  3. 公众号多题库查题系统
  4. 测量角速度_自动驾驶系统的定海神针—惯性测量单元
  5. VIO中的角速度和四元数
  6. POJ 1061 青蛙的约会
  7. Fabrie:PPT有风险,设计师请停用
  8. Linux C/C++ 调试的那些“歪门邪道”
  9. 爬虫数据云词图片怎么做?小姐姐教你用python做B站弹幕爬虫,并进行数据分析生成词云
  10. vivo手机的微信消息不提示问题解决