Fedora8上交叉编译qtopia4移植成功到s3c2410开发板

发布者:鑫森淼焱最新更新时间:2017-11-30 来源: eefocus关键字:Fedora8  交叉编译  qtopia4移植  s3c2410 手机看文章 扫描二维码
随时随地手机看文章

教程是这样的: 

一.硬件平台 

1.主机: PC机,512M内存以上。 

2.目标机: UP-NetARM2410-S实验平台。 

二.移植软件资源 

1.Red Hat Linux 9.0(主机操作系统) 

2.gcc-3.4.1.tar.gz(主机编译器) 

3.arm-linux-gcc-3.4.1.tar.bz2(交叉编译器) 

4.tslib-1.3.tar.bz2(管理目标平台的触摸屏) 

5.qtopia-opensource-src-4.2.1.tar.gz(包含Qt, Qtopia core) 

2 . GUI(QT)的移植过程 

编译前的约定: 

1)我的工作目录为:/mnt/nfs。 

2)qtopia-opensource-src-4.2.1.tar.gz 软件包放在/mnt/nfs/qtopia4目录下。 

一.编译主机编译器 gcc-3.4.1.tar.gz 

步骤如下: 

# tar –zxvf gcc-3.4.1.tar.gz 

# ./configure (默认安装目录为: /usr/local) 

# make 

# make install 

安装完成后,可执行文件放在/usr/local/bin目录下,库文件放在/usr/local/lib目录下。 

二.安装交叉编译器 arm-linux-gcc-3.4.1.tar.bz2 

步骤如下: 

# tar jxvf arm-linux-gcc-3.4.1.tar.bz2 

解压后的文件为 usr目录,其已包括可执行文件,直接将usr拷贝到根目录下。然后 

# vi /etc/profile 

在里边添加: 

export PATH=$PATH:/usr/local/arm/3.4.1/bin 

保存退出,执行: 

# source /etc/profile 

三.编译 tslib-1.3.tar.bz2 

详细步骤如下: 

# tar jxvf tslib-1.3.tar.bz2 

解压后的目录为tslib-1.3。 

# cd tslib-1.3 

# export CC=arm-linux-gcc 

# export CXX= arm-linux-g++ 

# ./autogen.sh 

# ./configure --prefix=/mnt/nfs/tslib1.3-install --host=arm-linux 

( 配置目标平台为ARM-linux,在主机上的安装目录为/mnt/nfs/tslib1.3-install ) 

# make 

# make install 



编译 qtopia-opensource-src-4.2.1.tar.gz 

编译前约定: 

安装目录为: /mnt/nfs/qtopia4/qtopiatslibinstall 

目标目录为: /mnt/nfs/qtopia4/qtopiatslibtarget 

下面解压软件包: 

# tar zxvf qtopia-opensource-src-4.2.1.tar.gz 

然后重命名解压后的包: 

# mv qtopia-opensource-4.2.1 qtopiatslibinstall 

# cd qtopiatslibinstall 

在此目录下,文件夹为qtopiacore的目录即是Qt,QtopiaCore所在目录,里边包含了开发所需的 Designer,qmake,uic,moc等工具,也包含了面向嵌入式平台的Qt库。 

编译前,首先建立定位到安装目录和目标目录的环境变量 : 

# export QTOPIAINST=/mnt/nfs/qtopia4/qtopiatslibinstall 

# export QTOPIATARG=/mnt/nfs/qtopia4/qtopiatslibtarget 

为了让编译适应于目标平台和去除编译中将出现的错误,我们需要对源码进行修改和裁减。因此,编译的详细过程如下: 

1 . 修改源码包 

1) 

# cd src/libraries/qtopiabase/ 

# cp custom-linux-cassiopeia-g++.h custom-linux-arm-g++.h 

# cp custom-linux-cassiopeia-g++.cpp custom-linux-arm-g++.cpp 

2)修改3.4.1版的arm编译器的文件 

# cd /usr/local/arm/3.4.1/ 

