Chinaunix

标题: MOTO手机嵌入式LINUX使用感想 [打印本页]

作者: cwmould    时间: 2005-12-14 11:13
标题: MOTO手机嵌入式LINUX使用感想
俺前一阵买了一个MOTO E680I(水的,没钱呀), 使用的是嵌入式LINUX,一直停留在看电影听歌看书的应用基础上,最近由于要装主题,必须要使用TELNET,一番探索之后终于成功了,进去一看,HOHO,原来竟然内核为2.4.20,跟REDHAT9一样,基本指令都有,非常简化的那种,爽呀,可以使用BASH编程的呀,有机会一样试一下将REDHAT9的程序拷进去试一下,现在的手机真先进呀,现在的智能手机真的是一部电脑

这里有做嵌入式LINUX移动设备的DX吗,希望能交个朋友,俺的QQ:33429187 MSN:rewriteworld@hotmail.com
作者: platinum    时间: 2005-12-14 11:32
原帖由 cwmould 于 2005-12-14 11:13 发表
原来竟然内核为2.4.20,跟REDHAT9一样,基本指令都有,有机会一样试一下将REDHAT9的程序拷进去试一下..

肯定没戏,指令集都不一样
作者: 湖心小筑    时间: 2005-12-14 11:56
真的假的呀!

我还想买个NOKIA机子做测试机,使用一下Symbian 不知道有谁有经验,给介绍点,包括选哪个机型,系统兼容性好一些,测试的功能可以齐全一些,同时对其它的WAP协议支持得好一些?
作者: albcamus    时间: 2005-12-14 12:00
我还打算买个ipaq自己裁减个PDA呢。等有钱有时间了再说吧
作者: cwmould    时间: 2005-12-14 13:18
NOKIA你可以选6681或者N70
E680I所选用的版本是 MontaVista Linux ,据说是一个比较专业的嵌入式LINUX厂商,可以跟VXWORKS,WINCE有一拚了

[ 本帖最后由 cwmould 于 2005-12-14 13:28 编辑 ]
作者: Solaris12    时间: 2005-12-14 16:02
原帖由 cwmould 于 2005-12-14 13:18 发表
NOKIA你可以选6681或者N70
E680I所选用的版本是 MontaVista Linux ,据说是一个比较专业的嵌入式LINUX厂商,可以跟VXWORKS,WINCE有一拚了


应该就是LKD作者robot love所在的公司。
作者: wheel    时间: 2005-12-14 16:10
http://gnupoc.sourceforge.net/

linix下的手机模拟器,SIS采用的是C或C++,JAVA采用的是2ME, C语言的执行效率比J2ME好 ,sis格式的专门针对symbian系统手机开发的;java则针对所有支持KJAVA功能的手机!
http://www.linuxfans.org/nuke/mo ... eninfo&did=3974
作者: colddawn    时间: 2005-12-14 21:32
楼主说的是实情,我有这部机。
现在的困难是:
1,没有内核代码,没有核心硬件的驱动代码或api,甚至头文件都没给,这样针对GSM部分的编程根本无从下手,最郁闷的是连声音都驱动不起来。
2,Ezx的代码好不容易拼凑起来一个编译平台,基本能够cross link了,不过离可用还差得远。
作者: A-Liang    时间: 2005-12-15 13:04
尝试过不需要内核支持的可执行文件吗?好像MULTI2000编译出的二进制文件不需要内核代码的支持。
作者: albcamus    时间: 2005-12-15 13:27
>> 尝试过不需要内核支持的可执行文件吗

这个在Unix下不大可能。 execve系统调用必须得有对某种文件格式的driver
作者: cwmould    时间: 2005-12-15 17:17
我自己编译了一个HELLO都不能执行,我今天拷了一些RH9下的最简单的程序,不行,看来还需要高手解释一下
作者: 1jjk    时间: 2005-12-15 18:38
那么在手机里放个木马不是就不错了吗?
放个后门!
下个病毒或者趁着有漏洞传播一下蠕虫?
作者: saoyu    时间: 2005-12-15 18:57
原帖由 cwmould 于 2005-12-15 17:17 发表
我自己编译了一个HELLO都不能执行,我今天拷了一些RH9下的最简单的程序,不行,看来还需要高手解释一下


你必须要做的几件事:
1:弄清楚这款手机使用的处理器。(肯定不是x86啦)
2:搭建交叉编译环境
3:.......
作者: cwmould    时间: 2005-12-16 10:06
intel Xcale 312Mhz CPU, 具体指令集不太详细,估计应该是X86的,软件为montaVista 消费电子版LINUX 3.0,他们还有一个专业版,估计那个功能的指令应该多些,其实如果这个如果能提供开发环境,那么大部分的LINUX/unix程序经过适当编译后应该是能够运行在手机上。现在这款手机上有了realplayer, picsel,估计是应该是基于C开发的,现在基于JAVA的程序多些,像winamp for e680, quakeQT 帝国时代2等等,还有很多GBA,SFC,MD等等的模拟器
看来,手机应该是嵌入式LINUX大展手机地方了。现在的PPC,塞班都有自己的缺点,很难克服。像PPC,虽然软件多,但完全继承了WINDOWS的缺点,启动慢,死机,病毒,而塞班,虽然现在软件还可以,但在专门开发。而嵌入式LINUX则非常有前途,现在小I的启动的速度大概在5秒钟,跟普通手机一样,甚至略快,非常稳定(继承的UNIX的特点),如果将开发环境统一,那么大量的GNU程序非常容易移植。
我在手机上用ps -el看了一下系统进程,系统启动了xinet,telnet,samba三个服务,我用SSS扫一个手机,结果,21,23,139,110都开着。然后执行了一下reboot shutdown,可以,只是手机有些不正常,可能是有些服务没起来。
有时间继续研究一下,希望嵌入式高手研究一下。注:纯属业余爱好

