当前位置:文档之家› 基于linux-ARM的QT环境搭建

基于linux-ARM的QT环境搭建

基于linux-ARM的QT环境搭建
基于linux-ARM的QT环境搭建

ARM开发之QT平台搭建

---基于Linux系统的ARM平台QT移植

第一部分:移植前述

现在ARM行业如火如荼,使用linux作为操作系统的也较多,本文只针对ARM和linux平台下的QT移植和程序测试做一翻详解,对于wince等系统不涉及。

ARM开发的话必须具备以下硬件或平台条件:

1.ARM硬件开发板,现在处理器用的多是ARM9或者ARM11

2.针对嵌入式行业的Linux系统内核,以及PC机上的Linux系统开发环境,比如Ubuntu,

Redhat,CentOs等

3.ARM软件开发环境,这个比较复杂多样。ARM开发无非是底层驱动移植和开发,以及

顶层的应用程序开发,还有相对应的各种调试。不管是开发还是调试,都要用到相对应的工具或软件。驱动开发的领域本文不涉及,而顶层应用程序开发的一个重要环节就是面向客户的图形界面开发,而图形界面开发嵌入式领域用的比较多的是QT。

Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。

4.应用程序在pc机上开发,完成后希望在ARM板上调试,以确认程序的正确性和完整性等,这时应该如何办呢?

这里面涉及的知识比较多,有:开发板引导启动文件Uboot;Linux内核镜像的烧写;

交叉编译;搭建QT开发环境;开发板与PC机Linux系统的NFS挂载连接;再就是QT 程序在线测试等。

上述中交叉编译之前的所有操作本文不涉及,读者如有不明之处请另找资料,本文意在构建一个QT开发环境,和使用开发板通过NFS挂载后的QT应用程序测试环境。

第二部分:QT移植具备条件

1.交叉编译器:版本较多,现在常用的是arm-linux-gcc-4.3.

2.或者arm-linux-gcc-4.1.2

2. QT版本:qt-embedded-linux-opensource-src-4.5.

3.tar.gz和

qt-x11-opensource-src-4.5.3.tar.gz,可以从QT官网上下载各种版本(注:开发QT的公司已被诺基亚公司收购)官网地址:https://www.doczj.com/doc/a56283934.html,/

2.触摸屏支持tslib

3.Linux系统上的一些编译工具或者库

说明:(1)交叉编译工具是在QT库安装时要用到它来编译,然后QT应用程序调试时需要要到它编译成ARM板上能运行的代码。

(2)qt-embedded-linux-opensource-src包含了支持最终到ARM开发板上运行的应用程序的库文件,而qt-x11-opensource-src则是为了能在PC机上进行针对ARM板环境的模拟程序调试,比如说没有开发板的时候,但又想验证能否在ARM板上运行,此时需要用到。

(3)tslib则是用来校准触摸屏用的,触摸数据最先由开发板上驱动程序得到,(驱动已经加载到内核中),然后传递给tslib,tslib将原始数据进行一定去抖,校准等工作,然后把数据传给顶层应用程序,我是这样理解的,不知道正确否。

第三部分:QT移植详情

注:此移植过程在Ubuntu9.04系统下完成

带#开头的表示终端运行的命令

带//开头的表示注释

红色字体表示应该特别注意的地方

我的移植环境

1.开发板:友坚恒天公司的s3c6410

2.PC机系统windos xp

3.PC机上装Vware虚拟机系统:Ubuntu9.04

4.交叉编译工具:arm920t-eabi-4.1.2.tar.gz

5.Qt版本:qt-embedded-linux-opensource-src-4.5.3.tar.gz

6.触摸屏校准:tslib1.4.tar.gz

第一步:安装交叉编译工具(解压就行,然后设置一个环境变量)

先将arm920t-eabi-4.1.2.tar.gz拷贝到/home/resource下,然后解压到根目录

#cd /home

#mkdir resource

# cd /home/resource

# tar zxvf arm920t-eabi-4.1.2.tar.gz –C /

注:zxvf是解压参数,-C是改变解压路径,/表示到根目录

完成后在它的安装路径是:/opt/toolchains/arm920teabi/,可以查看到。

