ARM+linux开发环境搭建手册.docx
- 文档编号:29868354
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:49
- 大小:1.58MB
ARM+linux开发环境搭建手册.docx
《ARM+linux开发环境搭建手册.docx》由会员分享,可在线阅读,更多相关《ARM+linux开发环境搭建手册.docx(49页珍藏版)》请在冰豆网上搜索。
ARM+linux开发环境搭建手册
第1章嵌入式Linux开发环境搭建
1.安装ubuntu8.04
安装ubuntu8.04的宿主机,其性能要求如下:
ØCPU:
高于奔腾500M,推荐高于赛扬1.7
Ø内存:
大于256M,推荐高于512M;
Ø硬盘:
大于20G,推荐高于40G。
现在大家使用的主机基本都能达到这个配置,当然,如果你的宿主机有更好的配置,也可以考虑先在你的宿主机上安装Windows系统,然后在Windows系统中安装一个虚拟机工作站,再在虚拟机工作站上安装Linux系统。
这样就可以在Windows中使用Linux,避免在两个系统间切换时反复地关机、重启。
直接在宿主机上安装Ubuntu8.04和在宿主机的虚拟机工作站上安装Ubuntu8.04只是两种不同的安装方式,对用户使用Linux操作系统几乎没有影响,开发过程也完全一样。
下面介绍一下虚拟机的安装方式。
1.1在Windows中安装虚拟机
首先安装虚拟机工作站,笔者使用的虚拟机工作站是VMware_WorkStation_6.5,安装文件在vmware&ubuntu文件夹下,也可以去VMware的官方网站()下载该工具,它的安装过程很简单,就不多费笔墨了。
下面主要介绍一下在虚拟机工作站中新建一个虚拟机的以及在虚拟机上安装Linux系统的过程。
先准备好安装镜像文件,在vmware&ubuntu文件夹下,如果没有,可以去网上下载,下载地址为。
(1)首先运行虚拟机工作站,如图1-1。
(2)点击NewVirtualMachine的图标,出现图1-2所示界面。
1-1虚拟机工作站1-2新建虚拟机向导
(3)选择Typical,点击Next,在出现的界面(图1-3)中点击Browse,选中所要安装系统的光盘映像文件(ubuntu-8.04-alternate-i386.iso)。
(4)点击Next,设置用户名和密码,如图1-4所示。
1-3选择安装映像1-4设置用户名和密码
(5)点击Next,设置虚拟机的名称,默认为Ubuntu,你可以根据自己的喜好设置,再点击Browse,设置Ubuntu的安装目录,比如,笔者将Ubuntu安装在D盘的“Heima_Ubuntu”文件夹下。
要确保该目录所在的磁盘有足够的空间(最好8G以上)来容纳我们新安装的Ubuntu系统。
如图1-5所示。
(6)点击Next,设置虚拟机占用的最大硬盘空间,默认8G,如果你的主机硬盘容量够大,可以适当设大一点,免得开发过程受硬盘空间限制,比如后面编译QT的时候需要好几G的空间,如果空间不够,可能会出错。
笔者就设了20G,如图1-6所示。
1-5设置安装目录1-6设置虚拟机硬盘最大容量
(7)点击Next,进入1-7所示的界面,可以看到,现在的硬盘容量是20G,默认的内存大小是512M,网络连接方式选择的是NAT,还有CD/DVD驱动,软盘,USB控制器等,如果不需要更改这些配置或者增加其他的硬件设备,到这一步就可以点击“Finish”了。
1-7配置向导完成界面1-8内存配置
如果你还要更改配置(如改变内存大小),或者增加一个硬件设备(如串口),那就点击“CustomizeHardware”,这时会出现如图1-8所示的配置界面,笔者将各部分的配置截图说明如下:
Ø内存配置
内存配成512M差不多了,不过要配得比你主机的内存小,笔者主机的内存是2G,这里配1G左右。
如图1-8所示。
Ø在虚拟机的光驱中加入虚拟机系统的安装映像
在虚拟机的光驱中加入虚拟机系统的安装映像就和在物理主机的光驱中插入系统安装光盘是一个概念。
笔者安装的Linux系统是Ubuntu-8.04(映像ubuntu-8.04-alternate-i386.iso),如果你想安装其他版本的Ubuntu或者其他的Linux系统,需要下载这些系统的安装映像文件。
这一步还要注意勾上“Connectatpoweron”选项,如图1-9所示。
1-9安装映像配置1-10网络连接方式配置
Ø配置虚拟机的网络连接方式
网络连接方式共有四种方式可以选择,先选择NAT,如图1-10所示。
至于这几种方式具体怎么配置,用在什么样的场合,笔者在后面会详细介绍。
Ø增加一个串口设备
点击“Add...”选项,然后选中"SerialPort",点击“Next”,选中“Usephysicalserialportonthehost”选项(图1-11),再点击“Next”,在Physicalserialport“那一栏选择“COM1”,点击“Finish”(图1-12)。
就为虚拟机增加了一个串口设备,这个设备使得虚拟机系统可以使用宿主机的串口1与目标机进行通信。
1-11串口配置11-12串口配置2
Ø其他的几项配置(USBController、Display、Processors)一般都不用更改,点击图1-7界面中的“Finish”完成新建虚拟机的过程。
就可以进入Linux系统的安装了。
1.2在虚拟机上安装Ubuntu
(1)进入Ubuntu的安装过程,首先出现的是选择语言的界面。
在该界面上点击一下鼠标,就可以通过键盘的“↓”和“↑”键进行语言的选择,默认为English,我建议你也选用English。
选中以后按Enter键就会进入下一步(以后都是按Enter键确认当前选项并进入下一步),这时可能你会发现你的鼠标不见了,不用慌,同时按下Ctrl和Alt就出来了。
(2)接着选择国家,没有China,就选HongKong吧。
下一步是问你要不要做键盘检测,选“NO”,不做,没关系的。
然后连续选择两个USA,就会进入CD-ROM的检测,如果检测不到CD-ROM中的映像文件,就会提示IncorrectCD-ROMdetected(如图1-13),这时你需要回过头去检查一下你的CD-ROM驱动器中的映像文件是否正确或者映像文件是否存在。
如果能检测成功就顺利进入下一步。
1-13检测CD-ROM失败
(3)CD-ROM检测完以后就开始检测网络硬件及配置,接下来的几个步骤都可以默认,包括HostName的设置(如图1-14),直到进入磁盘分区的界面(如图1-15)。
1-14配置主机在网络中的名字
(4)开始进行磁盘分区(Partitiondisks),这里的磁盘就是虚拟机的磁盘,也就是下图显示的SCSI3(0,0,0)(sda),其容量在前面已经设置好了。
1-15磁盘分区
选中图1-15中“SCSI3(0,0,0)(sda)……”那一行,按Enter键,就会出现一个对话框,提示你是不是要在该磁盘上创建一个空的分区。
选择“YES”,就会出现如图1-16所示的界面,表示在虚拟机的磁盘上新建了一个自由的空间。
1-16在磁盘上新建一个自由空间
选中“……FREESPACE”那行,按Enter键,就会在新建的空间上进行分区,用自动分区的方式就可以了,分区完了以后选择“Finishpartitioningrandwritechangestodisk”,将更改写入磁盘。
具体的安装截图如图1-17和图1-18所示。
1-17自动分区
1-18完成分区并写入磁盘
(5)接着就是“Installingthebasesystem”。
设置用户名和密码,相信大家都会了。
紧跟着会弹出一个要求设置代理服务器的对话框,先空着不设。
再接下去就是安装系统软件了。
这些过程都是自动的,不用管,只是需要等二十分钟左右,整个系统就安装完成了。
1-19系统安装过程
(6)重启系统,如果出现熟悉的登录对话框,恭喜你,Ubuntu安装成功!
输入用户名和密码,登入Ubuntu,开始你的Ubuntu开发之旅吧。
注:
系统安装过程可能有些步骤和上面不同,关系不大,安装成功能启动就行。
2.宿主机Linux系统中基本环境的配置与安装
Linux操作系统安装完以后,我们面对的还是一个没有安装相关开发工具的空系统。
所以我们首先需要配置系统的网络(包括IP地址、网关、DNS服务器等)、更新系统、安装一些基本的工具(包括一些编译工具,调试工具、程序库等),为我们后续的开发做准备。
另外,在进行项目开发之前,一个比较好的习惯是为我们的项目规划一个工作空间,所以这一小节还涉及到项目工作空间的规划。
笔者接下来将一一介绍。
2.1网络配置
正确配置Linux系统的网络,以实现Linux系统接入Internet,下载开发过程中需要的各种开发工具的源码包或者其他相关资源。
虚拟机有四种网络连接方式:
Bridged(网络桥接)方式,NAT方式,Host-only方式,以及Custom方式。
一般来说,后面两种方式用户很少用到,这里只介绍一下前两种方式的的使用场合和配置方法。
不管是哪一种方式,都会涉及到3方面的设置:
主机系统(本书对应Windows系统),虚拟机,虚拟系统(本书对应Linux系统)。
(1)Bridged方式
如果你的真实主机在一个以太网中,这种方法是将你的虚拟机接入网络最简单的方法。
虚拟机就像一台新增加的、与真实主机有着同等物理地位的电脑,桥接模式可以享受所有可用的服务;包括文件服务、打印服务等等。
当虚拟机配置成这种方式时,要实现Linux系统连入Internet,需要设置Linux系统的IP和Windows系统的IP在同一个网段,比如Windows系统的IP为10.62.85.1,那么Linux系统的IP就要设置成10.62.85.x(x=2~254)。
具体操作包括以下几步:
Ø设置Windows的IP地址为10.62.85.1。
Ø设置虚拟机的网络连接方式为Bridged,如图2-1所示。
Ø在Linux系统的启动栏中,执行“System”—>“Administration”—>“Network”在弹出的“NetworkSettings”对话框中,选中“Wiredconnection”项,然后点击“Properities”,在弹出的“eth0properities”对话框中设置Ubuntu的IP地址为10.62.85.2,子网掩码和网关的设置与Windows下面的一样。
如图2-2。
2-1虚拟机中选择Bridged连接方式2-2配置IP,子网掩码,网关
这样设置以后在Linux中启动浏览器,看看是不是可以连入Internet,如果不行,可能
还需要配置代理服务器(如果你的Windows系统是通过代理服务器连入Internet的),执行“System”—>“preferrences”—>“NetworkProxy”,设置代理服务器的IP地址及端口。
(2)NAT方式
NAT(networkaddresstranslation)模式可以方便地使虚拟机连接到公网,代价是桥接模式下的其他功能都不能享用。
使用这种模式的配置相当简单,只要真实主机连接到Internet,将虚拟机的网络连接方式设置为NAT(图2-3),然后将Linux系统中的网络设置为DHCP方式(图2-4),这时Linux系统就可以接入Internet了。
如果你的Windows系统是通过代理服务器连入Internet的,那么同样要配置代理服务器。
2-3虚拟机中选择NAT连接方式2-4配置DHCP模式
在嵌入式Linux开发中,如果宿主机Linux系统需要连接Internet,那么可以按照上面介绍的方法将虚拟机设置成Bridged方式或者NAT方式;但是,如果要实现宿主机Linux系统和目标机进行网络通信的话,必须将虚拟机的网络连接方式配置成Bridged,然后设置目标机的IP与宿主机上Linux系统的IP在同一个网段。
如果有网络环境,则先设成NAT连接方式,使unbutu可以访问internet就行了,以方便我们后面通过网络安装软件。
2.2更新Linux操作系统
配置好Linux系统的网络,就可以对系统进行更新,获取最新的软件列表并安装。
这部分内容可以参考Ubuntu官方网站的“Ubuntu8.04LTS速配指南”,网址是:
“”。
这个速配指南关于怎么设置系统更新源、更新软件列表以及安装更新都写得简单明了。
2.3安装一些相关工具和程序库
在宿主机上安装bison(语法分析器)、flex(词法分析器)、build-essential(C/C++编译环境,包括编译C/C++程序需要的软件包,相关工具等)、patch(linux下的补丁工具)、libncurses5-dev库(调用ncurses图形库时需要用的,比如,在执行makemenuconfig时必须安装这个库),安装命令如下:
sudoapt-getinstallbison
sudoapt-getinstallflex
sudoapt-getinstallbuild-essential
sudoapt-getinstallpatch
sudoapt-getinstalllibncurses5-dev
注:
Ubuntu中安装软件的方法:
当我们安装软件时,通过sources.list的引导,可以自动从Ubuntu的软件库中下载需要的软件,所以这个功能非常重要。
在这里我们按如下方法更新软件源:
(1)修改sources.list
sudogedit/etc/apt/sources.list
可以在其中添加源。
(2)执行以下语句使更新生效
sudoapt-getupdate(此操作后会更新网络资源)
更新成功后,我们就能通过sudoapt-getinstallsoftwarename安装你需要的软件了(softwarename为你要安装的软件名),不过这需要Ubuntu能正常联网。
如果电脑不能联网,则只能使用离线安装软件的方法。
这个方法也可以用来备份软件,这样重装系统要再安装软件时,就不用再去网上下载软件包了。
方法如下:
每一次install时系统下载的软件包,包括各个软件所依赖的包都会保存在/var/cache/apt/archives/目录下,这里已经把需要的软件包都放在了“需网络安装的软件deb包”这个文件夹下。
1、新建立一个目录,用于放所有下载的软件包,另外建立一个目录用于存放Packages.gz包,比如:
mkdir-p/home/yegen/Ubuntu/Pakcages
mkdir-p/home/yegen/Ubuntu/dists/hardy/main/binary-i386
其中的binary-i386根据自己的系统类型会有所变化,比如binary-amd64等等,根据自己的机器酌情更改。
2、复制文件到前面建立的文件夹下:
sudocp软件包所在的源目录/*/home/yegen/Ubuntu/Pakcages
如果中间有经过window来拷贝包文件,文件名中的%会变成%25,原因未知。
解决方法就是使用mv命令一个一个修改回来或者是不是可以不经过windows来复制文件?
3、生成Packages.gz包,里面记录了Pakcages文件夹下面的软件包信息,包括依赖信息。
Ubuntu目录下使用命令:
dpkg-scanpackagesPackages|gzip>dists/hardy/main/binary-i386/Packages.gz
命令软件包所在目录生成指定文件
如果本地不识别dpkg-scanpackages命令,可能需要先在有网络的计算机中在用新立得安装dpkg,生成了Packages.gz后再拷贝到目标机。
这步主要的目的就是得到Packages.gz这个文件。
4、加本地源
sudogedit/etc/apt/sources.list
将其他的网络源都屏蔽掉。
加入debhardymain,注意,这里只是我电脑上的路径,请依实际位置修改。
如果出错,请按照系统的出错提示进行相应设置。
5、设置完成
完成以上设置和文件复制之后,就可以开始正常使用本地的源了和使用网络上的源一样操作。
sudoapt-getupdate
sudoapt-getdist-upgrade
sudoapt-getinstallXXX
这样就完成了本地源的手动配置。
2.4实际项目工作空间目录的安排
在为目标机开发及定制软件的过程中,最好在宿主机上规划一个综合的、容易使用的目录结构,组织各种软件包和项目组件,表2-1是一个目录安排方式范例,你可以自行修改此目录结构以符合你的需要。
内容
bootloader
目标板的引导加载程序
source
存放构建交叉编译工具链所需要用到的软件源码包
debugtool
调试工具以及所有相关套件
doc
项目将会用到的所有文件
image
准备使用在目标板上的引导加载程序和内核的二进制映像,以及根文件系统
kernel
存放内核
project
项目配置文件等
rootfs
目标系统的内核在执行期间所看到的根文件系统
sysapp
存放系统应用程序
tmp
存放临时文件
crosstool
存放交叉编译工具链以及C程序库
表2-1本书范例所用的项目目录安排方式
这个项目工作区要放在何处,由个人自己决定,不过最好不要放在/usr或/usr/local等目录下。
我将它放在我的用户主目录(/home/yegen)下,当然在用户主目录下,为了与其他项目的目录分开,我新建了一个子目录(workspace)来存放该工作空间,以下是我的目录结构:
ls-l/home/yegen/workspace
total44
drwxr-xr-x2yegenyegen40962009-08-0122:
21bootloader
drwxr-xr-x2yegenyegen40962009-08-0122:
21crosstool
drwxr-xr-x2yegenyegen40962009-08-0122:
21debugtool
drwxr-xr-x2yegenyegen40962009-08-0122:
21doc
drwxr-xr-x2yegenyegen40962009-08-0122:
21image
drwxr-xr-x2yegenyegen40962009-08-0122:
21kernel
drwxr-xr-x2yegenyegen40962009-08-0122:
21project
drwxr-xr-x2yegenyegen40962009-08-0122:
21rootfs
drwxr-xr-x2yegenyegen40962009-08-0122:
21source
drwxr-xr-x2yegenyegen40962009-08-0122:
21sysapp
drwxr-xr-x2yegenyegen40962009-08-0122:
21tmp
如何创建这些目录?
我相信只要接触过linux的读者对于mkdir这个命令一定不陌生。
举例来说,我要在我/home/yegen目录下面创建workspace目录,只需要打开Linux的终端,敲入以下命令:
mkdir/home/yegen/workspace
2.5配置Linux下的minicom
minicom是Linux下的一个串口调试工具,与Windows下的超级终端功能相似。
在以后的章节当中经常要用到minicom来查看键盘输入信息和调试输出信息。
本小节将介绍minicom的安装和配置过程,详细过程如下:
(1)安装minicom。
sudoapt-getinstallminicom
(2)运行minicom。
sudominicom
出现如图2-5所示的界面:
图2-5minicom配置前的界面
(3)先按下Ctrl+A,放开,再按O,出现配置菜单。
图2-6进入配置菜单
(4)选择Serialportsetup项,出现如下界面:
图2-7配置前的界面
(5)键入“A”,可修改串口在Linux中对应的设备,串口COM1对应ttyS0,COM2对应ttyS1,这一项配置完以后敲回车键退出,可以进入其他项的配置;键入“E”,设置为1152008N1(波特率115200,奇偶校验无,停止位1),这是根据Super-ARM的参数配置的,当然,不同的开发板参数可能不一样,要根据自己的情况来定,该项配置完后回车;分别键入“F”“G”,配置硬/软件流控制,都选NO。
所有项配置完成后的界面如下图:
图2-8配置后的界面
(6)在确认配置正确之后,敲回车键进入配置菜单的界面,将其保存为默认配置(即选择savesetupasdfl项)。
如图2-9所示。
图2-9保存为默认配置
(7)保存成功,出现如下图界面。
图2-10配置被保存
(8)选择Exit项,返回上级界面;如图2-11:
图2-11Exit选项
(9)Ctrl+A,放开,再按Q,退出minicom,在出现的界面中选择“Yes”,保存设置。
图2-12退出minicom
(10)重启minicom,配置生效,如图2-13:
图2-13配置生效后重启minicom
(11)用串口线将宿主机和目标机相连,如果此时目标机向宿主机发送数据,就会在minicom中显示。
比如下图是笔者在开发过程中截取的一张图片,该图片上显示的是从目标机发送到宿主机的信息。
当然读者现在面对的目标机可能还是个空板子,就算把线接上了,也肯定不会有信息传到主机上来,没关系,只要你跟着笔者一步步走下去,总有一天你会看到的。
图2-14在minicom中显示目标板发送过来的信息
2.6配置Linux下的TFTP服务器
TFTP协议是简单文件传输协议,基于UDP协议而实现,它可以看作是一个FTP协议的简化版本,与FTP协议相比,它的最大区别在于没有用户管理的功能。
它的传输速度快,可以通过防火墙,使用方便快捷,因此在嵌入式的文件传输中广泛使用。
同FTP一样,TFTP分为客户端和服务器端两种。
通常,首先在宿主机上安装并开启TFTP服务器端服务,设置好TFTP的根目录内容(也就是供客户端下载的文件),接着,在目标机上开启TFTP的客户端程序。
这样,把目标机和宿主机相连,并且配置好IP,子网掩码和默认网关之后,就可以通过TFTP协议传输可执行文件了。
下面介绍如何在Linux(针对Ubuntu8.04)下面安装配置以及使用TFTP服务器。
(1)安装tftpd(服务端),tftp(客户端),xinetd
sudoapt-getinstalltftpdt
(2)在Linux下,不管使用的是哪一种服务器端服务:
inetd或者xinetd,默认情况下TFTP服务是禁用的,所以要修改文件来开启服务。
在/etc/xinetd.d/下建立一个配置文件tftp,主要是设置TFTP服务器的根目录,开启服务。
sudogedit/etc/xinetd.d/tftp
在文件中输入以下内容:
servicetftp
{
socket_type=dgram
protocol=udp
wait=yes
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM linux 开发 环境 搭建 手册