[ 本帖最后由 cwmould 于 2005-12-16 10:46 编辑 ]
作者: 阿辉    时间: 2005-12-16 11:16
原帖由 cwmould 于 2005-12-15 17:17 发表
我自己编译了一个HELLO都不能执行,我今天拷了一些RH9下的最简单的程序,不行,看来还需要高手解释一下


你需要交叉编辑才行。
作者: cwmould    时间: 2005-12-16 12:20
DX能讲一下怎么简单建一个交叉环境吗?(俺这方面是新手),在论坛时有个DX已经给这样环境找到VIM,手机里原来是没有这个编辑器的,据说改一个libcurse的库文件名就行,应该是他的版本比手机里的低些
作者: colddawn    时间: 2005-12-16 13:19
更正,不是X86,是Arm的
交叉编译环境搭建很麻烦,可以参考http://www.motorolafans.com/论坛上的一些文章。
国内在Motolinux手机编程方面有不少牛人的,680的源代码包就是国内的人首先拿到的,但是目前还不太可能有效的利用并作开发。
作者: wild man    时间: 2005-12-16 22:50
太强了吧
作者: 通用寄存器    时间: 2005-12-17 14:07
应该是arm的指令集,你们太强了啊,学习ing···
作者: zqpytrjb    时间: 2005-12-17 19:46
当初也考虑买E680i来DIY
但是还是没买
如果有全套源代码当然买了!
作者: zhhhuang    时间: 2005-12-20 13:33
原帖由 cwmould 于 2005-12-16 10:06 发表
intel Xcale 312Mhz CPU, 具体指令集不太详细,估计应该是X86的,软件为montaVista 消费电子版LINUX 3.0,他们还有一个专业版,估计那个功能的指令应该多些,其实如果这个如果能提供开发环境,那么大部分的LINUX/ ...


montavista光盘中应该有for arm的gcc编译器,这位同学能否把你所看到的进程再列的详细一些?
作者: huxiao45    时间: 2005-12-20 23:41
好像不行吧,
像一楼说的,指令集不一样。。。
听说ARM和INTER的指令是反过来用,不知是不是~
作者: honst    时间: 2005-12-21 14:35
原帖由 huxiao45 于 2005-12-20 23:41 发表
好像不行吧,
像一楼说的,指令集不一样。。。
听说ARM和INTER的指令是反过来用,不知是不是~


反过来?怎么反啊?
作者: wgd0909    时间: 2005-12-21 15:49
这款手机用的是迁入式linux,,大概是 monte viste的版本,,,,里面的命令busybox命令集,,你如果有了他的内核代码和界面的开发工具包(有,gtk,gdk,qt,etc具体moto使用的不太清楚)就可以开发自己的应用程序了.

这方面开放源码的pda很多,,,大多使用linux的都开发源码,,,比较流行的有opie,gtk版本的.
作者: cwmould    时间: 2005-12-22 14:15
以下是PS结果,E680可以安装OPIE,很多网友已经安装成功了,而且很多软件就是OPIE移植过来的,像超任的模拟器,还有QUAKEQT,据说,外国的网友已经成功在680上运行上VNC SERVER


Linux 192.168.1.11 2.4.20_mvlcee30-mainstone #7 Fri Feb 13 15:39:51 CST 2004 arm
v5tel unknown

MontaVista Linux Consumer Electronics Edition 3.0

No directory /root!
Logging in with home = "/".
# ps -el
  F S   UID   PID  PPID  C PRI  NI ADDR SZ  WCHAN TTY          TIME CMD