为了后续QT安装能够调用arm-linux-gcc等命令,需要设置环境变量

# gedit /etc/bash.bashrc (手动以记事本打开一样的,后续同理)

//添加linux系统环境变量

在该文件的末尾加上

export PATH=$PATH:/opt/toolchains/arm920teabi/bin

保存关闭

# source /etc/bash.bashrc

#arm-linux-gcc –v //查看编译器版本

注:

1.至于安装路径选择哪里,可以自己定,但是之后的环境变量设置就一定要跟你的安装路径对应好。就比如说我的是/opt/toolchains/arm920teabi/,在该目录下有一个bin目录,里面你可以查看到一些arm-linux-gcc等命令,那如果你更换了路径,则一样要找到那个bin目录,然后设置环境变量。

若能通过arm-linux-gcc –v命令查看到该交叉编译器的版本,则表示安装完成,并且环境变量设置成功。

2.不同的交叉编译工具默认的安装路径是不同的,比如说arm-linux-gcc-4.

3.2的默认安装是在/usr/local/arm/下,这个自己知道就行,关键是环境变量要设好。

第二步:安装tslib(解压并安装,然后设置配置文件)

注:此步需要一些工具,ubuntu 下需要安装

automake、autoconf、libtool,可以执行下面语句安装

#apt-get install automake autoconf libtool

注:tslib是支持触摸品用的,触摸屏最终能够使用的条件是:

a.硬件支持触摸屏

b.内核已经加载触摸屏驱动,可以在nfs挂载的方式下用命令cat /dev/input/event0

来测试是是否加载了驱动,如果已经加载,这个时候你点击触摸屏终端是有反应的(出现一些乱码)。前面的命令中event0是对应触摸屏的硬件设备号,你可能不是event0,但一般用event0或者event1

c.有支持触摸屏校准的库或者程序,用的多的是tslib,另外linuxtp好像也可以。。。

d.应用程序支持触摸屏

将tslib1.4.tar.gz拷贝到/home/resource下,然后解压到/home目录下

# cd /home/

#tar zxvf ./resource/tslib1.4.tar.gz //解压到/home

