摘要:
友善之臂micro2440开发板的用户手册中介绍的是Fedora 9的开发环境,但本人不喜欢Fedora 9的图形界面,正好电脑里本身装有ubuntu 8.04,所以就不换了。ubuntu 和Fedora 9还是有一些区别,安装编译器和源码时和手册上有一些出入,特别是编译qtopia。这里做下笔记。
简介:
一、软件介绍
虚拟机:VMwareWorkstation6.5正式版
操作系统:Ubuntu8.04-desktop-i386.iso
离线升级包及嵌入式环境包:Embest-EduKit系列嵌入式教学系统平台离线升级包(离线升级包脚本见附件)
交叉编译器:arm-linux-gcc-4.3.2.tgz
ARMLinux源码:Micro2440源码
二、步骤
step1:安装虚拟机和Ubuntu8.04
首先安装好虚拟机,然后运行虚拟机,选择“文件->新建->虚拟机”,有标准安装和自定义安装可选,安装时要设置硬盘和磁盘分配的一些参数,我们选择自定义安装,设置处理器个数、内存大小和最大磁盘大小分别为2、1024MB、15GB。
step2:ubuntu环境配置
1、允许root用户从首页登陆
在linux开发环境下,通常都是在root权限下工作的,系统在装好后,默认是不能以root身份登陆的,root登陆权限和密码设置需要先进行设置:
在ubuntu的标题栏选择"system -> 系统管理 -> 登陆窗口"弹出“login window preferences”窗体,选择"security"选项卡,选中"Allow local system administrator login"。即允许root从首页登陆。
2、设置root密码
打开终端,输入以下命令:#sudo passwd root
然后再按提示输入root密码,就完成了,可以输入 su来切换到root用户试试
3、升级系统软件包
这里可以在线升级,在线升级需要连接网线,这里我们选择离线升级包离线升级。
新建一个目录用于存放离线升级包
$ mkdir - p ~/ eduk4 - pack
copy离线升级包至eduk4-pack下
打开update,运行E-pack-install-1.sh脚本更新系统软件包,E-pack-install-1.sh 主要是设置本地更新源,并开始更新系统,具体内容见附件。
cd ~/ eduk4 - pack / updatesudo sh E-pack-install-1.sh
安装完成后,系统会提示安装成功,需要重启系统。
再次启动系统后,开始安装中文语言包支持,选择"system->系统管理->Language Support",弹出"Language Support"窗口,选中"Supported Languages"中的"chinese",然后点击"OK"按钮。在接下来的弹出窗口提示输入用户密码,输入完成后,再接下来的弹出窗口提示是否安装这些文件包,选择"Apply",系统开始安装中文语言包。安装完成后,需要重启系统,并以root身份登陆,下面看到的则是中文的ubuntu界面。
4、安装嵌入式环境资源包
打开终端,运行E-pack-install-2.sh安装嵌入式环境资源包
cd ~/ eduk4 - pack / update
sudo sh E - pack - install - 2 .sh
E-pack-install-2.sh脚本主要是用于安装嵌入式环境必备资源包,并包含了一些常用的软件,如ksnapshot、kscope、minicom、tftp、rar、stardict等,安装完成后重启系统。 E-pack-install-2.sh见附件。
Step3:虚拟机配制
注意:虚拟机的配制必须在ubuntu关机的情况下进行。
1、添加串口
通常在ubuntu下,需要通过minicom来与开发板通讯,因此需要在虚拟机下添加串口, 否则将造成 minicom不能使用。在 “虚拟机->设置”下,点击“添加”,选择“serial port”,在物理串行端口选择COM1,点“Finish”。这样在hardware中就可以看到它了
2、设置好网络环境和windows共享
如何设置可点击(原创)虚拟机下Ubuntu共享主机文件(Ubuntu)(VMware)(共享)。
step4:常用软件的配置
1、Linux终端的配置
打开终端,选择“编辑 -> 当前配置文件”,弹出配置对话框,在常规选项卡中去掉“使用等宽字体”的勾,根据自已的喜好选择合适的字体。
设置文本和背景颜色
2、设置minicom
为了能在Linux下使用minicom,需要对minicom进行设置,注意,在虚拟机下使用minicom必须要像step3那样在虚拟机里添加好了串口。
在终端里输入命令建立minicom配制文件minirc.dfl
$ sudo gedit / etc / minicom / minirc.dfl
在弹出的minirc.dfl文件中编辑如下
# Machine-generated file - use "minicom -s" to change parameters.
pr port /dev/ttyS0
pu baudrate 115200
pu bits 8
pu parity N
pu stopbits 1
pu minit
pu mreset
pu rtscts No
step5:建立交叉编译环境
1.安装开发环境,直接一个命令搞定:apt-get install build-essential,如果已经安装好,可以跳过这一步;
2、将编译器 arm-linux-gcc-4.3.2.tgz 复制到某个目录下,如“\tmp”,然后进入到该目录
#cd \tmp
#sudo tar - zxvf arm - linux - gcc - 4.3 . 2 .tgz - C /
(注意大写C字母后留一个空格,C是Change的意思,也就是改变目录至根目录进行解压缩操作)
3.解压缩完成后,把编译器路径加入系统环境变量;
执行命令:
#gedit / root / .bashrc
打开文件后,在最后加上一行代码:export PATH=$PATH:/usr/local/arm/4.3.2/bin
4.使变量立即生效,在终端执行:
#source / root / .bashrc
或者注销后重登录;
5.输入命令:
#arm - linux - gcc –v
可以测试一下,如果输出下面的相关信息,说明在Debian/Ubuntu下建立交叉编译环境成功。
另:如果环境变量还加不上,试着改下面一个文件,
#gedit ~/ .profile
最后一行加上export PATH=$PATH:/usr/local/arm/4.3.2/bin
然后执行
#source ~/ .profile
step6:安装源码
新建一个目录,将源码全部解压到此。
#mkdir - p / opt / FriendlyARM / mini2440#cd /opt/FriendlyARM/mini2440
代码安装完成后如下图:
bootloader : 开源的bootloader源码;
vboot : 友善制作的开源的bootloader源码,只有引导的功能;
linux-2.6.32.2 : linux源码;
arm-qtopia : arm 平台的qtopia2.2源码及qt2开发工具,编译qtopia和qt2应用程序时需要用到里面的工具和源代码;
x86-qtopia : x86 平台的qtopia2.2源码及qt2开发工具,编译qtopia和qt2应用程序时需要用到里面的工具和源代码,和arm-qtopia用的是同一套源码,只是编译的脚本不一样,主要用于X86平台的仿真;
busybox-1.13.3: 根文件系统制作源码;
root-qtopia : 友善制作好了的qtopia根文件系统,里面界面友善作了汉化,并添加了一些应用程序;
examples : linux下的应用程序。
step7:配置网络文件系统NFS服务
建立NFS服务,可以通过网络对外提供目录共享服务,这里我们主要是为了让主机和开发板共享,通常在开发阶段,主机制作的根文件系统需要在开发板上运行时,不需要每次都打包传输,可以让开发板通过网络来共享主机上的根文件系统来启动。同样的,应用程序也可以通过共享来运行或者是传输。
1、安装软件: nfs-kernel-server,nfs-common,portmap,在终端里输入
#apt - get install nfs - kernel - server
安装之后,检验这些服务是否可以正常启动,执行:
#sudo / etc / init.d / portmap start
#sudo / etc / init.d / nfs - kernel - server start
如果正常,则安装成功。
2、设置共享目录,设置访问权限
运行命令
#gedit / etc / exports
编辑nfs 服务的配置文件(注意:第一次打开时该文件是空的),添加以下内容:
/ opt / FriendlyARM / mini2440 / root_qtopia * (rw,sync,no_root_squash)
其中:/opt/FriendlyARM/mini2440/root_qtopia 表示nfs 共享目录,它可以作为开发板的根文件系统通过nfs 挂接;* 表示所有的客户机都可以挂接此目录rw 表示挂接此目录的客户机对该目录有读写的权力no_root_squash 表示允许挂接此目录的客户机享有该主机的root 身份。
3、启动和停止NFS服务
#sudo / etc / init.d / nfs - kernel - server start
启动nfs服务后,可以输入以下命令检验nfs是否真的启动
# mount - t nfs localhost: / opt / FriendlyARM / mini2440 / root_qtopia / mnt /
也可以在开发板的终端输入以下命令:(假设主机的ip地址为192.168.1.139)
#mount –t nfs –o nolock 192.168 . 1.139 : / opt / FriendlyARM / mini2440 / root_qtopia / mnt
取消挂接的命令如下:
#umount / mnt
使用restart和stop可以重启和停止nfs服务,回到主机,在主机终端里输入
#sudo / etc / init.d / nfs - kernel - server restart
#sudo / etc / init.d / nfs - kernel - server stop
4、在micro2440开发板上通过NFS启动系统
当NFS 服务设置好并启动后,我们就可以把NFS 作为根文件系统来启动开发板了。通过使用NFS 作为根文件系统,开发板的“硬盘”就可以变得很大,因为您使用的是主机的硬盘,这是使用Linux 作为开发经常使用的方法。
设置目标板启动模式为Nor Flash 启动,连接好电源,串口线,网线;打开串口终端,在blos菜单里选择q,进入vivi 模式,输入以下命令:
Supervivi > param set linux_cmd_line " console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.139:/opt/FriendlyARM/mini2440/root_qtopia ip=192.168.1.230:192.168.1.139:192.168.1.139:255.255.255.0:sbc2440.arm9.net:eth0:off "
其中 ,param set linux_cmd_line 是设置启动 linux 时的命令参数。其各参数的含义如下:nfsroot 是自己开发主机的IP 地址。“ip=”后面:第一项(192.168.1.230)是目标板的临时IP(注意不要和局域网内其他IP 冲突);第二项(192.168.1.139)是开发主机的IP;第三项(192.168.1.139)是目标板上网关(GW)的设置;第四项(255.255.255.0)是子网掩码;第五项是开发主机的名字(一般无关紧要,可随便填写)eth0 是网卡设备的名称。
然后输入boot,按回车就可以通过nfs 启动系统了。
step8:编译Qtopia
编译Qtopia需要一些工具的库的支持,友善的qtopia源码包是在federo 9上面编译的,如果直接在ubuntu下编译会提示有很多的错误,需要安装一些工具包和库文件,尽管前面安装了嵌入式环境资源包,但仍然缺少libuuid.so*等动态库,因此在编译QT前需要先交叉编译e2fsprogs-1.39.tar.gz这个包,这样便可获得libuuid.so*,将它们拷到对应的qtopia-2.2.0的lib目录下,也可以直接拷到/usr/lib下。
下载e2fsprogs-1.39.tar.gz这个包,放到/opt/FriendlyARM/mini2440目录
#cd /opt/FriendlyARM/mini2440#tar - zxvf e2fsprogs - 1.39 .tar.gz
#cd e2fsprogs - 1.39
#. / configure
#make
以上都正常完成,再拷贝/e2fsprogs-1.39/lib/libuuid.a到/usr/lib
然后再输入
#cd e2fsprogs - 1.39
#. / configure -- enable - elf - shlibs
#make
#cp - rf lib / libuuid.so * / usr / lib
完成后就可以编译qt了
#cd x86 - qtopia
#. / build - all
约一小时后,编译完成,然后再
#./run
以上8步做完,linux QT开发环境就基本上搭起来了,接下来要做的就是配制,修改和编译源码来实现你的应用了。