100 S     0     1     0  0  75   0 -   344  32b4c ?        00:00:00 init
040 S     0     2     1  0  75   0 -     0  374dc ?        00:00:00 keventd
040 S     0     3     1  0  94  19 -     0  2f450 ?        00:00:00 ksoftirqd_CP
040 S     0     4     1  0  75   0 -     0  44d4c ?        00:00:00 kswapd
040 S     0     5     1  0  85   0 -     0  50c08 ?        00:00:00 bdflush
040 S     0     6     1  0  75   0 -     0  32b4c ?        00:00:07 kupdated
040 S     0     7     1  0  85   0 -     0  ddd08 ?        00:00:00 mtdblockd
040 S     0     8     1  0  75   0 -     0  eff20 ?        00:00:00 khubd
040 D     0    10     1  0  85   0 -     0  1dbb8 ?        00:00:00 swapper
040 D     0    36     1  0  65 -10 -     0 235f68 ?        00:00:02 tffs1
100 S     0    73     1  0  75   0 -   541  32aec ?        00:00:01 tapisrv
100 S     0    77     1  0  75   0 -   409  32aec ?        00:00:01 apmd
100 S     0    96     1  0  75   0 -  5493  32b4c ?        00:00:12 windowsserve
100 S  2000    98     1  0  76   0 -   370  32aec tty1     00:00:00 bash
100 S     0   102    96  0  60 -15 -  1458  32aec ?        00:00:00 soundmanager
100 S     0   104    96  0  75   0 -  6672  32b4c ?        00:00:39 am
040 S     0   105   102  0  85   0 -   907  93800 ?        00:00:00 soundmanager
040 S     0   106   102  0  60 -15 -  1458  32b4c ?        00:00:00 soundmanager
140 S     0   107   106  0  60 -15 -  1458  93800 ?        00:00:00 soundmanager
040 S     0   108   106  0  70 -15 -  1458  93800 ?        00:00:00 soundmanager
040 S     0   109   106  0  60 -15 -  1458  93800 ?        00:00:00 soundmanager
040 S     0   110   106  0  70 -15 -  1458  93800 ?        00:00:00 soundmanager
040 S     0   111   106  0  60 -15 -  1458  32aec ?        00:00:00 soundmanager
100 S     0   112    96  0  60 -17 -  6403  32b4c ?        00:00:15 phone
100 S  2000   119   104  0  75   0 -  3252  32aec ?        00:00:00 browser
000 S  2000   120   119  0  75   0 -  4994  32aec ?        00:00:01 mielserver
040 S  2000   121   120  0  75   0 -  4994  32b4c ?        00:00:00 mielserver
040 S  2000   122   121  0  75   0 -  4994  1e548 ?        00:00:00 mielserver
040 S  2000   123   121  0  75   0 -  4994  32b4c ?        00:00:00 mielserver
040 S  2000   124   121  0  85   0 -  4994  32aec ?        00:00:00 mielserver
100 S  2000   127   104  0  75   0 -  7173  32aec ?        00:00:16 messaging
000 S  2000   134     1  0  75   0 -  5638  32aec ?        00:00:01 db_daemon
000 S     0   139    96  0  75   0 -   861  32aec ?        00:00:00 dsm
100 S  2000   142   104  0  75   0 -  5950  32aec ?        00:00:01 addrbk
100 S     0   147    96  0  75   0 -  3976  32aec ?        00:00:00 mmcsdapp
040 S     0   148   147  0  75   0 -  3976  32b4c ?        00:00:00 mmcsdapp
140 D     0   149   148  0  77   0 -  3976 2221e4 ?        00:00:00 mmcsdapp
040 S  2000   150   134  0  75   0 -  5638  32b4c ?        00:00:00 db_daemon
040 S  2000   151   150  0  75   0 -  5638  32b4c ?        00:00:00 db_daemon
040 S  2000   154   150  0  75   0 -  5638  32aec ?        00:00:01 db_daemon
040 S  2000   155   150  0  75   0 -  5638  32aec ?        00:00:00 db_daemon
100 S  2000   157    96  0  75   0 -  6088  32b4c ?        00:00:04 openwindow
040 S  2000   161   150  0  75   0 -  5638  32aec ?        00:00:00 db_daemon
100 S     0   163    96  0  75   0 -  5905  32aec ?        00:00:04 misc1
040 S  2000   168   150  0  76   0 -  5638  32aec ?        00:00:00 db_daemon
040 S  2000   169   150  0  76   0 -  5638  32aec ?        00:00:00 db_daemon
040 S     0   194    96  0  75   0 -  5493  32b4c ?        00:00:00 windowsserve
040 S     0   195   194  0  75   0 -  5493  1e548 ?        00:00:00 windowsserve
040 S  2000   203   150  0  75   0 -  5638  32aec ?        00:00:00 db_daemon
040 S  2000   253   150  0  76   0 -  5638  1e548 ?        00:00:00 db_daemon
100 S  2000   266   104 11  82   0 -  5369  32aec ?        00:00:02 mystuff
140 S     0   283     1  0  75   0 -   362  32aec ?        00:00:00 inetd
140 S     0   286     1  0  79   0 -   644  32aec ?        00:00:00 smbd
000 S     0   287   283  4  75   0 -   425  32aec ?        00:00:00 in.telnetd
100 S     0   288   287  2  75   0 -   365  2de5c pts/0    00:00:00 bash
100 R     0   291   288  0  77   0 -   704      - pts/0    00:00:00 ps
作者: mars_diy    时间: 2005-12-22 16:28
原帖由 cwmould 于 2005-12-14 11:13 发表
俺前一阵买了一个MOTO E680I(水的,没钱呀), 使用的是嵌入式LINUX,一直停留在看电影听歌看书的应用基础上,最近由于要装主题,必须要使用TELNET,一番探索之后终于成功了,进去一看,HOHO,原来竟然内核为2.4.2 ...


去debian 下针对arm 编译的包吧,都能用,只要你能搞定动态库
作者: mars_diy    时间: 2005-12-22 16:30
原帖由 wgd0909 于 2005-12-21 15:49 发表
这款手机用的是迁入式linux,,大概是 monte viste的版本,,,,里面的命令busybox命令集,,你如果有了他的内核代码和界面的开发工具包(有,gtk,gdk,qt,etc具体moto使用的不太清楚)就可以开发自己的应用程序了.