(不行的话使用#tar zxvf ./resource/tslib1.4.tar.gz -C ./ 命令,后续操作同理)

# cd tslib

#./autogen.sh

#./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

//配置tslib安装(路径设置在/usr/local/tslib/)

# make //生成Makefile

# make install //安装

# cd /home

#rm –r tslib //安装完成,可以选择删除解压文件

注:安装过程中若没有出现错误,则表示安装成功,此时应该可以在/usr/local/tslib/下看到安装好的文件,若中途出现错误,则应该检查交叉编译器是否安装好,环境变量是否设置好,然后tslib的配置命令是否有错。(注:#./configure --prefix 语句中的--prefix 可以换成–prefix 试一试)

第三步:安装qt-embedded-linux-opensource-src-4.5.3.tar.gz

注:先安装Linux下的G++工具

#apt-get inatall g++ //已安装则不需要

把qt-embedded-linux-opensource-src-4.5.3.tar.gz拷贝到/home/resource下

#cd /home

#tar zxvf ./resource/qt-embedded-linux-opensource-src-4.5.3.tar.gz

//将其解压到/home下

# cd qt-embedded-linux-opensource-src-4.5.3

#./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.3 \ //指定安装目录

-release -shared \ //配置QT库裁剪参数

-fast \

-pch \

-no-qt3support \

-qt-sql-sqlite \

-no-libtiff -no-libmng \

-qt-libjpeg \

-qt-zlib \

-qt-libpng \

-qt-freetype \

-no-openssl \

-nomake examples -nomake demos -nomake tools \

-optimized-qmake \

-no-phonon \

-no-nis \

-no-opengl \

-no-cups \

-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm \

-no-xinerama -no-xshape \

-no-separate-debug-info \

-xplatform qws/linux-arm-g++ \

-embedded arm \

-depths 16 \

-no-qvfb \

-qt-gfx-linuxfb \

-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb \

-qt-kbd-usb \

-confirm-license \

-no-armfpa

-qt-mouse-tslib \

-L /usr/local/tslib/lib \ //不定的,对应你的tslib安装库位置

-I /usr/local/tslib/include //不定的,对应tslibin头文件位置

注:上面的代码比较长,复制时小心,该代码用于对QT库的裁剪配置,因为QT库过大,如果完全编译的话,可能最终arm板负载不了,所以需要裁剪。而裁剪的参数没有规定的,你甚至可以不裁剪,但一般情况会把鼠标库,例子,样例代码等去掉。你可以输入./configure -help来查看各选项的含义,但都是英文的。以上“\”符号表示该行命令没有结束,接着下一行。如果把上述代码复制到终端命令行没有出错,则会出现一个提示选择信息,那是QT 安装的版本选择信息,一般选择“O”,意思是开源(opensource),然后继续。

………………………………………..……..…等待一点时间.…..……..……..……..……..………..………..………..………..…#make

………………………………………..……..…等待大概2个小时…..……..……..……..………..………..……..……..…….. #make install

………………………………………..……..…同样等待大概两个小时,安装完成………………………………………..…注:若安装过程中出现问题,可能前两步安装没有到位,返回去检查。若无错误,安装成功,会在目录/usr/local/Trolltech/QtEmbedded-4.5.3下看到对应安装好的文件。

#cd /usr/local/Trolltech/QtEmbedded-4.5.3

#ls

#cd /usr/local/Trolltech/QtEmbedded-4.5.3/bin

#ls

#mv qmake qmake-arm //修改qmake为qmake-arm

#gedit /etc/bash.bashrc //添加linux系统环境变量

在文件末尾加上环境变量

export PATH=$PATH: /usr/local/Trolltech/QtEmbedded-4.5.3/bin

保存关闭

#qmake-ar(按Tab建,会出现qmake-arm表示环境变量设置成功)

注:此步也比较重要,一个linux系统多安装几个QT程序的话,会出现相同的qmake命令,所以为了区分qmake,改名成qmake-arm,而后面添加环境变量是因为以后编译QT应用程序要用到。

……………………………………………………………………………………………………………………………………………………...自此,要安装的程序已经安装完毕,接下来就是一些修改设置操作。……………………………………………………………………………………………………………………………………………………...

第四步:启动NFS服务

一般程序做调试都会使用nfs挂载的方法,这样做方便,节省资源。首先确保你的Ubuntu 安装过nfs服务,没有的话使用命令安装

#apt-get install nfs-kernel-server //安装nfs服务,

# gedit /etc/exports //修改nfs配置

在该文件末尾加入

/home/nfs 192.168.1.128(rw,sync,no_root_squash) //192.168.1.128 为开发板的IP 保存关闭

# /etc/init.d/portmap restart //重启nfs服务

# /etc/init.d/nfs-kernel-server restart //重启nfs服务

注:上述ip地址的对应很重要,否则nfs不能挂载,ip地址的设置不一定要死定,但是要保证开发板和Ubuntu在同一个网段。如果Ubuntu使用虚拟机安装的话,还要顾及虚拟机和pc机windows系统的链接,最好保证上述三者在同一网段,另外虚拟机和pc机的连接到底是使用桥接(bridged)还是NAT(network address translate)这个可以自己试一试,哪种行就行,一般两种都可以的,这个设置是在虚拟机里完

成的。至于开发板的ip怎么设,卖家也会给你一些教程的。

我是做法是:

开发板ip地址:192.168.1.128 //看下条注释

主机(虚拟机)ip地址:192.168.1.110 //在第七步操作中设置

注:设置开发板的ip地址:

串口终端#setenv bootargs “root=/dev/nfs nfsroot=192.168.1.110:/home/nfs(+空格) ip=192.168.1.128:192.168.1.110:192.168.1.1:255.255.255.0:www.urbetter.co

m:eth0:off console=ttySAC0,115200”

串口终端#saveenv //保存配置

该设置语句是在开发板启动时进入开发板的uboot(类似pc机的bios)时输入完成的,这要用到一些串口调试工具,我直接用的windows的超级终端,开发板(跟pc机已经串口、网线连接好)开机时按空格键进入uboot,然后在串口终端输入上述语句,最后保存参数配置。可以查看第七步操作。

第五步:修改文件系统

注:要想开发板能在nfs挂载成功并运行程序,必须要一个针对ARM的硬件平台的文件系统,这种文件系统一般开发板供应商都会给你的。我使用的是urbetter-rootfs-qt-2.2.0.tgz。

1.

将urbetter-rootfs-qt-2.2.0.tgz拷贝到/home/resource下

在home目录下建一个nfs挂载用的共享文件夹

#cd /home

#mkdir nfs //创建一个nfs共享目录

#cd /home/resource

#tar zxvf urbetter-rootfs-qt-2.2.0.tgz -C /home/nfs //解压文件系统到/home/nfs

#cd /home/nfs

#ls

删除/home/nfs /opt/Qtopia 下所有内容(可以手动删)

//删除文件系统自带的系统软件等

删除/home/nfs/usr/local 下的所有内容删除(可以手动删)

//删除文件系统自带的用户程序等

打开/home/nfs/etc/init.d/rcS 文件 //屏蔽系统默认启动代码

删除如下内容:

/bin/qtopia & //启动代码

echo " " > /dev/tty1

echo "Starting Qtopia, please waiting..." > /dev/tty1 //提示信息

echo " "

echo "Starting Qtopia, please waiting..."

保存关闭

2.

到qt的安装目录下将库文件/usr/local/Trolltech/QtEmbedded-4.5.3/lib全部拷贝到/home/nfs /opt/Qtopia

#cp –r /usr/local/Trolltech/QtEmbedded-4.5.3/lib /home/nfs /opt/Qtopia/ (-r是递归拷贝)

到tslib的安装目录将整个文件夹拷贝到/home/nfs /usr/local/

#cp –r /usr/local/tslib/ /home/nfs /usr/local/ (-r是递归拷贝)

#cd /usr/local/tslib/

#ls

应该看到以下目录

/bin, //包含一些触摸屏的可执行文件,如校准文件,测试文件

/etc, //触摸屏初始化配置文件,下面是要修改的

/include, //包含头文件等

/lib //包含触摸屏支持库

#cd ./bin

应该看到一些可执行文件,其中ts_calibrate是校准程序,ts_test是测试程序

#cd ..

#cd ./etc

应该看到一个触摸屏的配置文件/ts.conf

打开该文件,进行编辑

在文件末尾添加以下语句

module_raw input //启动触摸屏的数据输入方式,这样tslib才能从底层获得数据module pthres

module variance delta=30

module dejitter delta=100

module linear

保存并关闭该文件。

3.设置nfs文件系统的环境变量

# gedit /home/nfs/etc/profile(手动以记事本打开一样的)

在该文件末尾加上如下内容:

export QTDIR=/opt/Qtopia //Qt根目录

export PATH=$QTDIR/bin:$PATH //Qt可执行文件目录

export QT_QWS_FONTDIR=/opt/Qtopia/lib/fonts //Qt字体库

export TSLIB_ROOT=/usr/local/tslib //tslib路径

export TSLIB_TSDEVICE=/dev/input/event1 //指定触摸屏对应驱动设备export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_CONSOLEDEVICE=none

export TSLIB_CALIBFILE=/etc/pointercal //指定校准文件生成目录export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf //指定tslib配置文件

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts //指定tslib数据读取库export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH

//指定QT库和tslib校准库

保存并关闭

第六步:找到QT测试程序

为了验证qt移植成功否,需要做qt程序测试。测试程序有很多,比如在之前解压的/home/ qt-embedded-linux-opensource-src-4.5.3/文件下就有许多样例,比如./demos, ./examples等你也可以拿自己开发的QT应用程序来测试,我就拿./demos/embedded做测试。但是注意程序测试前应该先编译,编译使用qmake-arm(qmake的改名)命令,就是上面qt移植时设置的环境变量。

编译方法:首先确保程序正确并且完整,把与程序有关的所有文件(头文件等)放在同一个文件夹下。在终端上使用cd命令进入到该文件夹,然后

#qmake –project

#qmake

#make

make完之后生成能够在arm板上运行的可执行文件(在pc机上不能运行),然后将该可执行文件拷贝到nfs目录(/home/nfs)下的任何地方,最好是连同整个文件夹一起拷贝过来。我的测试程序./demos/embedded,该程序下有三个小的测试程序,可以一起编译,也可以单个编译。

下面是我的做法:

将/home/qt-embedded-linux-opensource-src-4.5.3.tar.gz/demos/embedded拷贝到/home/nfs目录

#cd /home/nfs/embedded

#ls //3个小测试程序

#qmake-arm

#make //3个测试程序编译完成

此时测试程序已经准备好了,等待测试。

第七部:nfs挂载测试

1.

将开发板与pc机连接好,包括网线连接,串口连接

打开终端调试工具(xshell比较好用),我就直接用的windows下的超级终端,当然不管用哪个终端工具,波特率要设对,应该是115200。

2.设置虚拟机ubuntu的ip地址

#ifconfig //查看ip

#ifconfig eth5 192.168.1.110 up //配置ip地址,看下注释

#ifconfig //确认ip是192.168.1.110

注:上述配置ip地址时,eth后面的数字是不定的,在查看ip时你可以看到自己的eth号数,我的是eth5,自己的是eth几就改成eth几就行了。

3.打开arm开发板电源,此时你应该看到终端工具上有反应(出现一系列数据,不太懂,不用管),等出现提示信息:Please press Enter to active this console.时按回车键(别慌,你没按键它停在那的)

4.在串口终端上运行命令

串口终端#ls //显示nfs文件系统下的所有文件

串口终端#cd /embedded

串口终端#ls

串口终端#cd ./styledemo

串口终端#ls

串口终端#./styledemo –qws //运行测试文件-qws是参数

等待片刻,能看到arm板显示屏上出现一些qt程序画面,你可以插上鼠标进行测试,但是触摸屏应该是用不了的,此问题一直困扰我很久,最终已被我解决,方法不会太难。但此文档不涉及,需要的话,可以在我的百度文库上下载《GPS触摸屏校准》。

注:如果运行时串口终端提示找不到某个库文件(问题不大),原因可能是环境变量没有设置好,也有可能是真的缺少这个库文件,这时你可以在linux终端下输入:

#locate 这个库的名字//找出存在该库的路径

(如缺少库libts-1.0.so.0 则输入:#locate libts-1.0.so.0)

你会发现有一些地方有这个库,甚至是在/home/nfs/opt/Qtopia/lib下也有(替换掉),但是应该到试着把交差编译器安装目录下的对应库拷贝到/home/nfs/opt/Qtopia/lib,如果缺少的是是库连接文件,那拷贝时最好连同库和库链接一起拷贝。拷贝完之后,开发板要重启,在串口终端上重复上述测试看行不行。如果交差编译器安装目录下的对应库没有或者试了还是不行,那就到换到qt的安装目录下去寻找对应库并拷贝(替换原来库),开发板重启再试

第四部分我的结语

ARM开发的环境搭建整个过程花了我将一个月,QT移植只是其中一部分,上面说的触摸屏也花了我两个星期。其实这一块比较复杂难懂,涉及知识面广,然后又不知道其根本及意义,所以没有思路,我在网上查了很多资料,说法不一,而且很不详细,甚至可能会误导别人,我在此基础上不断摸索。几费工夫,终于越来越了解每一部的原因及意义,这样思路就很清晰。因此特花了一天时间整理文稿,供大家分享。望支持~~

.

Saladin于2010-11-30整理

嵌入式Linux开发环境搭建

第一章Ubuntu 8.10的安装和网络配置 1.安装虚拟机软件Vmware 6.0.2 虚拟机安装版本Vmware 6.0.2的版本 在winxp操作系统下用鼠标双击VMware-workstation-6.0.2-59824图标,开始安装虚拟机Vmware,如下图所示: 双击VMware-workstation-6.0.2-59824图标,出现vmware的安装界面,所有的选项都采用默认值,用鼠标点【下一步】,然后出现安装进度条,系统开始安装vmware,等待安装完成后,出现如下安装完成界面: 用鼠标点【Finish】,虚拟机安装完成。系统提示重新启动计算机,选择【是】重新启动计算机,电脑重新启动后,虚拟机安装完成。 2.新建虚拟机 打开Vmware虚拟机软件,选【File】->【New】->【Virtual Machine】,弹出新建虚拟机向导对话框,注意以下几个重要的选项,其他都采用默认选项即可。 选择操作系统和版本,如下图所示:

选择虚拟机名称和存放的路径,如下图所示: 设置虚拟机硬盘大小为20G ,如下图所示:

点击【完成】按钮,这样我们就新建了一个虚拟机,下面我们设置一下虚拟机的内存,步骤如下: 点击虚拟机Vmware的【VM】->【settings】时菜单,弹出虚拟机设置对话框,设置虚拟机使用的内存为512M或1024M,如下图所示:

点击【OK】按钮,这样我们就新建了一个虚拟机,该虚拟机的硬盘为20G, 内存为512M .接着我们就可以在该虚拟机上安装ubuntu操作系统了。 注: 键盘和鼠标控制权在虚拟机和Windows系统之间的切换是通过组合键【Ctrl】+【Alt】来实现的。 3 安装Linux操作系统ubuntu Ubuntu安装版本ubuntu 8.10 点击vmware软件工具栏上的【绿色箭头】启动虚拟机,如下图所示:

实验三 搭建嵌入式系统开发环境

实验三搭建嵌入式系统开发环境 一、实验目的: 1.掌握嵌入式开发环境的配置; 2.掌握开发工具链的安装与配置; 3.掌握嵌入式系统内核和根文件系统的烧写的过程。 二、实验内容: 1)安装配置嵌入式开发环境; 2)安装与配置工具链; 3)内核和根文件系统的烧写 三、实验设备及工具: 硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。 软件:PC机操作系统Red Hat Enterprise Linux 4、MINICOM 、AMRLINUX开发环境。 四、实验步骤: 1.共享windows下内核文件至linux环境下,并将文件复制至个人开发目录中 2.进入目录,输入make menuconfig,对内核进行裁剪配置 3.编译内核之前输入make clean清理编译环境 4.输入make dep 编译相关依赖文件 5.输入make zImage 输出最终编译后的镜像文件 6.将镜像文件共享至windows环境下 7.在windows打开超级终端,进入vivi,将镜像文件烧录至实验箱开发板中 五、实验总结: 通过本次实验,熟悉了Linux 开发环境,学会了如何进行linux内核的烧写。在实验