# vi arm-linux/include/linux/videodev2.h 

在其中添加如下内容: 

#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1') 

/* 8 BGBG.. GRGR.. */ 

保存退出。 

# vi arm/3.4.1/arm-linux/sys_include/linux/videodev2.h 

在其中添加如下内容: 

#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1') 

/* 8 BGBG.. GRGR.. */ 

保存退出。 

3) 修改时区信息 

# vi src/libraries/qtopia/qtimezone.cpp 

将114行的 /usr/share/zoneinfo/ 改为/mnt/nfs/qtopia4/qtopiatslibtarget/zoneinfo/ ,保存退出。 

# vi src/settings/systemtime/settime.cpp 

将318行的 /usr/share/zoneinfo/ 改为/mnt/nfs/qtopia4/qtopiatslibtarget/zoneinfo/ ,保存退出。 

4) 裁减Qtopia core的库 

# vi qtopiacore/qconfig-qpe.h 

首先注释掉关于鼠标光标的宏定义,让程序运行时,触摸屏中央有光标出现: 

// Qtopia Core 

/* 

#ifndef QT_NO_QWS_CURSOR 

# define QT_NO_QWS_CURSOR 

#endif 

*/ 

/* 

#ifndef QT_NO_QWS_MOUSE 

# define QT_NO_QWS_MOUSE 

#endif 

#ifndef QT_NO_QWS_MOUSE_AUTO 

# define QT_NO_QWS_MOUSE_AUTO 

#endif 

*/ 

其它宏定义根据需要进行注释。 

保存后将qconfig-qpe.h拷贝到global目录。 

# cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/ 

global/qconfig-qpe.h 

5)注释掉其他文件里的QT_NO_QWS_CURSOR的定义 

# vi qtopiacore/qt/src/corelib/global/qfeatures.h 

注释掉如下内容: 

/* 

#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR)) 

#define QT_NO_QWS_CURSOR 

#endif 

*/ 

保存退出。 


# vi qtopiacore/qt/src/corelib/global/qglobal.h 

注释掉以下内容: 

//# define QT_NO_QWS_CURSOR 
Qtopia4移植过程(三)2007-06-27 22:252.配置源码包 

首先,确定目录为: /mnt/nfs/qtopia4/qtopiatslibinstall 

然后进行配置,执行如下命令 : 

# ./configure -silent -release 

-image /mnt/nfs/qtopia4/qtopiatslibtarget 

-prefix /mnt/nfs/qtopia4/qtopiatslibtarget 

-xplatform linux-arm-g++ -arch arm -no-qvfb 

-displaysize 640x480 -no-modem 

-extra-qtopiacore-config "-release -xplatform qws/linux-arm-g++ -embedded arm -opengl -qconfig qpe -qt-sql-sqlite 

-depths 4,8,16,32 -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp 

-qt-mouse-tslib -I/mnt/nfs/tslib1.3-install/include -L/mnt/nfs/tslib1.3-install/lib" 2>../qtopiaconfgureERR.txt 


主要配置选项解说如下: 

-xplatform linux-arm-g++ -arch arm 

目标平台为arm-linux,体系结构为arm。 


-no-qvfb 

目标平台已支持framebuffer,因而不使用虚拟帧缓冲。 


-extra-qtopiacore-config 

为Qtopia core 配置选项。 


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

目标平台编译配置文件使用qtopiacore/qt/mkspecs/qws/linux-arm-g++目录下的配置文件,嵌入式平台为arm。 


-qconfig qpe 

使用配置文件qconfig-qpe.h,若使用qconfig-large.h配置文件,则使用-qconfig large选项。 


-qt-sql-sqlite 

数据库支持Sqlite。 


-qt-kbd-usb 

键盘支持usb协议。 


-no-mouse-linuxtp -qt-mouse-tslib 

-I/mnt/nfs/tslib1.3-install/include -L/mnt/nfs/tslib1.3-install/lib 

触摸屏协议不支持linuxtp,支持tslib,并在后面添加上刚才编译的tslib的头文件和库。 