这方面 ...


图形用的是嵌入式qt
作者: cwmould    时间: 2005-12-22 16:36
以下是在移动天使看到的文章,俺在手机装了个OPIE,感觉好爽呀,只是不是专门为680开发的,有一部分程序不能用,下面的DX讲的构建环境,我想问一下所谓的QT到底啥意思呀



构建E680的开发环境- -

www.CCMOVE.com


最近买了个E680的水货手机。本来我手里手机很多了,不过没有一个是Linux的,觉得比较可惜,这可是我的职业 。听说E680水货比较便宜,而且在"移动天使"(http://club.ccmove.com/)上的fans正DIY地热火朝天,比较眼热。 冲着E680的DIY性能,我决定买了一个。

www.CCMOVE.com

在“移动天使”论坛上,大部分DIY的程序是从OPIE拿过来的,所以在E680上必须加载另外一个QT库和OPIE的库,比较浪费资源。幸亏liuto大侠拿到了EZX的SDK,我赶紧下载下来了。很可惜,是A760系列的SDK,E680上没法用。

www.CCMOVE.com

幸好liuto的ezx SDK有一些头文件,象Moto这种大公司,开发上应该保持连续性。所以我猜测EZX SDK的头文件应该变化不大,这样我就可以使用A760的EZX SDK 的头文件配合E680上的qt,ezx的库文件进行程序的交叉编译了。 果然,我成功了。

www.CCMOVE.com

下面就是具体步骤:
所需要的资源:
1. xscale-gcc-vfp-3.3.tar.gz
2. ezx-sdk.tar.gz qt-2.3.tar.gz Other_lib_headers.tar.gz
3. tmake-1.8.5
说明:
1. 本来我手头上有一份 montavista 的gcc交叉编译环境,但是它没有包含VFP的支持,需要自己编译一份。在“移动天使”的2号ftp上(ftp://hbsztvu.cn) 9====工具====/编程工具 下有编译好的GCC。
2. 在移动天使的3好服务器上有EZX.rar,这是A760系列的开发包,不能直接用在E680上,不过没有关系,我们只需要这个包里面的ezx-sdk.tar.gz 和 qt-2.3.tar.gz 中的一些头文件。
3. 这个是Trolltech (qt的开发商)公司的一个为Qt项目生成Makefile的工具。当然你也可以使用自己的qmake (在Qt 3.x中使用 qmake, 而在qt 3.0 以前一直是使用tmake的).我懒得编译Qt了,所以直接使用了tmake,tmake是用perl写的,呵呵,不用编译。

www.CCMOVE.com


步骤:
1. 安装 xscale-gcc-vfp-3.3.tar.gz:
#tar xvzf -C / xscale-gcc-vfp-3.3.tar.gz
gcc 的编译器就装在了/usr/local/arm下。
2. 解开 ezx-sdk 和 qt-2.3 的包

www.CCMOVE.com

3. 去Trolltech (http://www.trolltech.com) 的网站上去down tmake,安装。

www.CCMOVE.com

4. 创建一个目录比如我的:
mkdir /home/kerberos/e680/
cd /home/kerberos/e680
tar xvzf /qt-2.3.tar.gz的路径/qt-2.3.tar.gz
qt 的目录是 qt-2.3.6
tar xvzf /ezx-sdk.tar.gz的路径/ezx-sdk.tar.gz
tar xvzf /Other_lib_headers的路径/Other_lib_headers.tar.gz
ezx-sdk 的目录是 ezx, Other_lib_headers 的目录是other

www.CCMOVE.com

5. 拷贝头文件:
把ezx-sdk 和 other_lib_headers 解开的包的头文件拷贝到qt的头文件目录中:
cp ezx/include/* other/include/* qt-2.3.6/include

www.CCMOVE.com

6. 拷贝E680上的库文件:
首先要把E680的的一些库文件拷贝出来,方便的方法是telnet到E680以后,使用samba协议拷贝
\\169.254.142.2\system\usr\lib\ezx\lib\ 的库到qt-2.3.6的lib目录下
\\169.254.142.2\system\usr\lib\libezx* 到qt-2.3.6的lib目录下
拷贝过程中要注意,不要拷贝符号链接的库。 只有版本号最长的文件名的库才是真正的库文件。

www.CCMOVE.com

7. 安装tmake:
随便把tmake解开到某个目录中,比如我的在/home/kerberos/e680/tmake-1.8
由于生成Makefile文件需要一些设置,我们这样来做:
cd tmake-1.8/lib/qws
cp linux-arm-g++ linux-e680-g++ -r
vim linux-e680-g++/tmake.conf
来修改tmake.conf文件,具体改这么几行:
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-xs cale-r -lezxfunlight-xscale-r
这样是为了连接 EZX库

www.CCMOVE.com

8. 设置环境变量:
修改 /home/kerberos/.barshrc (你的可能在不同的用户目录下)
增加以下几行:
PATH=/usr/local/arm/binPATH
QTDIR=/home/kerberos/e680/qt-2.3.6
TMAKEPATH=/home/kerberos/e680/tmake-1.8/lib/qws/linux-e680-g++
export PATH TMAKEPATH QTDIR

www.CCMOVE.com


使环境变量生效:
source /home/kerberos/.bashrc

www.CCMOVE.com

9. 测试程序:

www.CCMOVE.com

cd /home/kerberos/e680/
mkdir test
cd test
编辑一个工程文件: testezx.pro
=====================以下是文件内容:
TEMPLATE = app
CONFIG += qt thread release warn_off
TARGET = testezx

www.CCMOVE.com

HEADERS +=

www.CCMOVE.com

SOURCES += test.cpp
LIBS +=
================文件内容结束

www.CCMOVE.com

编辑源文件:
===================== test.cpp 文件内容如下:

  1. #include <ZApplication.h>
  2. #include <ZMainWidget.h>
  3. #include <ZMultiLineEdit.h>
  4. #include <qlineedit.h>
  5. #include <ZScrollView.h>
  6. #include <qframe.h>
  7. #include <ZPushButton.h>
  8. #include <qpushbutton.h>

  9. www.CCMOVE.com

  10. int main (int argc, char** argv)
  11. {
  12.         QWidget* cst;
  13.         ZScrollView* sv;
  14.         ZMultiLineEdit* ml;

  15. www.CCMOVE.com

  16.         ZApplication app (argc, argv);
  17.         ZMainWidget* w = new ZMainWidget (true,0);
  18.         sv = new ZScrollView (w, "sv");
  19.         w->setContentWidget (sv);
  20.         sv->show ();

  21. www.CCMOVE.com

  22.         /*
  23.         QPushButton* bt = new QPushButton ("Hello E680!", sv->viewport());
  24.         sv->addChild (bt, 0, 0, true);
  25.         bt->show ();
  26.         */

  27. www.CCMOVE.com

  28.         ml = new ZMultiLineEdit (sv->viewport(), true, 6);
  29.         sv->addChild (ml, 0, 0, true);
  30.         ml->show ();

  31. www.CCMOVE.com

  32.         cst = w->getCSTWidget();

  33. www.CCMOVE.com

  34.         QPushButton* mybt = new QPushButton ("quit button", cst);
  35.         mybt->show();

  36. www.CCMOVE.com

  37.         QObject::connect ( mybt, SIGNAL(click()), qApp, SLOT (slotQuickQuit()) );

  38. www.CCMOVE.com

  39.         app.setMainWidget (w);
  40.         w->showWithInputMethod(IMID_ENGLISH_KB);
  41.         app.showMainWidget (w);
  42.         return app.exec();
  43. }
复制代码

==================test.cpp文件内容结束

www.CCMOVE.com

编译程序:
tmake testezx.pro > Makefile
make

www.CCMOVE.com

10. 运行程序:
把 testezx 拷贝到SD卡上,telnet 到小E上。运行:
. /home/native/.profile
注意 点后面有一个空格的。
./testezx
你就看见一个空的窗口和一个英文键盘了。

www.CCMOVE.com


基本上还是我没有拿到小E时候的思路,呵呵,看来我的感觉越来越灵敏了。

www.CCMOVE.com
作者: cwmould    时间: 2005-12-22 17:03
这是QT的资料,看来,在搞透这个手机,要好好研究一下编程喽(俺以前LINUX,C啥都会点,什么都不精,看来,要学习一下了)

http://www.qiliang.net/qt/index.html
作者: bitzilla    时间: 2005-12-22 21:34
原帖由 cwmould 于 2005-12-14 11:13 发表
俺前一阵买了一个MOTO E680I(水的,没钱呀), 使用的是嵌入式LINUX,一直停留在看电影听歌看书的应用基础上,最近由于要装主题,必须要使用TELNET,一番探索之后终于成功了,进去一看,HOHO,原来竟然内核为2.4.2 ...

呵呵,终于有人发现了。
作者: skynew    时间: 2005-12-22 21:53
一般嵌入式linux手机都是用motavisa的编译器。
你可以利用minicom连接手机,用gcc -v看看编译器版本。
这个是我现在用的。gcc version 3.3.1 (MontaVista 3.3.1-7.0.2.0401382 2004-10-0

minicom连接通过候,可以运行一些linux下的命令。
如果要传送文件,可以用蓝牙,无线网络,或者usbdnet,如果手机上有lrzsz,还可以通过minicom传送文件。

建立交叉编译环境后,如果不涉及图形的话,只要把你的程序用arm_v4t_le-gcc编译,编译后的文件即可再手机上运行。如果涉及图形库,还需要再电脑上设置环境变量,这可以看一些qtopia-phone方面的知识。
网上很多介绍。大家DIY自己的手机吧
作者: cwmould    时间: 2005-12-23 09:08
现在手机默认是没有GCC编译器的,兄弟手里有的话能否专一份:flashgirl@21cn.com
作者: 湖心小筑    时间: 2005-12-23 09:21
怎么看自己手机的操作系统是什么呢?
作者: cwmould    时间: 2005-12-23 10:30
你的手机啥型号?智能手机才有OS的
作者: 湖心小筑    时间: 2005-12-23 10:53
NEC N750 什么叫智能手机?
作者: cwmould    时间: 2005-12-23 15:50
当然不是了,顺便说一下,严重BS日本手机,SE、NEC之类俺从来不看
作者: 湖心小筑    时间: 2005-12-23 15:55
那什么叫智能手机?  我以前找了一段时间 一直都没找到他是什么操作系统?

[ 本帖最后由 湖心小筑 于 2005-12-23 15:56 编辑 ]
作者: cwmould    时间: 2005-12-23 17:06
这不是手机论坛,手机问题你可以去www.younet.com友人看看,非常专业
作者: 湖心小筑    时间: 2005-12-23 17:30
呵呵 谢谢了!

我刚从google上搜到了! 

呵呵 还是很感谢!

这个方向只是自己想了解的一个方向 而非工作内容  所以有时候没有时间全面去找,有时候就是有点时间去找一下的话,也会因为方向不准而找不到自己想要的东西。所以就顺便问了一下。 
作者: fazi    时间: 2005-12-23 19:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: Solaris12    时间: 2005-12-24 13:24
原帖由 colddawn 于 2005-12-16 13:19 发表
更正,不是X86,是Arm的
交叉编译环境搭建很麻烦,可以参考http://www.motorolafans.com/论坛上的一些文章。
国内在Motolinux手机编程方面有不少牛人的,680的源代码包就是国内的人首先拿到的,但是 ...


我看介绍好像是intel xscale的处理器
作者: rstevens    时间: 2005-12-31 13:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: colddawn    时间: 2005-12-31 16:10
原帖由 Solaris12 于 2005-12-24 13:24 发表


我看介绍好像是intel xscale的处理器



是Xscale处理器没错,这个处理器的指令集为Arm
作者: colddawn    时间: 2005-12-31 16:14
原帖由 rstevens 于 2005-12-31 13:33 发表
呵,这么多朋友对 moto 的 linux 手机感兴趣

那正好,我就简单介绍一下 moto linux 手机,并顺便做个小广告。

moto 的 E680, A760, A780,以及马上要上市的 A1200 都是 linux 手机,这些手机主要是由 moto北 ...


手上就有一部E680I,这些开发都是北京完成的?包括核心API?没想到阿呵呵

我倒是觉得如果Moto把中心转移到Linux上,那首先要做的是公布源代码,最起码公布一些基础api,例如图形和声音的,GSM部分可以适当保留无所谓,再公布部分开发文档和编译平台的搭建,相信愿意为手机ilinux写软件的就大有人在了,现在想要编译出个hello world都要难死一批人,相反Win CE &Smartphone就太简单了,所以sp平台的软件发展才能这么快,moto再不赶上小心linux市场分额被抢。


如果实在不公布,告你们违反GPL
作者: SunGod    时间: 2005-12-31 19:19
moto不像做开放性系统的料.......
作者: kwest    时间: 2006-01-06 18:52
MontaVista Linux是要钱的哦。。。
偶以前接触过MVL PE3.0(MontaVista Linux Profession Edition 3.0)
用的交叉编译工具是: arm_xscale_be 系列工具。。
不知道MOTO的这款手机系统是不是也是用这个编译的?

MVL_logo.gif (17.1 KB, 下载次数: 97)

MVL_logo.gif

作者: Iva    时间: 2006-01-07 17:19
原帖由 rstevens 于 2005-12-31 13:33 发表
呵,这么多朋友对 moto 的 linux 手机感兴趣

那正好,我就简单介绍一下 moto linux 手机,并顺便做个小广告。

moto 的 E680, A760, A780,以及马上要上市的 A1200 都是 linux 手机,这些手机主要是由 moto北 ...



呵呵,居然遇到开发组了……

能不能把这些手机官方的firmware开放出来下载呀?网上虽然找得到,但用着总不放心,咱们用水货的也不好去麻烦客服……
作者: Iva    时间: 2006-01-07 17:25
原帖由 colddawn 于 2005-12-31 16:14 发表


手上就有一部E680I,这些开发都是北京完成的?包括核心API?没想到阿呵呵

我倒是觉得如果Moto把中心转移到Linux上,那首先要做的是公布源代码,最起码公布一些基础api,例如图形和声音的,GSM部分可以适当 ...


内核源码早就已经在sf.net公开下载了。
作者: jeffshia    时间: 2006-01-08 10:50
这些手机上基本上用的都是什么核阿?
我是说cpu.
作者: npcomet    时间: 2006-11-25 01:01
原帖由 cwmould 于 2005-12-16 10:06 发表
intel Xcale 312Mhz CPU, 具体指令集不太详细,估计应该是X86的,软件为montaVista 消费电子版LINUX 3.0,他们还有一个专业版,估计那个功能的指令应该多些,其实如果这个如果能提供开发环境,那么大部分的LINUX/ ...

分析的太好了
作者: npcomet    时间: 2006-11-25 01:08
原帖由 skynew 于 2005-12-22 21:53 发表
一般嵌入式linux手机都是用motavisa的编译器。
你可以利用minicom连接手机,用gcc -v看看编译器版本。
这个是我现在用的。gcc version 3.3.1 (MontaVista 3.3.1-7.0.2.0401382 2004-10-0

minicom连接通过候 ...

牛 你的手机带GCC?
作者: npcomet    时间: 2006-11-25 01:11
原帖由 rstevens 于 2005-12-31 13:33 发表
呵,这么多朋友对 moto 的 linux 手机感兴趣

那正好,我就简单介绍一下 moto linux 手机,并顺便做个小广告。

moto 的 E680, A760, A780,以及马上要上市的 A1200 都是 linux 手机,这些手机主要是由 moto北 ...

交流下
作者: lonelykiller001    时间: 2006-11-25 16:59
标题: 回复 6楼 Solaris12 的帖子
robert love 是 novell 的
作者: 三点一四    时间: 2006-11-26 15:01
我的手机是MOTO A780跟E680软件系统差不多,详细的系统信息如下:

QT/E: version 2.3.6
Linux kernel: version 2.4.20_mvicee30-manstone compiled by: (BJDC@LINUX)
LINUX: version:MontaVista Linux Consume Electronics Edition 3.0
           Model:Motorola Ezx Platform
          Vendor:Motorola
作者: wheel    时间: 2006-11-30 18:07
moto已公布A1200/E680/A780源代码!制约娱六发展的瓶颈可以解除啦!源代码在 https://opensource.motorola.com下载
构造E680交叉编译环境

   这里我们使用很简单的一个构造方法。在http://lsb.blogdns.net/ezx-crosstool
下载ezx-crosstool-0.5.tar.bz2文件,这个工具是由个人整理的,去掉了与ARM
无关的很多脚本,并且限定了需要编译的文件版本,使用起来比较简单。

   本机新建了一个用户gcc,准备用于编译,root用户会提示禁止操作的。
   这里使用的是在/home/gcc目录下用gcc用户解压:
   bunzip2 ezx-crosstool-0.5.tar.bz2
   tar xvf ezx-crosstool-0.5.tar
   系统会自动生成/home/gcc/ezx-crosstool-0.5这个目录。


   在ftp://ftp.gnu.org/pub/gnu下载如下四个文件,且必须是如下版本:
   
   binutils-2.15.tar.bz2              一组开发工具,包括连接器、汇编器
                                      和其他用于目标文件和档案的工具
   gcc-3.3.6.tar.bz2                  GCC编译器的源代码
   glibc-2.3.2.tar.bz2                提供系统调用和基本函数库
   glibc-linuxthreads-2.3.2.tar.bz2   用于支持POSIX线程的函数库  
   
   在http://www.kernel.org/pub/linux/kernel/v2.4/下载如下一个文件:
   
   linux-2.4.26.tar.bz2               Linux核心源代码
   
   全部下载后,放在/home/gcc/ezx-crosstool-0.5/downloads下,打开
/home/gcc/ezx-crosstool-0.5/build.sh文件,内容如下:
   
   #!/bin/sh
   set -ex
   CROSSTOOL_DIR=`pwd`
   TARBALLS_DIR=$CROSSTOOL_DIR/downloads
   RESULT_TOP=$CROSSTOOL_DIR/gcc-arm-iwmmxt
   export TARBALLS_DIR RESULT_TOP
   GCC_LANGUAGES="c,c++"
   export GCC_LANGUAGES
   ...
   
   详细内容以后会解释,这里只注意RESULT_TOP=$CROSSTOOL_DIR/gcc-arm-iwmmxt
这句,这是说明编译后的路径,可以自定义修改。
   如:
   RESULT_TOP=/home/gcc/arm
   
   到这里,准备工作就结束了。
   cd /home/gcc/ezx-crosstool-0.5
   ./build.sh
   
   我使用的笔记本(512M+PM1.7G)+虚拟机,大概不到两个小时。完成后在系统环境
PATH添加新路径内容。
   export PATH=$PATH:/home/gcc/arm/gcc-3.3.6-glibc-2.3.2/arm-linux/bin

      
四、测试环境

   hello.c
   
#include <stdio.h>
int main()
{
float myvalueA=1.9;
float myvalueB=2.8;
printf("Hello!My E680!\n");
printf("Testvalue:%f\n",myvalueA+myvalueB);
return 0;
}  

   输入:arm-linux-gcc -o moto hello.c,生成可执行文件,这里在Linux下显
然是不能执行的,复制到你的手机上,在telnet下进入可执行文件所在目录,输入
命令:./moto,显示:

   Hello!My E680!
   Testvalue:4.700000

可以看到正常显示,而且也没有所谓的浮点型Bug。这里我们没有使用图形化的
内容,所以不需要设置环境变量,以后会有更具体的例子说明,现在交叉编译环境
已成功搭建,终于迈开第一步了。我们也将在下文做进一步的讨论。
作者: wheel    时间: 2006-11-30 18:09
三、BusyBox的编译

   Busybox是一个集成了多个最常用linux命令和工具的软件。首先下载Busybox
源代码,这里使用的是busybox-0.60.5.tar.gz版本。

   1.在Linux解压缩,或者在Windows下解压缩复制到Linux里面
   tar xcvf busybox-0.60.5.tar.gz
   
   2.cd busybox 进入目录,查看Makefile文件,实在比较复杂,不过确是了解源代码
结构的最好方法!对这个文件作如下两处修改。
   
   a.将84行下面这6行内容
   
   # If you are running a cross compiler, you may want to set this
   # to something more interesting, like "powerpc-linux-".
   CROSS =
   CC = $(CROSS)gcc
   AR = $(CROSS)ar
   STRIP = $(CROSS)strip
   
   修改为
   
   # If you are running a cross compiler, you may want to set this
   # to something more interesting, like "powerpc-linux-".
   CROSS = /home/gcc/arm/gcc-3.3.6-glibc-2.3.2/arm-linux
   CC = $(CROSS)/bin/arm-linux-gcc
   AR = $(CROSS)/bin/arm-linux-ar
   STRIP = $(CROSS)/bin/arm-linux-strip
   
   注意:CROSS内容后面不可有空格,结合CC,AR,STRIP的内容,一定要保证是你
自己机器上arm-linux-gcc,arm-linux-ar,arm-linux-strip的位置,这里使用的是上
篇文章里编译的路径。
   可以看出这里是为了指定使用的编译器。
   
   b.将108行如下内容
   
   #LDFLAGS+=-nostdlib
   #LIBRARIES = $(LIBCDIR)/lib/libc.a -lgcc
   #CROSS_CFLAGS+=-nostdinc -I$(LIBCDIR)/include -I$(GCCINCDIR)
   #GCCINCDIR = $(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")

   修改为
   
   #LDFLAGS+=-nostdlib
   #LIBRARIES = $(LIBCDIR)/lib/libc.a -lgcc
   CROSS_CFLAGS+= -I$(CROSS)/arm-linux/include -I$(CROSS)/arm-linux/sys-include#-I$(GCCINCDIR)
   #GCCINCDIR = $(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")

   这里指定的是使用头文件。
   
   3.修改后保存,编译
   
   在busybox路径下,执行命令make all,如有错误,多半是上面所述Makefile文件的问题,
修改后先执行make clean再执行make all。
   成功之后,最后会显示:
   
   BusyBox Documentation

   mkdir -p docs
   pod2text docs/busybox.pod > docs/BusyBox.txt
   mkdir -p docs
   pod2man --center=BusyBox --release="version 0.60.5" \
       docs/busybox.pod > docs/BusyBox.1
   pod2html --noindex docs/busybox.pod > docs/BusyBox.html

   4.将busybox路径下编译成功的busybox文件,复制到手机,telnet,并进入
busybox所在目录,输入类似以下命令:

   ./busybox --help
   ./busybox lsmod
   ./busybox date
   ...
   
   没有任何问题。   
   
   我们telnet下输入这个命令,在Busybox所在目录建立testbox.lin文件
   ./busybox echo `pwd`/busybox date \> `pwd`/date.txt > testbox.lin
   在E680g上用Loader关联打开后,Busybox所在目录下会生成包含当前日期的
date.txt文件。

四、利用dev-ezx工具开发图形化程序

   1.下载dev-ezx-0.2.0工具,解压缩复制到Linux下。可以看到一个英文说明
文件BUILD-INSTRUCTIONS,其实里面讲得很清楚,这里用中文重复一下。

   2.telnet进入e680g,将/usr/lib打包,复制到Linux解开,把解开的文件复制
dev-ezx-0.2.0的lib目录下。
   tar cvf lib.tar /usr/lib
   
   3.进入dev-ezx-0.2.0/moc目录上,执行命令make all编译moc。
   
   4.进入dev-ezx-0.2.0/helloworld下,执行命令make,此时需要设置好PATH环境
变量,否则会系统会找不着arm-linux-g++。

   5.编译成功后,将helloworld复制到手机上。图形化的程序需要设置QT等环境
变量,如下:

   export QTDIR=/usr/lib/ezx
   export LD_LIBRARY_PATH=$QTDIR/lib
   export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
   cd /mmc/mmca1
   ./helloworld
   
   即可看到运行效果,关于QT图形化编程方面,就需要查阅相当多的资料了。
   
五、最后
   
   通过这两个例子,我们清楚有了交叉编译环境,才能谈得上扩展E680的功能。
作者: connet    时间: 2006-12-01 11:52
原帖由 npcomet 于 2006-11-25 01:08 发表

牛 你的手机带GCC?

没有也可以创造阿
加载 nfs 或 smb, 或 使用 sd 卡, 在网上或sd 上搞个 xscale 的 root, chroot 过去 就可以 native build 了。
作者: simonzhan    时间: 2007-02-13 15:30
标题: 呵呵,强,偶前星期新入手了一台E6,好玩哦
现在也要深入系统看看哈,不过最近在研究在小6上用GPS,偶用的软件是trekbuddy,也是个免费的,不错的说,有经验的朋友欢迎来交流啊
作者: sjzwyb    时间: 2007-02-13 16:39
太高深了,有点吃不消
作者: 醉酒大哥    时间: 2011-07-12 13:25
{:3_191:}{:3_191:}{:3_191:}
作者: 0xcccccccc    时间: 2012-04-22 20:33
怎么用shell?
有个尘封许久的em30  还能执行shell?  想玩玩




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2