过程中了解到Linux内核模块的组成结构,通过本次实验,初步了解嵌入式开发的基本过程。 实验四嵌入式驱动程序设计 一、实验目的: 1.学习在LINUX 下进行驱动设计的原理 2.掌握使用模块方式进行驱动开发调试的过程 二、实验内容: 在PC 机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。 三、实验设备及工具: 硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。 软件:PC机操作系统Red Hat Enterprise Linux 4、MINICOM 、AMRLINUX开发环境。 四、预备知识: 1.有 C 语言基础。 2.掌握在Linux 下常用编辑器的使用。 3.掌握Makefile 的编写和使用。 4.掌握Linux 下的程序编译与交叉编译过程。 5.有驱动开发的基本知识。 五、实验步骤: 1.进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器或其他编辑器阅读理解源代码 2.使用makefile编译驱动模块与测试程序,编译器采用armv4l-unknown-linux-gcc 3.将编译后的驱动模块demo.o和测试程序test_demo挂载到实验箱上 4.插入驱动模块demo.o 执行命令insmod demo.o 5.查看驱动是否插入成功,执行命令lsmod demo.o 6.运行测试程序,查看执行结果

嵌入式开发环境搭建步骤

嵌入式开发,通常都是在Linux环境下编译Uboot、Linux和android代码。编译uboot/Linux可以选择任何的Linux发行版,如redhat,suse,ubuntu,fedora,debian等,只要你配置好ARM交叉工具编译工具就可以了。 编译android,搭建环境最容易的就是ubuntu。google的官方网站上,也有搭建编译android的简单介绍,可以搜索下,网络上有相当多这方面的说明。 考虑到我们学习嵌入式的平台是Fast Models,以及自动的Realview EB模型硬件平台。而ARM官方推荐是在Redhat Enterprise(4,5,6)下安装Fast Models。所以,我们采用Redhat Enterprise 6作为开发环境。我们可以直接在电脑上安排RHEL6,也可以先安装vmware,然后在vmware中创建一个虚拟机,在虚拟机上安装RHEL6。在这里,小编是采用后者方式。 搭建Redhat Enterprise 6开发环境,建议做以下配置: 1)设置静态IP。在之前使用vmware的经历,发现如何网站采用dhcp方式,那么rhel6的IP地址有可能会发现改变。而我们需要网络IP最好是固定的,所以需要设置静态IP。RHEL6的静态IP的设置方法,可以搜索到。 2)开启ssh,samba服务 ARM嵌入式开发,基本上都是在命令(shell)方式下进行的,不需要图形界面。所以,在windows上运行vmware,vmware上虚拟机再运行rdel6的情况下,为了不增加windows系统的负荷,可以把vmware放在后台运行,使用ssh服务登陆到rdel6就可 以进行嵌入式开发了。 小编在开发嵌入式时,通常都是使用sourceinsight阅读、修改代码,然后在shell运 行命令进行编译。所以,开通samba服务,然后使用windows已安装的sourceinsight 工具,阅读放在rdel6上的Linux/uboot代码。 在Redhat发行版下,有关服务器的开启或关闭,可以在root用户下,使用setup命 令进入配置选项的“System Services”菜单下进行设置。 samba服务在菜单选项为:“smb”;ssh服务在菜单选项为:“sshd” 需要注意的是:windows下,要使用ssh服务/samba服务登陆vmware虚拟机上的rhel6,必须把rhel6上的防火墙关掉。setup命令--->Firewall Configuration--->去掉Enable。