2>../qtopiaconfgureERR.txt 

最后将配置过程中的错误输出到qtopiaconfgureERR.txt文件中。 

3 .编译源码包 

执行如下命令: 

# make 2>../qtopiamakeERR.txt 

4 .安装编译后源码包 

# make install 

编译安装完成后,在/mnt/nfs/qtopia4/qtopiatslibtarget目录下产生各个目标文件。 

5 .建立时区信息 

# cd $QTOPIATARG 

# mkdir zoneinfo 

# cp -a /usr/share/zoneinfo/* $QTOPIATARG/zoneinfo/ 

五.编译后的处理 

完成上面的步骤后,所有软件包已编译完成。下面建立环境变量,进行后期处理,建立开发环境。 

1)将designer,qmake 等工具拷贝到$QTOPIATARG/bin/目录下。 

# cp $QTOPIAINST/qtopiacore/host/bin/* $QTOPIATARG/bin/ 
2)建立环境变量: 
# vi /etc/profile 
添加如下内容: 
QTOPIA="/mnt/nfs/qtopia4/qtopiatslibtarget" 
LD_LIBRARY_PATH="/usr/lib:/usr/local/lib:/usr/X11R6/lib" 
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$QTOPIA/lib" 
PATH="$PATH:$QTOPIA/bin" 
QMAKESPEC=/mnt/nfs/qtopia4/qtopiatslibinstall/qtopiacore/qt/mkspecs/qws/linux-arm-g++ 
export QTOPIA PATH LD_LIBRARY_PATH QMAKESPEC 
保存退出。 
#source /etc/profile 
3)修改ts.conf 
# cd /mnt/nfs/tslib1.3-install/etc 
# vi ts.conf 
原文件内容如下: 
#module mousebuts 
module variance xlimit=50 ylimit=50 pthreshold=3 
module dejitter xdelta=1 ydelta=1 pthreshold=3 
module linear 
将第一行的“#”去掉,让触摸屏起作用。 
到此为止,开发环境建立完毕。 
3 移植成果演示 
在这里,我们以Qtopia自带的例子程序为例,来演示应用程序运行步骤。首先在/mnt/nfs /qtopia4/目录下用VI编辑器建立qtopiatslib.sh文件: 
export TSLIB_TSEVENTTYPE=event0 
export TSLIB_TSDEVICE=/dev/input/event0 
export TSLIB_CONFFILE=/mnt/nfs/tslib1.3-install/etc/ts.conf 
export TSLIB_CONSOLEDEVICE=none 
export TSLIB_CALIBFILE=/mnt/yaffs/tmp/pointercal 
export TSLIB_PLUGINDIR=/mnt/nfs/tslib1.3-install/share/ts/plugins 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs 
/tslib1.3-install/lib 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs 
/qtopia4/qtopiatslibtarget/lib 
export QWS_SIZE=640x480 
export QWS_MOUSE_PROTO="Tslib:/dev/input/event0" 
export POINTERCAL_FILE=/mnt/yaffs/tmp/pointercal 

insmod /mnt/yaffs/touchscreen/ts-uptech.o 
cd /mnt/nfs/tslib1.3-install/bin 
./ts_calibrate 

cd /mnt/nfs/qtopia4/qtopiatslibtarget/bin 
if [ -f "$TSLIB_CALIBFILE" ]; then 
./qpe -qws 
else 
/mnt/nfs/tslib1.3-install/bin/ts_calibrate 
./qpe -qws 
fi 
保存退出,修改用户使用权限: 
# chmod 777 qtopiatslib.sh 
然后启动目标平台,打开minicom终端,进入目标平台的系统。在主机上启动NFS服务,将主机的/mnt /nfs目录挂载到目标机的/mnt/nfs目录。 
在终端里执行: 

# ifconfig eth0 192.168.0.1 
# mount -t nfs (主机IP地址):/mnt/nfs /mnt/nfs 
# cd /mnt/yaffs 
# mkdir tmp 
# cd /mnt/nfs/qtopia4 
# ./qtopiatslib.sh 

