EZX交叉编译配置、MPKG程序制作教程

EZX交叉编译配置、MPKG程序制作教程 Print E-mail
User Rating: / 5
PoorBest 
Saturday, 26 August 2006
原贴: http://club.ccmove.com/nclub/topicdisplay.aspx?boardid=1189&pageno=1&TopicID=430652

支持触摸,可以拉伸、移动、最大化窗口,非常漂亮。顶到200楼,我发详细安装编译教程和所需的ezx文档。兄弟们说得有理,我将尽快整理教程。刚刚打包我编译成功的测试程序,先发上来给大家体验一下(仅仅是一个程序框架,没有内容,可以拉伸(点住窗口边线)、移动、最大化窗口)。在第二页19楼。申请了个网络尤盘,到那儿下吧。http://youhenge680i.ys168.com/


感谢所有发布编译心得的XD。呼吁XD发扬Linux精神,将所开发的程序开放源代码,实在舍不得,部分开放也行。向 MFC 的 blackhawk和yutian_tj等大侠致敬。

感谢yutian_tj和OopsWare两位大侠的支持!!!

感谢yutian_tj的鼓励!!!

谢谢加精!!!


一、先说所需要的资源(有教程没有资源也白搭):
  1、VMware-workstation-5.5.1-19175.exe
  2、VMware Workstation V5.5.1 Build 19175 汉化补丁HF_VMware551.exe

下载地址http://www.onlysea.com/Software/Catalog12/4534.html

  3、redhatlinux9安装包
下载地址http://www2.piaodown.com/down/soft/855.htm

  4、xscale-gcc-vfp-3.3.tar.gz
下载地址:ftp://e680:e680@e680.3322.org:1680/===== 软件 =====/编程工具/xscale-gcc-vfp-3.3.tar.gz
  5、ezx-sdk.tar.gz
  6、qt-2.3.gz
  7、Other_lib_headers.tar.gz
下载地址:ftp://down:ccmove.com@211.14.138.2/游戏软件/E680i专区/EZX.rarEZX.rar内有第5、6、7项三个文件。
  8、tmake-1.8.tar.gz
下载地址:ftp://ftp.trolltech.com/freebies/tmake/tmake-1.8.tar.gz
  9、lib.tar.gz:E680i的库文件:Telnet到手机或用Qonsole工具tar出来备用:

tar zcvf /mmc/mmca1/lib.tar.gz /usr/lib
再从SD卡上将lib.tar.gz copy出来。

  第4、5、6、7、8项资源在2号和3号服器上有,不过很难连上,我断断续续的下了3个月,直到上个星期五才下全。我的经验是:凌晨5:00-8:30,速度最快,用FlashGet开单线程,单连接,重复连接不限次数。谁有高速空间,我来上传。有其他办法也请告诉我。

二、手机环境:行货E680i-ABP ,刷了爽版ABP。
计算机环境:P4-2.6G ,256M ,1GU盘 ,加装虚拟光驱软件。
三、具体步骤:主要根据imkerberos大侠的帖子,综合了OopsWare和JetJoe等XD发布的方法,修改而成,我研究了两天(Linux我也是现学现卖,c语言懂一点点),重复了N次(仅Linux我就安装了3遍),只要安装了上面的资源,按下面的教程,保证能顺利编译出自己的程序。
1、安装虚拟光驱(DAEMON V3.47),用来加载Iso文件。下载地址http://download.pcworld.com.cn/download/545.html

  2、安装VMware-workstation和Redhat9.看66楼,注意以下几点
a、安装完成后创建一个用户kerberos,创建后在/home/下会有一个kerberos目录。方便后面的环境设置。
b、以root身份登录,方便装载Usb,Cdrom设备,后面与WinXP交换文件时要用到。
c、退出时,要按照正常关机程序退出,否则损坏有关文件(因此我重装了3遍)。
d、最好安上图形环境,方便操作。

  3、Linux和WinXP交换文件的方法
推荐安装VMware tools ,方法在133楼。

用U盘:先在Xp下把文件复制到U盘上,然后挂到Linux下:挂载方法:
a、让Redhat9识别到U盘,选择菜单“虚拟机->可移动设备-->Anonymous Vendor……端口1”;
b、在/mnt下新建usb目录,如果存在则忽略这一步,用命令或图形环境:
命令:
cd /mnt
mkdir usb
cd /
c、加载U盘到/mnt/usb
命令:mount -t vfat /dev/sdb1 /mnt/usb
(有时会不成功,可以重启计算机,按程序再试)
d、卸载U盘,命令:umount /mnt/usb

用虚拟光驱:把以上文件制成ISO格式的文件(用UltraISO软件,下载地址:http://soft.hackbase.com/36/20051016/7986.html),加载到虚拟光驱后,用以下命令加载光驱:mount /dev/cdrom /mnt/cdrom卸载光驱:umount /mnt/cdrom

还有其他方法自己找吧。

  4、安装 xscale-gcc-vfp-3.3.tar.gz,安在/usr/local/arm目录下:
把xscale-gcc-vfp-3.3.tar.gz复制到根目录下(和root文件夹在同一目录),新建一终端(鼠标右键点桌面就会看到或在红帽子里的系统工具中找),执行以下命令:
cd /
tar xvzf  xscale-gcc-vfp-3.3.tar.gz

(原贴中tar xvzf -C / xscale-gcc-vfp-3.3.tar.gz无法执行,不知错在哪里,请知道的大侠解释一下)

不加EZX环境,用 arm-linux-gcc 编译最简单的c程序:
  helloworld.c :

  main()
  {
printf("Hello Moto!/n");
  }

用 arm-linux-gcc 编译这个程序

  arm-linux-gcc helloworld.c

生成 a.out 文件,复制到SD卡上,telnet 上去或者用Qonsole直接在手机上运行命令:
  cd mmc/mmca1
  ./a.out
显示 Hello Moto!


5、在/home/kerberos/下面创建e680目录,把第5、6、7、8、9项文件复制到这个目录下。执行以下命令

  cd /home/kerberos/e680
  tar xvzf qt-2.3.gz
  tar xvzf ezx-sdk.tar.gz
  tar xvzf Other_lib_headers.tar.gz
  tar xvzf lib.tar.gz
  tar xvzf tmake-1.8.tar.gz
  完成后生成了以下目录(在e680目录下):qt-2.3.6、ezx、other、usr、tmake-1.8

  6. 拷贝头文件
把ezx和 other中include目录下的头文件拷贝到qt的头文件目录中(最好用图形窗口操作,复制--粘贴),命令如下:
cp ezx/include/* other/include/* qt-2.3.6/include

  7. 拷贝E680i上的库文件:E680i的库文件在usr目录中
a、把usr/lib/ezx/lib/ 目录下的所有文件,包括子目录复制到qt-2.3.6的lib目录下
b、把usr/lib/目录下libezx打头的文件复制到qt-2.3.6的lib目录下

  8. 设置tmake:

a、复制(不是更改)linux-arm-g++为linux-e680-g++,命令如下:
cd tmake-1.8/lib/qws
cp linux-arm-g++ linux-e680-g++ -r
b、到linux-e680-g++目录下,用gedit打开tmake.conf 文件(在右键菜单-打开方式中)或用命令:vim linux-e680-g++/tmake.conf(vim我不会用,请自行研究)
c、修改tmake.conf文件,具体改这么几行:
感谢OopsWare和yutian_tj两位大侠的指点和帮助
把53、54行重新修改如下:

  TMAKE_LIBS_QT = -lezxappbase-xscale-r -lqte-mt-xscale-r -lezxjpeg-xscale-r -lezxnotification-xscale-r
  TMAKE_LIBS_QT_THREAD = -lqte-mt

  这样可以成功编译EZX.rar包里的hello和myedit两个源文件,不过运行有问题,需要修改源程序。


这是原来的修改:
54 行: TMAKE_LIBS_QT_THREAD = -lqte-mt
改成 TMAKE_LIBS_QT_THREAD = -lqte-mt-xscale-r -lezxappbase-xscale-r -lezxappsdk-xscale-r -lezxjpeg-xscale-r -lezxtapi-xscale-r (这样是为了连接 EZX库)



9. 编辑源程序
a、新建一个testezx目录,放置源程序文件.
cd /home/kerberos/e680/
mkdir testezx
cd testezx
b、编辑一个工程文件( 可以用gedit或vim): testezx.pro
文件内容:
TEMPLATE = app
CONFIG += qt thread release warn_off
TARGET = testezx

HEADERS +=

SOURCES += test.cpp
LIBS +=

c、编辑源文件test.cpp:
文件内容如下:
#include <qapplication.h>
#include <qwidget.h>
#include <ZApplication.h>
#include <ZMainWidget.h>

int main (int argc, char** argv)
{
QApplication app (argc, argv);

QWidget* w = new QWidget ;

app.setMainWidget (w);
w->show();

return app.exec();
}


10.编译程序
a、设置环境变量(这个很重要)
,输入命令:
export PATH=/usr/local/arm/bin:/home/kerberos/e680/tmake-1.8/bin:$PATH
export QTDIR=/home/kerberos/e680/qt-2.3.6
export TMAKEPATH=/home/kerberos/e680/tmake-1.8/lib/qws/linux-e680-g++



b、编译程序:在testezx目录下输入命令:
tmake testezx.pro > Makefile
make

11、 运行程序
把 testezx 拷贝到SD卡上,telnet(不会telnet,用Qonsole也可以) 到小E上。运行命令:


设置手机环境:
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
export EZX_RES_ICON_PATH=/usr/language/icon

简单的设置方法:# . /home/native/.profile

cd mmc/mmca1
./testezx

你就看见一个空的窗口,如下面的图示,兴奋吧.


12、制作MKPG安装文件:

MKPG 是 tar.gz 的文件,要加上 Gzip 压缩:

A、Desktop文件设置

a、Desktop文件格式:
[Desktop Entry]
BigIcon= ##大图标,缩列图显示用
Comment= ## 注释
Exec= ## 运行程序名称
Icon= ## 小图标,列表显示用
Name= ## 显示的名称
OsVersion=1.0
Shared=1
Type=Application

b、用UltraEdit新建test.desktop文件 ,输入下列内容:
[Desktop Entry]
BigIcon=test.png
Comment=TestSoft by 有恒
Exec=Test.lin
Icon=test_sm.png
Name=Test
OsVersion=1.0
Shared=0
Type=Application

  B、lin文件设置:用UltraEdit(下载地址:http://www.skycn.com/soft/2249.html)新建Test.lin文件,输入下列内容:
#!/bin/bash
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
export EZX_RES_ICON_PATH=/usr/language/icon
exec /mmc/mmca1/.system/QTDownLoad/test/testezx

  C、制作两个图标test.png(尺寸37*32像素)test_sm.png(尺寸28*24像素 )

  D、新建test文件夹,把编译好的 testezx 文件和Test.lin、test.desktop、test.png、test_sm.png 等文件放入。
  E、运行命令:
  tar cfz test.tar.gz test

  13、把 test.tar.gz改成test.mpkg,复制到手机上安装,大功告成!!!!!!!!!!
添加到网摘: [del.icio.us]  [新浪 VIVI]  [365key]  [YouNote]  [博采中心]  [Poco]  [SOHU狐摘]  [天极网摘]  [和讯网摘
<script src="http://my.sdlgame.com/mambots/blogit/blogit.php?js=blogit" type="text/javascript"></script>
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
Comments
WQQWE
Written by Guest on 2006-09-17 08:27:51 IP: 125.93.189.82
W3IERW

 

<script language="Javascript" type="text/javascript"> function x () { return; } function ac_smilie(thesmile) { document.akocommentform.comment.value += " "+thesmile+" "; document.akocommentform.comment.focus(); } function validate(){ if (document.akocommentform.comment.value==''){ alert("Please insert at least a comment related to the topic!"); } else if (document.akocommentform.acname.value==''){ alert("_AKOCOMMENT_FORMVALIDATENAME"); }else { document.akocommentform.action = 'index.php'; document.akocommentform.submit(); } }function DoPrompt(action) { var revisedMessage; var currentMessage = document.akocommentform.comment.value; if (action == "url") { var thisURL = prompt("Enter the URL for the link you want to add.", "http://"); var thisTitle = prompt("Enter the web site title", "Page Title"); var urlBBCode = "[URL="+thisURL+"]"+thisTitle+"[/URL]"; revisedMessage = currentMessage+urlBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "email") { var thisEmail = prompt("Enter the email address you want to add.", ""); var emailBBCode = "[EMAIL]"+thisEmail+"[/EMAIL]"; revisedMessage = currentMessage+emailBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "bold") { var thisBold = prompt("Enter the text that you want to make bold.", ""); var boldBBCode = "[B]"+thisBold+"[/B]"; revisedMessage = currentMessage+boldBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "italic") { var thisItal = prompt("Enter the text that you want to make italic.", ""); var italBBCode = "[I]"+thisItal+"[/I]"; revisedMessage = currentMessage+italBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "underline") { var thisUndl = prompt("Enter the text that you want to be undelined.", ""); var undlBBCode = "[U]"+thisUndl+"[/U]"; revisedMessage = currentMessage+undlBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "image") { var thisImage = prompt("Enter the URL for the image you want to display.", "http://"); var imageBBCode = "[IMG]"+thisImage+"[/IMG]"; revisedMessage = currentMessage+imageBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "quote") { var quoteBBCode = "[QUOTE] [/QUOTE]"; revisedMessage = currentMessage+quoteBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "code") { var codeBBCode = "[CODE] [/CODE]"; revisedMessage = currentMessage+codeBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "listopen") { var liststartBBCode = "[LIST]"; revisedMessage = currentMessage+liststartBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "listclose") { var listendBBCode = "[/LIST]"; revisedMessage = currentMessage+listendBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; } if (action == "listitem") { var thisItem = prompt("Enter the new list item. Note that each list group must be preceeded by a List Close and must be ended with List Close.", ""); var itemBBCode = "[*]"+thisItem; revisedMessage = currentMessage+itemBBCode; document.akocommentform.comment.value=revisedMessage; document.akocommentform.comment.focus(); return; }}</script>

Write Comment
  • Please keep the topic of messages relevant to the subject of the article.
  • Personal verbal attacks will be deleted.
  • Please don't use comments to plug your web site. Such material will be removed.
  • Just ensure to *Refresh* your browser for a new security code to be displayed prior to clicking on the 'Send' button.
  • Keep in mind that the above process only applies if you simply entered the wrong security code.
Name:
E-mail
Homepage
Title:
BBCode:Web AddressEmail AddressBold TextItalic TextUnderlined TextQuoteCodeOpen ListList ItemClose List
Comment:



Code:* Code
 

Powered by AkoComment!

 
< Prev   Next >
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二维TE波ADI-FDTD方法是一种数值求解电磁波动方程的方法,紧差分格式是指在数值离散化时使用更加准确的差分方法,从而提高数值计算的精度。本文介绍如何用matlab实现二维TE波ADI-FDTD方法。 首先,我们需要定义一些物理参数和计算参数,如介电常数、磁导率、时间步长、空间步长等,具体值根据实际情况调整。 ```matlab % 物理参数 epsilon0 = 8.854187817e-12; % 真空介电常数 mu0 = pi * 4e-7; % 真空磁导率 epsilon = 4; % 介电常数 mu = 1; % 磁导率 % 计算参数 dx = 0.01; % 空间步长 dy = 0.01; dt = dx / (2e8 * sqrt(1 / (dx^2) + 1 / (dy^2))); % 时间步长 ``` 然后,我们需要初始化场变量,包括电场和磁场,以及在时间步进过程中需要用到的中间变量。这里我们使用矩阵来表示电场和磁场。 ```matlab % 初始化场变量 nx = 100; % x方向网格数 ny = 100; % y方向网格数 ez = zeros(nx, ny); % z方向电场 hx = zeros(nx, ny); % x方向磁场 hy = zeros(nx, ny); % y方向磁场 ezx = zeros(nx, ny); % x方向电场中间变量 ezy = zeros(nx, ny); % y方向电场中间变量 hxx = zeros(nx, ny); % x方向磁场中间变量 hyy = zeros(nx, ny); % y方向磁场中间变量 ``` 接下来,我们需要实现ADI-FDTD算法,这里使用两个循环来分别处理x方向和y方向的场变量更新。 ```matlab % ADI-FDTD算法 for n = 1:100 % 时间步数 % 更新x方向电场和磁场 for i = 2:nx-1 for j = 2:ny-1 ezx(i, j) = ezx(i, j) + (dt / epsilon) * (hy(i, j) - hy(i-1, j)) / dx; end end for i = 2:nx-1 for j = 2:ny-1 ezy(i, j) = ezy(i, j) + (dt / epsilon) * (hx(i, j-1) - hx(i, j)) / dy; ez(i, j) = ezx(i, j) + ezy(i, j); end end for i = 1:nx-1 for j = 1:ny-1 hxx(i, j) = hxx(i, j) + (dt / mu) * (ez(i, j) - ez(i, j+1)) / dy; end end for i = 1:nx-1 for j = 1:ny-1 hyy(i, j) = hyy(i, j) + (dt / mu) * (ez(i+1, j) - ez(i, j)) / dx; hx(i, j) = hxx(i, j); hy(i, j) = hyy(i, j); end end end ``` 最后,我们可以绘制电场和磁场的分布图。 ```matlab % 绘图 figure; subplot(2, 1, 1); imagesc(ez'); title('Electric Field (V/m)'); xlabel('X (m)'); ylabel('Y (m)'); colorbar; subplot(2, 1, 2); imagesc(sqrt(hx'.^2 + hy'.^2)); title('Magnetic Field (A/m)'); xlabel('X (m)'); ylabel('Y (m)'); colorbar; ``` 这样,我们就完成了二维TE波ADI-FDTD方法的matlab实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值