嵌入式开发环境搭建

第一章开发环境搭建 要想进行嵌入式开发,首先,必须搭建一套完整的嵌入式开发环境。本章讲解在windows xp + Vmware虚拟机(安装Ubuntu10.04)环境下嵌入式开发环境的搭建。 1.1 交叉编译工具链的安装 嵌入式开发必须使用交叉编译工具链。你可以使用里仁提供的交叉编译工具(arm-linux-gcc-3.4.5和arm-linux-gcc-4.3.2),也可以使用crosstool-0.43或crosstool-ng自己编译交叉编译工具链。如何用工具自己编译交叉编译工具链,请参考其他资料。本节只讲解如何使用里仁提供的交叉编译工具链。 交叉编译工具链的安装步骤主要包括拷贝、解压和设置环境变量三部分。 1)拷贝 在主目录中建立工作目录liren,将交叉编译工具链拷贝到该目录下。 在/opt目录下建立virt.arm目录,将交叉编译工具解压到该目录下。操作时注意权限问题,需要加sudo执行命令。 其中,-C参数是制定解压后的存放目录。若不制定默认为当前目录。 查看/opt/virt.arm目录下的交叉编译工具。 arm-linux-gcc-3.4.5和arm-linux-gcc-4.3.2是两个版本的交叉编译器,以备以后使用。其中,arm-linux-gcc-3.4.5将在编译U-boot、文件系统及应用程序时使用;arm-linux-gcc-4.3.2将在编译内核时使用。 2)设置环境变量 把交叉编译工具解压到/opt/virt.arm目录后,编译程序时需要制定交叉编译工具的全路径。例如,在~/liren/test目录下编译“helloworld”。