执行qtopiatslib.sh文件,首先校准触摸屏,依次点击屏幕上出现的五个点,完成后,会在/mnt /yaffs/tmp目录下生成pointercal校准文件。接下来就会启动qpe应用程序,进入Qtopia Phone的界面。 
在实验的过程中可能会出现下面的错误: 
“在make的时候,遇到了一个错误。/usr/bin/ld .....debug-shared/moc.o提示could't read symbols :File in wrong format” 
只要重新用新的源代码来做才能通过。 
有时候嵌入式的问题真的很难说。总之,出现问题不要紧,能学到东西。努力吧,嵌入式的新人们。

关键字:Fedora8  交叉编译  qtopia4移植  s3c2410 引用地址:Fedora8上交叉编译qtopia4移植成功到s3c2410开发板

上一篇:ARM7 LPC2378 远程升级----ISP与IAP
下一篇:LPC1788单沿pwm原理和配置

推荐阅读最新更新时间:2024-03-16 15:47

一种S3C2410路由器的整体结构及工作原理
  0 引言   据预测,到2015年全球路由器市场的规模将达到159亿美元。其中家用路由器的发展尤为迅猛,目前需求最大的地区为北美和欧洲,不过亚洲地区已经成为家用路由器市场增长最快的地区。所以在未来几年,亚洲的家用路由器需求将非常巨大。   传统路由器凭借其低廉的价格在市场上将会继续存在一段时间,但路由器的发展趋势是智能化,网络化,这正是以ARM及MIPS内核为代表的路由器的特点,所以ARM内核路由器将在未来不久的时间内,占据家用路由器市场的一席之地,并且随着ARM内核技术的普及,ARM内核路由器将具有更高的性价比,相比于其他家用路由器将更有竞争力。   1 ARM技术   ARM公司既不生产芯片也不销售芯片,它只出售芯
[单片机]
一种<font color='red'>S3C2410</font>路由器的整体结构及工作原理
基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植
1、引言 在当今后PC时代,嵌入式系统应用得越来越广泛,嵌入式产品充斥着许多领域,日常生活的手机,MP4,PDA等都属于典型的嵌入式系统。在嵌入式系统中,微处理器和操作系统是进行应用开发的基础。在微处理器方面,S3C2410是Samsung公司推出的一款基于ARM920T内核的16/32位 RISC嵌入式CPU,主要面向手持设备以及高性价比、低功耗的应用。在操作系统方面,Windows CE 5.0是由微软提供的一款嵌入式操作系统,在Windows CE 4.2基础上,它又加入了一些新特性以满足市场需求。板级支持包 (Board Support Package,BSP)是操作系统的一个组成部分,提供对硬件的支持。BSP的开发在整个
[单片机]
基于<font color='red'>S3C2410</font>处理器对Windows CE 5.0操作系统实现BSP<font color='red'>移植</font>
linux-2.6.22.1在s3c2410移植全过程
这两天一直致力于linux 2.6.22.1 的移植工作,虽然遇到过很多困难浪费过很多时间,但是昨晚终于出来了。现将其移植的详细过程贴出来供大家参考,如果按我说的做没有成功,可能与你的开发板以及电脑配置有关系。我还列出了我在移植过程只能中遇到的种种问题及解决方案,希望对有相同爱好兴趣的你有所帮助。 一.各种开发环境介绍 bootloader编译环境: vivi版本:0.1.4 交叉编译器(CROSS-COMPILE)版本:2.95.3 操作系统:Fedora 6(在VMware 6.0.0 安装的,其实和直接安装没什么区别) linux内核编译环境: 内核版本:linux2.6.22.1 (下载地址: 交叉编译器(CROSS-
[单片机]
arm9x25交叉编译IPTABLES问题与解决
iptables 版本选择 1.4.0, 高版本出现没有入口函数问题, 稍后解决。 下载地址: http://www.netfilter.org/projects/iptables/downloads.html 选择源码iptables-1.4.0.tar.bz2。 解压缩命令:tar -xjvf iptables-1.4.0.tar.bz2. 编译命令:make CC=arm-none-linux-gnueabi-gcc RANLIB=arm-none-linux-gnueabi-ranlib AR=arm-none-linux-gnueabi-ar LD=arm-none-linux-gnueabi-ld
[单片机]
基于S3C2410开发板的Bootloader运行原理与实现
在专用的嵌入式开发板上运行操作系统(如Linux)已经变得越来越流行,而Bootloader就是为引导操作系统内核运行的一段代码。通过它可以初始化硬件设备、建立或检测内存空间的映射,其功能有点类似于PC机的BIOS(基本输入输出系统)程序。它的主要作用是为运行操作系统提供基本的运行环境,并操作系统的内核装载到存储器(RAM)中的合适位置上去运行。本文将以Samsung公司的S3C2410开发板为开发平台,具体阐述了Bootloader的运行原理与实现分析。 Bootloader程序与CPU芯片的内核结构、具体芯片和使用的操作系统等因素有着密切关系,因此要为所有类型的嵌入式开发板建立一个通用的Bootloader几乎是不可能的。
[单片机]
基于<font color='red'>S3C2410</font>开发板的Bootloader运行原理与实现
基于S3C2410的CDMA无线数据传输方法
1 引言 Linux嵌入式系统,具有高性能、低功耗、体积小、可靠性高、源代码开放等优点,逐渐被越来越多的人认可并使用,原先只有在PC机上实现的功能,如今也被移植到了更加方便的嵌入式系统上。近些年嵌入式系统已经应用十分广泛,而随着网络特别是无线网络的兴起和发展,将更加快捷方便的无线网络与嵌入式系统相结合更成为了当前研究的热点。CDMA(码分多址)无线网络具有覆盖面广、速度稳定、效率高、成本低等优点,CDMA的网络速度最大可达200k/s。本文着重介绍了ARM9与CDMA无线网络相结合的,进行无线数据传输的方法。 2 软硬件平台设计 这里采用的是三星公司的基于S3C2410的高端ARM9处理器芯片,适用于高端手持设备和微型智能控制设备
[单片机]
ucos在s3c2410上运行过程整体剖析之基础知识--ADS编译、链接器
我在学习嵌入式操作系统UCOS时,有很大的迷茫之处,在于我不知道我用的工具到底帮我干了些神马工作。下面就说一下我当时的疑问: 1:编译器和链接器干了些神马?我现在也还没能力知道它是怎么干的这些工作。以后慢慢来呗。但当时我连它干了神马都不清楚。 2:它输入的是源程序,那他输出的是什么?有格式吗?是什么样子那? 重重疑问。 ADS编译器的目的是怎么把高级语言编程能在ARM平台上直接运行的东东。 而我们的目的是看看他干了些神马,让我们了解一下它以及他链接出来的东东是什么样子。对嵌入式整个工程开发做了哪些贡献,这样我们就能更好的使用它了。是不是。 关于ARM嵌入式开发的要点和步骤请参考 基于ARM的嵌入式系统程序开发要点.pdf ,这
[单片机]
基于S3C2410的智能家居数据采集系统设计
O 引言 智能家居是以住宅为平台,兼备建筑设备、网络通信、信息家电和设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。它利用先进的计算机技术、网络通信技术和综合布线技术,将与家居生活有关的各种系统有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全。家庭自动化、家庭网络、网络家电、信息家电等产品都属于智能家居系统产品。 数据的采集、处理以及传输是实现智能小区控制作用的核心。在此设计了利用嵌入式系统作为开发平台,利用TCP/IP协议作为信息传输方式的业主基本信息数据采集的方案。 由于Internet的发展和普及,采用TCP/IP协议简单、方便、成本低,开放性好,标准化程度高。物业管理
[测试测量]
基于<font color='red'>S3C2410</font>的智能家居数据采集系统设计
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved