本帖最后由 正点原子运营 于 2024-1-23 14:37 编辑
第四章 开发环境搭建 1)实验平台:正点原子 DFZU2EG_4EV MPSoC开发板
2) 章节摘自【正点原子】DFZU2EG_4EV MPSoC开发板之嵌入式Linux 驱动开发指南 V1.0
3)购买链接:https://detail.tmall.com/item.htm?id=692450874670
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz-MPSOC.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)Linux技术交流QQ群:887820935
要进行ZYNQ MPSoC开发肯定要先搭建好开发环境,我们在开始学习STM32的时候肯定需要安装一堆的软件,比如MDK、IAR、串口调试助手等等,这个就是STM32的开发环境搭建。同样的,要想在Ubuntu下进行ZYNQ MPSoC开发也需要安装一些软件,也就是网上说的开发环境搭建,环境搭建好以后我们就可以进行开发了。环境搭建分为Ubuntu和Windows,因为我们最熟悉Windows,所以代码编写、查找资料啥的肯定是在Windows下进行的。但是Linux开发又必须在Ubuntu下进行,所以还需要搭建Ubuntu下的开发环境。本章我们就分为Ubuntu和Windows,讲解这两种操作系统下的环境搭建。
1.1 Ubuntu和Windows文件互传在开发的过程中会频繁的在Windows和Ubuntu下进行文件传输,比如在Windwos下进行代码编写,然后将编写好的代码拿到Ubuntu下进行编译。Windows和Ubuntu下的文件互传我们需要使用FTP服务,设置方法如下: 1、开启Ubuntu下的FTP服务 打开Ubuntu的终端窗口,然后执行如下命令来安装FTP服务: - sudo apt-get install vsftpd
复制代码等待软件自动安装,安装完成以后使用如下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客户端安装 我们已经下载好FileZilla并放到开发板光盘中了,路径为: 开发板资料盘(A盘) /6_软件资料/1_软件/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所示,其中左边就是Windows文件目录,右边是Ubuntu文件目录,默认进入用户根目录下(比如我电脑的“/home/zuozhongkai”)。但是注意观察在图4.1.8中Ubuntu文件目录下的中文目录都是乱码的,这是因为编码方式没有选对,先断开连接,点击:服务器(S)->断开连接,然后打开站点管理器,选中要设置的站点“Ubuntu”,选择“字符集”,设置如图4.1.9所示。 按照图4.1.9设置好字符集以后重新连接到FTP服务器上,重新链接到FTP服务器以后Ubuntu下的文件目录中文显示就正常了,如图4.1.10所示: 图 4.1.10 Ubuntu下文件目录中文显示正常 如果要将Windows下的文件或文件夹拷贝到Ubuntu中,只需要在图4.1.10中左侧的Windows区域选中要拷贝的文件或者文件夹,然后直接拖到右侧的Ubuntu中指定的目录即可。将Ubuntu中的文件或者文件夹拷贝到Windows中也是直接拖放。
1.2 Ubuntu和Windows文件本地共享对于在Windows上安装虚拟机软件,在虚拟机软件中运行Ubuntu系统这类场景, Ubuntu和Windows文件互传可以使用本地共享的方式。这种共享的方式极大的免除了不同系统文件之间的文件复制和磁盘空间的双重占用。下面笔者将介绍如何使用Vmware虚拟机来实现Ubuntu和Windows文件之间的共享。 注:请先完成1.4小节安装Vmware Tools的内容,因为本小节是基于1.4小节的。 首先在Vmware中启动Ubuntu系统,然后在Vmware的菜单栏中,选择“设置(S)”,如下图所示: 在弹出的菜单中,选择“选项”,在该界面中,单击“共享文件夹”,在右边界面中选择“总是启用(E)”,如下图所示: 现在我们需要添加共享的文件夹了。这里我们在Windows的G盘里新建一个名为“share”的文件夹,如图 4.2.3所示。这个文件夹就是以后我们用来在Windows和Ubuntu系统之间共享文件的地方。当然了,任何一个文件夹都是可以的,读者可以按自己的实际情况选择。 图 4.2.3 新建用于共享的文件夹“share” 现在我们单击图中的“添加(A)…”按钮,弹出下图所示界面 直接点击“下一步(N)->”,进入下图所示界面: 点击“浏览(R)…”,选择我们刚才新建的share文件夹,选择好以后点击确定。上图的名称此处保持默认share,按个人喜好可以修改。点击“下一步(N)->”,进入下图所示界面: 默认勾选“启用此共享”,如果不想该文件夹内的内容被修改,可以勾选只读,此处我们不勾选“只读”,点击“完成”按钮。 现在如果我们需要向Ubuntu系统传文件,就可以直接将该文件复制到share目录就可以了。以后我们需要向Ubuntu系统传递的文件就都放在share文件夹下。那Ubuntu如何访问share文件夹呢? 该文件夹在Ubuntu系统中对应的是/mnt/hgfs/share/目录,我们在终端中输入命令: 如下图所示:可以看到该文件夹为空。如果需要从Ubuntu系统向Windows传递文件,可以用cp命令或mv命令文件到该目录。 图 4.2.7 共享文件夹对应的Ubuntu目录/mnt/hgfs/share/ 别忘了,在1.4小节安装Vmware Tools中我们还启用了拖曳和复制功能,可以用鼠标直接将文件或文件夹从Windows拖到Ubuntu或从Ubuntu拖到Windows中。复制功能则可用于在Ubuntu和Windows中共享粘贴板。
1.3 Ubuntu系统搭建tftp服务器TFTP作为一种简单的文件传输协议,在嵌入式开发中会经常使用到,而且后面我们在安装Petalinux工具时也会提示需要tftp服务,所以我们需要在Ubuntu上搭建TFTP服务器。需要安装tftp-hpa(客户端软件包,如果不用可不装)和tftpd-hpa软件包,命令如下: - sudo apt install tftp-hpa tftpd-hpa
复制代码TFTP需要一个文件夹来存放文件,我们在根目录下新建一个/tftpboot目录做为TFTP文件存储目录,之所以使用该目录是因为后面使用的Petalinux工具默认使用该目录,省得我们每次建Petalinux工程的时候手动修改。创建/tftpboot目录命令如下: - sudo mkdir -p /tftpboot
- sudo chmod 777 /tftpboot
复制代码这样笔者就在电脑上创建了一个名为tftpboot的目录(文件夹),路径为/tftpboot。需要注意的是我们要给tftpboot文件夹权限,否则的话后面在使用过程中会遇到问题,所以使用了chmod 777命令。 最后配置tftp。打开/etc/default/tftpd-hpa文件,将其内容修改如下: - 示例代码/etc/default/tftpd-hpa文件内容
- 1 # /etc/default/tftpd-hpa
- 2
- 3 TFTP_USERNAME="tftp"
- 4 TFTP_DIRECTORY="/tftpboot"
- 5 TFTP_ADDRESS=":69"
- 6 TFTP_OPTIONS="-l-c -s"
复制代码 TFTP_DIRECTORY就是我们上面创建的/tftpboot文件夹目录,以后我们就将所有需要通过TFTP传输的文件都放到该文件夹里面。 最后输入如下命令,重启tftp服务器: - sudo service tftpd-hpa restart
复制代码至此,tftp服务器就已经搭建好了。
1.4 Ubuntu下NFS和SSH服务开启
1.4.1 NFS服务开启后面进行Linux驱动开发的时候需要NFS启动,因此要先安装并开启Ubuntu中的NFS服务,使用如下命令安装NFS服务: - sudo apt install nfs-kernel-server
复制代码等待安装完成。安装完成以后在用户根目录下创建一个名为“workspace/nfs”的文件夹,命令如下: - cd
- mkdir -p workspace/nfs
- cd workspace/nfs
- pwd
复制代码结果如下图所示: 以后所有需要使用nfs的东西都放到这个“nfs”文件夹里面。 上面创建的nfs文件夹供nfs服务器使用,以后我们可以在开发板上通过网络文件系统来访问nfs文件夹。 使用前需要先配置nfs。NFS允许挂载的目录及权限在文件/etc/exports中进行定义,使用如下命令打开nfs配置文件/etc/exports: 打开/etc/exports以后在后面添加如下所示内容: - /home/cx/workspace/nfs *(rw,sync,no_root_squash)
复制代码/home/cx/workspace/nfs是要刚才创建的nfs的目录,也就是上面命令pwd输出的内容,*代表允许所有的网络段访问,rw是可读写权限,sync是文件同步写入存储器,no_root_squash是nfs客户端分享目录使用者的权限。如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限。 添加完成以后的/etc/exports如下图所示: 重启NFS服务,使用如下命令: - sudo systemctl start nfs-kernel-server.service
复制代码此时可以运行以下命令来显示共享的目录: 在nfs运行的过程中,修改了/etc/exports配置文件,可以使用exportfs命令使改动生效,具体命令: 1.4.2 SSH服务开启开启Ubuntu的SSH服务以后我们就可以在Windwos下使用终端软件登陆到Ubuntu,比如使用SecureCRT,Ubuntu下使用如下命令开启SSH服务: - sudo apt install openssh-server
复制代码上述命令安装ssh服务,ssh的配置文件为/etc/ssh/sshd_config,使用默认配置即可。
1.5 Source Insight软件安装和使用
1.5.1 Source Insight安装 图 4.5.1 Source Insight下载界面 我们已经下载好并放到了开发板光盘中,路径为:开发板资料盘(A盘)/6_软件资料/1_软件/Source Insight4.0->sourceinsight4096-setup.exe,双击“sourceinsight4096-setup.exe”即可开始安装,首先是下图所示的欢迎界面: 图4.5.2 Souce Insight 4.0安装欢迎界面 点击图 4.5.2中的“Next”按钮进入下一步,如图 4.5.3所示: 选择图 4.5.3中的“I accept the terms in the license adreement”,然后点击“Next”按钮,进入安装目录选择界面,根据自己的实际情况选择合适的安装目录,如下图所示: 选择好安装目录以后点击“Next”按钮,进入图 4.5.5所示的准备安装界面: 点击图 4.5.5中的“Install”按钮开始安装,等待安装完成,安装完成以后如下图所示: 点击图 4.5.6中的“Finish”按钮退出安装,安装成功以后会在桌面上出现Source Insight 4.0的图标,如图 4.5.7所示: 图4.5.7 Sourc Insight 4.0图标 双击图标打开Source Inisght 4.0,第一次打开的话会有Licese提示,如下图所示: 因为Source Insight 4.0是个收费软件,所以是需要购买License的,如果没有购买的话可以免费体验30天,点击图 4.5.8中的“确定”按钮,进入下图所示界面: 在图 4.5.9中,如果你已经购买了licese那么就选择第一个,如果没有购买licese的话就选择第二个免费体验30天,选择好以后点击“Next”按钮,进入下图所示界面: 填写图 4.5.10中的信息,然后点击“Next”,填写好以后一路“Next”下去就可以了,打开以后的默认界面如图 4.5.11所示: 图 4.5.11 Source Insight默认界面 至此Source Insight安装完成。
1.5.2 Source Insight新建工程1、新建工程 跟MDK、IAR一样,Source Insight是需要创建工程的,但是远没有MDK和IAR那么复杂,先新建一个工程文件夹,比如test,test用来存放工程所有文件,包括SourceInsight工程文件和C语言源码文件。 注意!Source Insight的工程不能有中文路径! 在刚刚创建的test文件夹中新建一个SI文件夹,用来存放Source Insight的所有工程文件,完成以后如图 4.5.12所示: 工程文件夹准备好以后就可以创建工程了,点击Source Insight的:Project->New Project,如下图所示: 点击“New Project”后进入图 4.5.14所示界面: 在上图中设置好工程名字和路径以后点击“OK”按钮,会进入另外一个设置界面,如下图所示: 在上图中我们一般不需要做任何修改,主要是检查一下路径是否正确,如果没问题的话就点击“OK”按钮即可,进入向工程添加文件界面,如下图所示: 如果你的工程文件夹已经有源文件了,那么就可以按照上图所示方法将所有的源文件添加到工程中,添加完成以后点击“Close”按钮关闭即可。新建工程完成以后Source Insight如下图所示: 我们发现上图好像和没有新建工程的界面没有区别?那是因为我们新建的工程是个空的工程,没有任何的源文件,所以看起来没啥变化。 2、新建源文件 我们在刚刚新建的工程里面新建两个文件:main.c和main.h,先新建main.c文件,点击:File->new,如下图所示: 设置c文件的名字为main.c,如下图所示: 文件命名完成以后点击“OK”按钮,文件创建完成,main.c只是创建了但是还没有保存,更没有添加到我们的工程中,所以我们点击:File->Save,或者直接按下键盘上的“Ctrl+S”键来保存,保存界面如下图所示: 设置好上图中的保存路径以后点击“保存”按钮即可,保存以后会弹出一个对话框,询问你是否要将刚刚保存的C文件添加到工程中,如下图所示: 我们肯定要选择“是”了,要将main.c添加到工程中的,添加完成以后的Source Insight界面如下图所示: 在上图中可以看到我们正在操作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
- 4 void main(int argc, char *argv[])
- 5 {
- 6 printf("thisis 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、工程同步 代码编写完成以后需要对Source Insight做一次同步操作,同步的目的是为了可以进行函数跟踪,比如MDK中直接跳转到某个函数的定义处查看函数源码。同步的方法很简单,点击Project->Synchronize Files,如下图所示: 点击“Synchronize Files”以后打开同步对话框,如下图所示: 按照上图所示设置同步,设置好以后点击“Start”开始同步,等待同步完成,如果工程很小的话同步速度会很快!可能看不到同步的过程,如果工程比较大的话同步就会多花一点时间。 关于Source Insight的安装以及使用就讲解到这里,大家自行多练习几遍Source Insight创建工程和新建文件操作。
1.5.3 Source Insight解决中文乱码第一次装好Source Insight,如果打开有中文的文件,可能中文显示会乱码,如下图所示: 这是因为编码方式没有选对,点击Options->references…,如下图所示: 图 4.5.27 Preferences对话框打开方式 打开以后按照下图所示设置: 将文件编码改为GB2312以后中文显示就正常了,如果中文还是显示乱码的话那就试着将下图中的“Default line ending”改为“Unix(LF)”,将“Default encoding”改为“UTF8”,如下图所示: 这是因为Linux下是UTF-8编码的,如果你的工程是从Linux下拷贝出来的,那么肯定就要使用UTF8编码才能正常显示。中文正常显示如下图所示: |