不能够像gcc那样,直接使用arm-linux-gcc来编译,这是因为还没有设置环境变量。 在~/liren/sh/目录下创建两个脚本文件arm-linux-gcc-3.4.5.sh和arm-linux-gcc-4.3.2.sh。 分别为以下内容: arm-linux-gcc-3.4.5.sh arm-linux-gcc-4.3.2.sh 这两个脚本文件是用来设备环境变量的。 例如,执行source arm-linux-gcc-3.4.5.sh就会把交叉编译器arm-linux-gcc-3.4.5的路径加到PATH环境中。这样,就可以直接使用使用arm-linux-gcc编译程序了。 但是,用这种方法只能临时改变环境变量,退出终端后就失效,因此,在下次使用时需要重新设置。要想让设置长期生效,可以修改/etc/profile文件,在最后一行加上“export PATH=$PATH:/opt/virt.arm/arm-linux-gcc-x.x.x/bin”保存退出即可。不用重启系统,在终端运行“source /etc/profile”设置立即生效。 2.2 网络服务器的安装 在进行嵌入式开发时常常需要目标板和宿主机进行通信。因此,就会用到宿主机的网络服务。常用的网路服务有TFTP和NFS。下面介绍在Ubuntu10.04环境下安装TFTP和NFS 的方法。 2.2.1 安装配置TFTP服务 安装TFTP服务的步骤为: 安装tftp-hpa(客户端)和tftpd-hpa(服务器); 修改配置文件; 根据配置文件的路径,建立tftp目录,并修改目录权限; 重启tftp服务; 本地传输测试。

实验一 ARM嵌入式系统开发环境搭建

实验一ARM嵌入式系统开发环境搭建 一、虚拟机安装配置 ARM嵌入式系统开发需要linux环境,为了在windows下使用linux,需要安装虚拟机。虚拟机软件采用Virtualbox,linux操作系统的版本使用lubuntu。lubuntu系统已制成镜像文件,只需导入到virtulbox即可。 1. 安装VirtualBox虚拟机软件。采用默认安装。 2. 运行Virtualbox虚拟机软件,导入lubuntu虚拟机。 在“管理”菜单中,选择“导入虚拟电脑”项,在后续对话框中选择镜像文件,其余参数按照默认。 3. 启动lubuntu虚拟电脑进入linux界面。 二、建立交叉编译环境 1. 查看arm gcc 编译工具 # cd /opt/host/armv4l # ls bin 列出的以“armv4l-unkown –linux-”开头的系列文件就是gcc编译工具软件。 #armv4l-unknown-linux-gcc –v 应该显示以下信息:

如果没有出现该信息,则检查~/.bashrc文件,在其中加入“PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/”。 2. 建立桥接网络 当使用tftp下载程序时,为了使开发板能够访问虚拟机中的数据,需要对网络加以设置。开发板的IP为192.168.0.115;虚拟机的IP 设为:192.168.0.100 (1) 在lubuntu虚拟机的网卡配置中,选择“桥接网卡”, (2) 在windows操作系统网络配置界面中,将本地网卡和虚拟机的网卡桥接起来。桥接参数如下: IP设置为:192.168.0.2 掩码:255.255.255.0 网关:192.168.0.2 (3)lubuntu虚拟机的IP设置: 虚拟机IP:192.168.0.100 掩码:255.255.255.0 网关:192.168.0.2 3. 配置minicom参数 minicom程序用于在linux环境下通过串口和开发板通信。串口在烧写boot代码、操作系统内核及文件系统时使用。

嵌入式交叉开发环境的建立

实验四嵌入式交叉开发环境的建立 与通用计算机上的软件开发不同,嵌入式的编译过程被称为交叉编译,嵌入式系统的软件开发环境被称为嵌入式交叉开发环境。交叉编译就是把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种CPU(嵌入式微处理器)上的二进制程序。交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。 宿主机(Host)是用于开发嵌入式系统的计算机。一般为PC机(或者工作站),具备丰富的软硬件资源,为嵌入式软件的开发提供全过程支持。目标机(Target)即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应用定制的。物理连

接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有串口、以太网接口和OCD(On Chip Debug)三种方式。逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接。在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作。 宿主机上用于嵌入式软件开发的工具软件一般包括:文本编辑器、交叉编译器、交叉调试器、仿真器、下载器等。 当我们建立完成了嵌入式交叉开发环境后,我们就可以按照如图1所示,在宿主机上编写程序的源代码,使用交叉编译器编译成各个目标模块,使用交叉链接器链接生成可供下载调试或固化的目标程序,通过目标机和宿主机之间的物理连接(串口或网络接口)

将目标程序下载到目标机。 图1嵌入式软件编译过程 在这里中,我们是在宿主机的虚拟机(VMware Workstaion 6.5)上安装Red Hat Enterprise Linux 5。在Linux环境下,我们一般采用arm-linux-gcc作为交叉编译器,glibc是应用程序编程的函数库文件软件包,binutils用作二进制程序处理工具。这样一些软件构成了Linux下的交叉编译工具链。 通常构建交叉工具链有3种方法: (1)分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链;

相关主题
文本预览
相关文档 最新文档