当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 各工具的安装,就不说明了,百度一下就有了,直接看我安装后的样子:PS:我使用的是友善之臂,QQ2440V3 的开发板screen.width*0.7) {this.resized=true; this.width=screen

 各工具的安装,就不说明了,百度一下就有了,直接看我安装后的样子:

PS:我使用的是友善之臂,QQ2440V3 的开发板

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080412124954.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

其中:

- arm-linux-gcc-3.3.2 编译Qtopia 使用

- arm-linux-gcc-3.4.1 编译内核使用

- arm-linux-gcc-2.95.3 编译vivi 使用

后面两个还可以用来编译开发板上的应用程序,另外,装完后要对环境变量进行设置,这有两个版本,一个是修改 /etc/profile,一个是/etc/bashrc ,一直搞不明白有什么区别,今天在网上搜索到答案,高兴:

1.export PATH=/usr/local/arm/2.95.3/bin:$PATH

2.PATH=$PATH:/usr/local/arm/2.95.3/bin

3.在出现pathmunge 的语句段后添加pathmunge /usr/local/arm/2.95.3(版本号)/bin;

以上3个其实都是一样的作用,都是通过改变PATH环境变量。不同的是:

/etc/profile是在启动一个交互登陆shell的时候被调用(通过/bin/login登陆,TTY上的开机登录就是这个)

/etc/bashrc则是在一个交互的非登陆shell启动的时候被调用(通过命令行运行,例如在命令行输入bash)

所以怎么设置就要看需要,一般来说,像这种设置工具链的环境变量,设置在/etc/profile里会更加好。

export是一个用于设置环境变量的指令,但是BASH支持直接设置,所以如果你的机器是BASH作为shell的话(一般Linux都是的),可以不使用export。

pathmunge也是一个指令,是一个直接用于添加路径到PATH环境变量的指令。

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080412125201.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

其中:

/opt/FriendlyARM/QQ2440

|__kernel 开发板所用的内核源

|__x86-qtopia Qt/Embedded源代码(x86版本)

|__arm-qtopia Qt/Embedded源代码(ARM带触摸版本)

|__ipaq-qtopia Qt/Embedded源代码(ARM带USB鼠标版本)

|___root_default 板子所使用的基本文件系统

|___root_mizi mizi 公司提供的文件,含有中文手写识别及浏览器等

|___root_qtopia_tp 带Qtopia的文件系统(使用触摸)

|___root_qtopia_mouse 带Qtopia的文件系统(使用USB鼠标、键盘)

|___busybox-1.2.0 busybox源代码

|___examples 示例代码

|___Jflash 烧写工具

QT/E 环境工具

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080412130008.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

安装QT/E 工具比方烦琐,贴一篇我在网上找的教程:

1. 简介

QT是目前在linux上使用较广的一个图形系统。用户经常配合KDE桌面环境来使用。需要注意的是我们看到的并操作的是KDE,而不是QT。QT只是一套库函数(类库),KDE才是可执行程序.同时KDE为了其他程序方便的对其操作,也提供一套库函数(类库)。

在PC机上的QT是基于X11图形系统的,在嵌入设备中往往不需要这么累赘,只需使用QTE(QT Embedded)即可包括PC平台中X11和QT库的功能。

另一方面,嵌入设备受许多条件的限制,桌面系统也不能直接使用PC机上已有的系统。QTOPIA就是相当于KDE的桌面系统.根据具体嵌入设备的需要可以配置成phone和pocket pc两种。

2. 准备工作

2.1 目标

首先要明确将要干的是什么,将怎么做。

我们的目标很明确——就是在自己的开发板上使用基于QTE的桌面系统QTOPIA。

我们的工作往往是先在PC完成以后移植到ARM平台上;先编译好QTE的库,再编译QTOPIA。因为这个系统和具体的设备有关(例如:触摸屏、时钟、电源管理设备等),所以最后还需要做设备接口的移植工作。

2.2 软件包

系统平台:RedHat 9(完全安装)

qt-embedded-2.3.7.tar.gz (qte的库)

qt-x11-2.3.2.tar.gz (为了生成相应的qtdesigner和qvfb)

qtopia-free-1.7.0.tar.gz (qte的桌面环境程序)

tmake-1.11.tar.gz (编译时会用到)

e2fsprogs-1.35.tar.gz (只使用其中的uuid的库)

当下载完这些包以后我们先建立一个工作环境。假设所有软件包都下载在用户目录下,通常都是/root。

2.3 环境的建立

# cd ~

# mkdir x86-qtopia

# tar zxvf qt-x11-2.3.2.tar.gz[!--empirenews.page--]

# mv qt-2.3.2 qt-x11

# cd x86-qtopia

# tar zxvf ../tmake-1.11.tar.gz

# tar zxvf ../qt-embedded-2.3.7.tar.gz

# tar zxvf ../qtopia-free-1.7.0.tar.gz

# tar zxvf ../e2fsprogs-1.35.tar.gz

# mv tmake-1.11 tmake

# mv qt-2.3.7/ qt

# mv qtopia-free-1.7.0 qtopia

# mv e2fsprogs-1.35 e2fsprogs

# cp x86-qtopia arm-qtopia -rf

记住,用户目录下的x86-qtopia目录是PC机上编译的工作环境,arm-qtopia是arm平台的交叉编译工作环境,qt-x11是两者公用的。

接下来还必须编译qt-x11,主要是为了编译生成其中的qtdesigner和qvfb。qvfb程序在系统中并未安装,需要我们自己编译。qtdesigner是和qt库的版本是相关的,当我们使用PC机上和QTE版本不符的qtdesigner时,可能在PC机上的qt-x11能使用的控件在QTE上并未实现,导致应用程序编译不成功。所以,我们使用2.3版本的QTE时,必须使用相同版本的qt-x11编译生成的qtdesigner和qvfb。

# cd ~/qt-x11

# export QTDIR=$PWD

# echo yes | ./configure -static -no-xft -no-opengl -no-sm

# make -C src/moc

# cp src/moc/moc bin

# make -C src

# make -C tools/designer

# make -C tools/qvfb

# cp tools/qvfb/qvfb bin

# strip bin/uic bin/moc bin/designer bin/qvfb

# cp qt-x11/bin/* qt/bin -f

# cp qt-x11/bin/* qt/bin -f

3. PC平台编译

编译之前做一下准备工作:打开一个控制台之后设置环境变量。

# cd ~/x86-qtopia

# export QTDIR=$PWD/qt

# export QPEDIR=$PWD/qtopia

# export TMAKEDIR=$PWD/tmake

# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

# export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

3.1 编译QTE

# cd $QTDIR

# cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ -f

# (echo yes ; echo no) | ./configure -platform linux-generic-g++ -qconfig qpe -depths 16,24,32

# make -C src clean

# make -C src

看一下$QTDIR目录下是否已经有了qt的库了?

3.2 编译QTOPIA

# cd $QPEDIR/src

# ./configure

# make clean

# make

3.3 测试QTOPIA

激动的时刻来了,如果这个步骤成功将意味着可以做应用开发了。

# cd ~/x86-qtopia

# mkdir dist

# cd dist

# cp -af ../qt/lib/ .

# cp -af ../qtopia/apps .

# cp -af ../qtopia/bin .

# cp -af ../qtopia/plugins .

# cp -af ../qtopia/i18n .

# cp -af ../qtopia/pics .

因为Security.png有点错误,所以必须进行一下操作:

# cd pics

# pngtopnm Security.png>a.pnm

# pnmtopng a.pnm>Security.png

因为qpe运行的时候,当前目录必须是$QTDIR/bin,所以不能在$QTDIR目录下执行bin/qpe来运行。

# export QTDIR=~/x86-qtopia/qt

# cd $QTDIR/bin

# ./qvfb &

# ./qpe &

看到qpe在qvfb中的界面了吗?我看到了~!

4. 目标平台交叉编译

与PC机上的编译一样,打开一个控制台之后需要设置环境变量。

# cd ~/arm-qtopia

# export QTDIR=$PWD/qt

# export QPEDIR=$PWD/qtopia

# export TMAKEDIR=$PWD/tmake

# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

# export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

4.1 交叉编译QT

4.2 交叉编译QTOPIA

5. 移植QT中的相关设备接口

5.1 鼠标

5.2 触摸屏

6. 移植QTOPIA中的相关设备接口

6.1 电源管理设备

7. 编写QT程序并移植

8. 编写QTOPIA程序并移植

X. tips

@ 移植的时候编译器的版本很重要.qte-2.3.7在redhat9的3.2编译器下工作很正常,但在Fedora4的gcc-3.4.2编译器下编译却不成功.根据测试,PC平台上使用gcc- 3.2可以顺利编译,arm平台上使用gcc-2.95.2可以顺利通过(gnuarm的编译器好像不行,用华恒光盘中的armv4l-unkown-linux-gcc的可以编译通过)

@ 编译过程中会提示缺少uuid的头文件和库,下载e2fsprogs-libs-1.38.tar.gz,里面有uuid的相关代码.

@ 编译的时候需要指定编译器,在qt的configs目录下有许多文件,修改linux-arm-g++-*这些文件中的相关定义.例如:默认使用arm-linux-gcc编译器,而我使用的是GNUARM的arm-elf-gcc编译器,替换文件中所有arm-linux-前缀为arm-elf-即可.

坦白说,安装过程很烦琐,我买开发板的时候,光盘送了一些工具,还有把QT/E 的安装过程做成了一个脚本,类似于windows 上的批处理,很方便,呵呵

做完上面那些,基本上开发平台就建好了,下面实践一下一些简单的工具使用:

(以下资料来自QQ2440 Linux 开发指南华南木棉嵌入式工作室

http://www.arm123.net

)

1.2.1.2.1

Jflash

jflash2440 是Linux 下通过JTAG 接口烧写BIOS 到Nand Flash 的工具。

使用JTAG 接口下载程序需要一条JTAG 电缆(已经随开发套件附送),把JTAG 电缆连接板

子和主机的并口,然后打开目标板电源开关

#cd /opt/FriendlyARM/QQ2440/Jflash

注意:该目录下包含了Jflash 的源代码,你可以运行“make clean”删除已经编译好的的程序,运行“make”重新编译。

执行以下命令可以查看Jflash 的使用方法:

#./Jflash-s3c2440 --help

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080412130758.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>[!--empirenews.page--]

可见,对应不同类型的Flash ,Jflash 程序使用不同的选项参数,因为我们使用的是64M 三星Nand Flash,因此使用“/t=5”。

执行以下命令开始烧写vivi,如图所示。

#./Jflash-s3c2440 vivi /t=5

注意:如果您在当前目录下执行该命令,请先copy 一份vivi 二进制文件到该目录。

1.2.2

minicom

minicom 是Linux 上最常用的终端仿真程序,它类似于Windows 下的“超级终端”的程序,一般完全安装大部分发行版的Linux 时都会包含它,下面介绍它的使用方法。

使用minicom 之前先设置一下,如下图所示:

#minicom -s ;加“-s” 选项设置minicom

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080412131120.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

运行“minicminicom -s”设置minicom

选择菜单中的“Serial port setup”,按回车,进入如下图所示界面。此时按“A”以设置“Serial

Device”(如果您使用串口1,则输入/dev/ttyS0,如果您使用串口2,则输入/dev/ttyS1)。

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080412131208.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

设置“Serial Device”

按“E”键进入设置“bps/par/Bits”(波特率)界面,如下图所示。再按“I”以设置波特率

为115200。设置波特率

然后按回车退回到上一级菜单,按“F”键设置“Hardware Flow Control”为“NO”,其他

选项使用缺省值,如下图所示。

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080412131325.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

设置“HardwarHardware Flow Control ”

设置完毕,按回车键返回到串口设置主菜单,选择“Save setup as dfl”,按回车键保存刚才

的设置.再选择“Exit”退出设置模式。刚才的设置被保存到“/etc/minirc.dfl”。

设置完毕,如果此时打开板子的电源开关,就会看到vivi 的启动信息,当Linux 启动以后,

minicom 就相当于虚拟终端,你就能通过它来操作目标板了。

要退出minicom,同时按下“Ctrl+A”键,松开后紧接着再按下“Q”键,在跳出的窗口中,

选择"Yes"退出minicminicom

2 配置和编译 BIOS(vivi)

首先,进入vivi 源代码目录:

#cd /opt/FriendlyARM/QQ2440/vivi

再执行“make”开始编译:

#make

如果编译过程顺利,将会在当前目录下生成vivi 二进制映象文件。

说明:该编译过程为默认设置,如果你想改变vivi 的某些配置,可以执行“make menuconfig”

来定制vivi。

配置和编译内核(kernel)

QQ2440 所用的内核源代码位于/opt/FriendlyARM/QQ2440/linux-2.6.13 目录。该目录下有三

个config_开头的文件:

config_cs8900_n35

config_cs8900_s35

config_cs8900_tft640480

您可以选择适合自己LCD 型号的配置文件,复制一个名为.config 的文件

#cp

config_cs8900_tft640480

.config

注意:config

之前有个”

。”

然后执行make menuconfig

#make

menuconfig

注意:该步骤一定要执行。

如果您对内核的配置不熟悉,先不用作任何修改,保存退出即可。

最后执行make zImage 开始编译内核。

#make

zImage

编译完毕,将在arch/arm/boot

目录下生成zImage 文件,即linux 内核文件映象。

制作 YAFFS 文件系统映象

使用mkyaffsimg 程序可以把一个目录做成一个yaffs 映象文件,然后使用USB 下载到板子

中。

4.1

基本文件系统映象

为了制作板子所需要的基本系统映象文件,可以按照这样的步骤执行操作:

#cd /opt/FriendlyARM/QQ2440

#mkyaffsimage

root_default

root_default.img

将在/opt/FriendlyARM/QQ2440 目录下生成root_default.img,在BIOS 模式下[!--empirenews.page--]

使用”loadyaffs root u ”就可以把它下载到板子里面去了。

4.2

Qtopia

文件系统映象

为了制作板子所需要的基本系统映象文件,可以按照这样的步骤执行操作:

#cd /opt/FriendlyARM/QQ2440

#mkyaffsimage

root_qtopia_tp

root_qtopia_tp.img

将在/opt/FriendlyARM/QQ2440 目录下生成root_qtopia_tp.img , 在BIOS 模式下使

用”loadyaffs root u ”就可以把它下载到板子里面去了。

用户可以参考以上方法把以上方法把root_qtopia_mouse/root_mizi 做成映象文件下载到板子里。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