Embedded Linux Development——Note (1)——嵌入式开发环境的搭建

这个系列博客记录在嵌入式Linux开发过程中踩过的坑和查阅的资料,内容参考了openedv.com的教程。

首先需要搞明白手头有几台电脑:

1.你的开发电脑——我的就是一台搭载Windows 11的笔记本电脑
2.服务器电脑——这里使用Ubuntu Linux 18.04 LTS来模拟工作用的服务器电脑
3.开发板——搭载ARM Cortex A7的开发板电脑

1.在Linux上配置FTP服务器(开发电脑——服务器通信)

在Linux与开发者的机器(我的是Windows 11)之间经常需要文件传递,虽然虚拟机软件上一般有选项可以在本机和虚拟机之间进行文件的直接复制,但是这样的操作是不规范的,标准操作应该是在Linux服务器上建立FTP服务器,在本机上安装FTP客户端软件如FileZilla等进行FTP传输。

首先需要在Linux上安装FTP服务器,在Ubuntu上执行如下命令来安装vsftpd

sudo apt-get install vsftpd

vsftpd是Very Secure FTP Daemon的缩写,它是一个运行在UNIX系统上的FTP服务器,在Linux上安装vsftpd之后就可以使用FileZilla等FTP Client来连接它。在完成vsftpd的安装之后需要对它的配置文件进行一些改动,首先使用根权限下打开vsftpd的配置文件

sudo vim /etc/vsftpd.conf

然后取消以下两行的注释,第一行开放本地用户登入,第二行是使能任何FTP命令行的输入,然后保存并退出即可:
在这里插入图片描述
为了使上述改变生效,接下来可以重启FTP服务器服务:

# 重启FTP服务器以使配置文件改动生效
sudo /etc/init.d/vsftpd restart
# 检查一下当前是否已经启动成功,当前运行进程中出现vsftpd表示已经成功运行(如下所示)
> ps -e | grep vsftpd
> 773 ? 00:00:00 vsftpd

之后使用ifconfig等工具查看Linux服务器地址,并且在本机上使用FileZilla工具进行FTP客户端登入即可,关于FileZilla的使用应该是非常的简单,网上也有很多这方面的教程,在此不再赘述。
在这里插入图片描述
这里有一个小插曲,我在一开始使用ifconfig的时候显示的IP地址是10.0.2.15,如果使用FileZilla连接Linux上的这个地址是无法成功的(也无法ping通),这是因为虚拟机上网卡的连接方式设置有误,我使用的虚拟机是VirtualBox下面的,这时应该将虚拟机网络连接方式从网络地址转换(NAT)调整为桥接网卡,在设置之后才会分配给虚拟机一个局域网IP地址,这时FTP客户端才可以连接到虚拟机上:
在这里插入图片描述
设置完成这些之后,还要在高级选项中将混杂模式的选项设置为全部允许,并且将接入网线勾选上,否则虚拟机可能会出现无法联网的情况:
在这里插入图片描述

2.在Linux上配置NFS服务器(开发板——服务器通信)

NFS是网络文件系统(Network File System)的缩写,它是一种分布式文件系统,支持客户端可以访问像访问本地存储一样访问服务器文件,这个过程依赖于远程过程调用(Remote Procedure Call, RPC)服务来完成服务器对客户端端口的映射和识别,所以安装NFS时需要首先安装RPC服务,安装NFS服务是为了以后方便地完成Linux服务器和ARM开发板之间文件的相互传递

安装NFS服务的命令行如下,这同时安装了NFS服务器和RPC服务

sudo apt-get install nfs-kernel-server rpcbind

完成安装之后还需要完成一些配置:
在Linux服务器上创建一个NFS代理文件夹,并且在NFS配置文件中完成代理文件夹的挂载和访问权限设置,以后开发板使用NFS服务连接到服务器上,就会像访问本地存储一样访问代理文件夹

# 在根目录下创建一个文件夹,这就是nfs在本地的代理文件夹
sudo mkdir -p nfs

在创建完成代理文件夹之后,我们需要设置配置文件来限定外界访问代理文件夹的权限:

# 打开nfs配置文件
sudo vim /etc/exports
# 输入以下配置命令来约束代理文件夹的访问控制权限,各个权限字之间绝对不可以有空格
<your nfs file path> *(rw,sync,no_root_squash,no_subtree_check)

配置文件的设置截图如下所示,正如文件开头中写的那样,这个文件是用作访问控制(access control list)的列表,你可以在exports的相关手册中看到配置文件选项的详细含义

# 查看每一个关键字的详细含义
man 5 exports

这里有一篇博客讲解了配置命令的详细含义,写的不错,可以作为参考和理解。

# *表示任何IP地址和域名均可访问此代理文件夹
# 括号内标志均为权限,它们中间绝对不可以有空格存在
*(rw,sync,no_root_squash,no_subtree_check)

:

完成上述的所有配置之后,可以重启NFS服务使得所有改动生效,可以正常启动则说明服务设置正常:

# 重新启动NFS服务
sudo /etc/init.d/nfs-kernel-server restart

3.在Linux上配置SSH服务器(开发电脑——服务器通信)

这一步是在Linux服务器上(这里使用虚拟机来代替),安装SSH服务器并启动SSH服务,这样以后开发电脑就可以远程连接到Linux服务器上完成对服务器的操控,开发电脑上需要装SSH客户端程序,这里我推荐MobaXTerm,另外可选的还有XShell或Putty,但是我觉得它们没有MobaXTerm好用。

首先在虚拟机上安装OpenSSH服务器,一般使用默认配置即可

sudo apt install openssh-server

4.在Linux服务器上安装x86-ARM交叉编译器

这里安装的交叉编译器是Linaro gcc,这是一个开源的交叉编译器,它运行在x86架构上的Linux中,可以完成对ARM指令集的编译,这里依照正点原子的教程下载4.9.2版本的Linaro gcc编译器,链接点此

在这里插入图片描述然后将此交叉编译器下载下来,通过FileZilla传递到Ubuntu虚拟机上
在这里插入图片描述
然后在此解压缩并安装交叉编译器

# 解压缩交叉编译器
sudo tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

解压缩完成之后会得到编译器的可执行文件,为了让每次启动终端的时候都可以直接使用编译器,这里可以将编译器存放的位置导入环境变量中,保存并退出即可:

# 打开环境变量文件,这个文件在每次启动终端时都会自动加载
sudo vim /etc/profile
# 在文件的最后一行将交叉编译器的bin目录绝对路径导入环境变量中
export PATH=$PATH:/home/zheyuan/tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

截图如下:
在这里插入图片描述
在完成上述配置后可以重启终端,这时设置的环境变量应该已经生效。
随后还需要额外安装一些交叉编译器需要依赖的工具

# 安装交叉编译器依赖的工具,好像是一些GNU编译器需要的运行时库
sudo apt install lsb-core lib32stdc++6

到此,交叉编译器安装完毕,可以查看一下版本号来确认安装是否成功

# 查看交叉编译器的版本信息,正常显示说明已经配置成功
arm-linux-gnueabihf-gcc -v

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zzy980511/article/details/128491268