百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

「正点原子Linux连载」第四章开发环境搭建(1)

sinye56 2024-11-14 17:40 5 浏览 0 评论

1)实验平台:正点原子Linux开发板

2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南

关注官方微信号公众号,获取更多资料:正点原子


第四章开发环境搭建


要进行裸机开发肯定要先搭建好开发环境,我们在开始学习STM32的时候肯定需要安装一堆的软件,比如MDK、IAR、串口调试助手等等,这个就是STM32的开发环境搭建。同样的,要想在Ubuntu下进行Cortex-A(I.MX6U)开发也需要安装一些软件,也就是网上说的开发环境搭建,环境搭建好以后我们就可以进行开发了。环境搭建分为Ubuntu和Windows,因为我们最熟悉Windows,所以代码编写、查找资料啥的肯定是在Windows下进行的。但是Linux开发又必须在Ubuntu下进行,所以还需要搭建Ubuntu下的开发环境,主要是交叉编译器的安装,本章我们就分为Ubuntu和Windows,讲解这两种操作系统下的环境搭建。

4.1Ubuntu和Windows文件互传

在开发的过程中会频繁的在Windows和Ubuntu下进行文件传输,比如在Windwos下进行代码编写,然后将编写好的代码拿到Ubuntu下进行编译。Windows和Ubuntu下的文件互传我们需要使用FTP服务,设置方法如下:

1、开启Ubuntu下的FTP服务

打开Ubuntu的终端窗口,然后执行如下命令来安装FTP服务:

sudo apt-get install vsftpd

等待软件自动安装,安装完成以后使用如下VI命令打开/etc/vsftpd.conf,命令如下:

sudo vi /etc/vsftpd.conf

打开以后vsftpd.conf文件以后找到如下两行:

local_enable=YES

write_enable=YES

确保上面两行前面没有“#”,有的话就取消掉,完成以后如图4.1.1所示:


修改完vsftpd.conf以后保存退出,使用如下命令重启FTP服务:

sudo /etc/init.d/vsftpd restart

2、Windows下FTP客户端安装

Windows下FTP客户端我们使用FileZilla,这是个免费的FTP客户端软件,可以在FileZilla官网下载,下载地址如下:https://www.filezilla.cn/download,下载界面如图4.1.2所示:


我们已经下载好FileZilla并放到开发板光盘中了,路径为:3、软件->FileZilla_3.39.0_win64-setup_bundled.exe,双击安装即可。安装完成以后找到安装目录,找到图标,然后发送图标快捷方式到桌面,完成以后如图4.1.3所示:

打开FileZilla软件,界面如图4.1.4所示:

3、FileZilla软件设置

Ubuntu作为FTP服务器,FileZilla作为FTP客户端,客户端肯定要连接到服务器上,打开站点管理器,点击:文件->站点管理器,打开以后如图4.1.5所示:

点击图4.1.5中的“新站点(N)”按钮来创建站点,新建站点以后就会在“我的站点”下出现新建的这个站点,站点的名称可以自行修改,比如我将新的站点命名为“Ubuntu”如图4.1.6所示:

选中新创建的“Ubuntu”站点,然后对站点的“常规”进行设置,设置如图4.1.7所示:

按照图4.1.7中设置好以后,点击“连接”按钮,第一次连接可能会弹出提示是否保存密码的对话框,点击确定即可。连接成功以后如图4.1.8所示:

连接成功以后如图4.1.8所示,其中左边就是Windows文件目录,右边是Ubuntu文件目录,默认进入用户根目录下(比如我电脑的“/home/zuozhongkai”)。但是注意观察在图4.1.8中Ubuntu文件目录下的中文目录都是乱码的,这是因为编码方式没有选对,先断开连接,点击:服务器(S)->断开连接,然后打开站点管理器,选中要设置的站点“Ubuntu”,选择“字符集”,设置如图4.1.9所示:

按照图4.1.9设置好字符集以后重新连接到FTP服务器上,重新链接到FTP服务器以后Ubuntu下的文件目录中文显示就正常了,如图4.1.10所示:

如果要将Windows下的文件或文件夹拷贝到Ubuntu中,只需要在图4.1.10中左侧的Windows区域选中要拷贝的文件或者文件夹,然后直接拖到右侧的Ubuntu中指定的目录即可。将Ubuntu中的文件或者文件夹拷贝到Windows中也是直接拖放。

4.2 Ubuntu下NFS和SSH服务开启

4.2.1 NFS服务开启

后面进行Linux驱动开发的时候需要NFS启动,因此要先安装并开启Ubuntu中的NFS服务,使用如下命令安装NFS服务:

sudo apt-get install nfs-kernel-server rpcbind

等待安装完成,安装完成以后在用户根目录下创建一个名为“linux”的文件夹,以后所有的东西都放到这个“linux”文件夹里面,在“linux”文件夹里面新建一个名为“nfs”的文件夹,如图4.2.1所示:

图4.2.1中创建的nfs文件夹供nfs服务器使用,以后我们可以在开发板上通过网络文件系统来访问nfs文件夹,要先配置nfs,使用如下命令打开nfs配置文件/etc/exports:

sudo vi /etc/exports

打开/etc/exports以后在后面添加如下所示内容:

/home/zuozhongkai/linux/nfs *(rw,sync,no_root_squash)

添加完成以后的/etc/exports如图4.2.2所示:

重启NFS服务,使用命令如下:

sudo /etc/init.d/nfs-kernel-server restart

4.2.2 SSH服务开启

开启Ubuntu的SSH服务以后我们就可以在Windwos下使用终端软件登陆到Ubuntu,比如使用SecureCRT,Ubuntu下使用如下命令开启SSH服务:

sudo apt-get install openssh-server

上述命令安装ssh服务,ssh的配置文件为/etc/ssh/sshd_config,使用默认配置即可。

4.3Ubuntu交叉编译工具链安装

4.3.1交叉编译器安装

ARM裸机、Uboot移植、Linux移植这些都需要在Ubuntu下进行编译,编译就需要编译器,我们在第三章“Linux C编程入门”里面已经讲解了如何在Liux进行C语言开发,里面使用GCC编译器进行代码编译,但是Ubuntu自带的gcc编译器是针对X86架构的!而我们现在要编译的是ARM架构的代码,所以我们需要一个在X86架构的PC上运行,可以编译ARM架构代码的GCC编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是:

1、它肯定是一个GCC编译器。

2、这个GCC编译器是运行在X86架构的PC上的。

3、这个GCC编译器是编译ARM架构代码的,也就是编译出来的可执行文件是在ARM芯片上运行的。

交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。

交叉编译器有很多种,我们使用Linaro出品的交叉编译器,Linaro一间非营利性质的开放源代码软件工程公司,Linaro开发了很多软件,最著名的就是Linaro GCC编译工具链(编译器),关于Linaro详细的介绍可以到Linaro官网查阅。Linaro GCC编译器下载地址如下:

https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/,打开以后下载界面如图4.3.1.1所示:

在图4.3.1.1中有很多种GCC交叉编译工具链,因为我们所使用的I.MX6U-ALPHA开发板是一个Cortex-A7内核的开发板,因此选择arm-linux-gnueabihf,点击后面的“Binaries”进入可执行文件下载界面,如图4.3.1.2所示:

在写本教程的时候最新的编译器版本是7.3.1,但是笔者在测试7.3.1版本编译器的时候发现编译完成后的uboot无法运行。所以这里不推荐使用最新版的编译器。笔者测试过4.9版本的编译器可以正常工作,所以我们需要下载4.9版本的编译器,下载地址为:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/,如图4.3.1.3所示:

图4.3.1.3中有很多种交叉编译器,我们只需要关注这两种: gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf.tar.tar.xz和gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz,第一个是针对32位系统的,第二个是针对64位系统的。大家根据自己所使用的Ubuntu系统类型选择合适的版本,比如我安装的Ubuntu16.04是64位系统,因此我要使用gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz。

这两种交叉编译器我们已经下载好放到了开发板光盘中,路径:5、开发工具->1、交叉编译器。我们要先将交叉编译工具拷贝到Ubuntu中,在4.2.1小节中我们在当前用户根目录下创建了一个名为“linux”的文件夹,在这个linux文件夹里面再创建一个名为“tool”的文件夹,用来存放一些开发工具。使用前面已经安装好的FileZilla将交叉编译器拷贝到Ubuntu中刚刚新建的“tool”文件夹中,操作如图4.3.1.4所示:

拷贝完成的话FileZilla会有提示,如图4.3.1.5:

在Ubuntu中创建目录:/usr/local/arm,命令如下:

sudo mkdir /usr/local/arm

创建完成以后将刚刚拷贝的交叉编译器复制到/usr/local/arm这个目录中,在终端使用命令“cd”进入到存放有交叉编译器的目录,比我前面将交叉编译器拷贝到了目录“/home/zuozhongkai/linux/tool”中,然后使用如下命令将交叉编译器复制到/usr/local/arm中:

sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f

操作步骤如图4.3.1.6所示:

拷贝完成以后在/usr/local/arm目录中对交叉编译工具进行解压,解压命令如下:

sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

等待解压完成,解压完成以后会生成一个名为“gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf”的文件夹,这个文件夹里面就是我们的交叉编译工具链。

修改环境变量,使用VI打开/etc/profile文件,命令如下:

sudo vi /etc/profile

打开/etc/profile以后,在最后面输入如下所示内容:

export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

添加完成以后的/etc/profile如图4.3.1.7所示:

修改好以后就保存退出,重启Ubuntu系统,交叉编译工具链(编译器)就安装成功了。

4.3.2 安装相关库

在使用交叉编译器之前还需要安装一下其它的库,命令如下:

sudo apt-get install lsb-core lib32stdc++6

等待这些库安装完成。

4.3.3交叉编译器验证

首先查看一下交叉编译工具的版本号,输入如下命令:

arm-linux-gnueabihf-gcc -v

如果交叉编译器安装正确的话就会显示版本号,如图4.3.3.1所示:

从图4.3.3.1中可以看出当前交叉编译器的版本号为4.9.4,说明交叉编译工具链安装成功。第三章“Linux C编程入门”中使用Ubuntu自带的GCC编译器,我们用的是命令“gcc”。要使用刚刚安装的交叉编译器的时候使用的命令是“arm-linux-gnueabihf-gcc”,“arm-linux-gnueabihf-gcc”的含义如下:

1、arm表示这是编译arm架构代码的编译器。

2、linux表示运行在linux环境下。

3、gnueabihf表示嵌入式二进制接口。

4、gcc表示是gcc工具。

最好的验证验证方法就是直接编译一个例程,我们就编译第一个裸机例程“1_leds”试试,裸机例程在开发板光盘中的路径为:1、程序源码->1、裸机例程-> 1_leds。在前面创建的linux文件夹下创建driver/board_driver文件夹,用来存放裸机例程,如图4.3.3.2所示:

将第一个裸机例程“1_leds”拷贝到board_driver中,然后执行make命令进行编译,如图4.3.3.3所示:


从图4.3.3.3可以看到例程“1_leds”编译成功了,编译生成了led.o和led.bin这两个文件,使用如下命令查看led.o文件信息:

file led.o

结果如图4.3.3.4所示:

从图4.3.3.4可以看到led.o是32位LSB 的ELF格式文件,目标机架构为ARM,说明我们的交叉编译器工作正常。

4.4 Source Insight软件安装和使用

4.4.1 Source Insight安装

Source Inisght是一款功能强大的代码编辑、阅读工具,工作在Windows下,我们可以用Source Insight来进行代码编写和阅读,编写完成以后将代码拷贝到Ubuntu中去编译即可。Source Insight下载地址为:https://www.sourceinsight.com/download/,如图4.4.1.1所示:

我们已经下载好并放到了开发板光盘中,路径为:3、软件->Source Insight 4.0->sourceinsight4096-setup.exe,双击“sourceinsight4096-setup.exe”即可开始安装,首先是图4.4.1.2所示欢迎界面:

点击图4.4.1.2中的“Next”按钮进入下一步,如图4.4.1.3所示:

选择图4.4.1.3中的“I accept the terms in the license adreement”,然后点击“Next”按钮,进入安装目录选择界面,根据自己的实际情况选择合适的安装目录,如图4.4.1.4所示:

选择好安装目录以后点击“Next”按钮,进入图4.4.1.5所示的准备安装界面:

点击图4.4.1.5中的“Install”按钮开始安装,等待安装完成,安装完成以后如图4.4.1.6所示:

点击图4.4.1.6中的“Finish”按钮退出安装,安装成功以后会在桌面上出现Source Insight 4.0的图标,如图4.4.1.7所示:

双击图标打开Source Inisght4.0,第一次打开的话会有Licese提示,如图4.4.1.8所示:

因为Source Insight4.0是个收费软件,所以是需要购买License的,如果没有购买的话可以免费体验30天,点击图4.4.1.9中的“确定”按钮,进入图4.4.1.10所示界面:

在图4.4.1.10中,如果你已经购买了licese那么就选择第一个,如果没有购买licese的话就选择第二个免费体验30天,选择好以后点击“Next”按钮,进入图4.4.1.11所示界面:

填写图4.4.1.11中的信息,然后点击“Next”,填写好以后一路“Next”下去就可以了,打开以后的默认界面如图4.4.1.12所示:

至此Source Insight安装完成。

4.4.2 Source Insight新建工程

1、新建工程

跟MDK、IAR一样,Source Insight是需要创建工程的,但是远没有MDK和IAR那么复杂,先新建一个工程文件夹,比如test,test用来存放工程所有文件,包括Source Insight工程文件和C语言源码文件。

注意!Source Insight的工程不能有中文路径!!!!!!

注意!Source Insight的工程不能有中文路径!!!!!!

注意!Source Insight的工程不能有中文路径!!!!!!

在刚刚创建的test文件夹中新建一个SI文件夹,用来存放Source Insight的所有工程文件,完成以后如图4.4.2.1所示:

工程文件夹准备好以后就可以创建工程了,点击Source Insight的:Project->New Project,如图4.4.2.2所示:

点击“New Project”后进入图4.4.2.3所示界面:

在图4.4.2.3中设置好工程名字和路径以后点击“OK”按钮,会进入另外一个设置界面,如图4.4.2.4所示:

在图4.4.2.4中我们一般不需要做任何修改,主要是检查一下路径是否正确,如果没问题的话就点击“OK”按钮即可,进入向工程添加文件界面,如图4.4.2.5所示:

如果你的工程文件夹已经有源文件了,那么就可以按照图4.4.2.5所示方法将所有的源文件添加到工程中,添加完成以后点击“Close”按钮关闭即可。新建工程完成以后Source Insight如图4.4.2.6所示:

我们发现图4.4.2.6好像和没有新建工程的界面没有区别?那是因为我们新建的工程是个空的工程,没有任何的源文件,所以看起来没啥变化。

2、新建源文件

我们在刚刚新建的工程里面新建两个文件:main.c和main.h,先新建main.c文件,点击:File->new,如图4.4.2.7所示:

设置c文件的名字为main.c,如图4.4.2.8所示:

文件命名完成以后点击“OK”按钮,文件创建完成,main.c只是创建了但是还没有保存,更没有添加到我们的工程中,所以我们点击:File->Save,或者直接按下键盘上的“Ctrl+S”键来保存,保存界面如图4.4.2.9所示:

设置好图4.4.2.9中的保存路径以后点击“保存”按钮即可,保存以后会弹出一个对话框,询问你是否要将刚刚保存的C文件添加到工程中,如图4.4.2.10所示:

我们肯定要选择“是”了,要将main.c添加到工程中的,添加完成以后的Source Insight界面如图4.4.2.11所示:

在图4.4.2.11中可以看到我们正在操作main.c这个文件,当前工程只有main.c这一个文件,中间部分就是我们的代码编辑区,我们可以在里面写代码。同样的方法我们在新建一个main.h头文件,

3、编写代码

我们在工程中创建了main.c和main.h两个源文件,接下来在这两个文件中编写代码,在main.c和main.h中分别写入如下代码:

示例代码4.4.2.1 main.c文件代码

1 #include "main.h"

2 #include "stdio.h"

3

4void main(int argc,char*argv[])

5{

6 printf("this is a test file");

7}

8

示例代码4.4.2.2 main.h文件代码

9 #ifndef _MAIN_H

10 #define _MAIN_H

11

12

13 #endif

编写完成以后Source Insight界面如图4.4.2.12所示:

4、工程同步

代码编写完成以后需要对Source Insight做一次同步操作,同步的目的是为了可以进行函数跟踪,比如MDK中直接跳转到某个函数的定义处查看函数源码。同步的方法很简单,点击Project->Synchronize Files,如图4.4.2.13所示:

点击“Synchronize Files”以后打开同步对话框,如图4.4.2.14所示:

按照图4.4.2.14所示设置同步,设置好以后点击“Start”开始同步,等待同步完成,如果工程很小的话同步速度会很快!可能看不到同步的过程,如果工程比较大的话同步就会多花一点时间。

关于Source Insight的安装以及使用就讲解到这里,大家自行多练习几遍Source Insight创建工程和新建文件操作。

4.4.3 Source Insight解决中文乱码

第一次装好Source Insight,如果打开有中文的文件,可能中文显示会乱码,如图4.4.3.1所示:

这是因为编码方式没有选对,点击Options->Preferences…,如图4.4.3.2所示:

打开以后按照图4.4.3.3所示设置:

将文件编码改为GB2312以后中文显示就正常了,如果中文还是显示乱码的话那就试着将图4.4.3.3中的“Default line ending”改为“Unix(LF)”,将“Defaultencoding”改为“UTF8”,如图4.4.3.4所示:

这是因为Linux下是UTF-8编码的,如果你的工程是从Linux下拷贝出来的,那么肯定就要使用UTF8编码才能正常显示。中文正常显示如图4.4.3.5所示:


相关推荐

程序员: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像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: