[讨论]转个dopod699运行linux的帖子。如有更多人参与进来就好了!!!

笔记本/便携移动设备,手机平板等软硬件
回复
arthur.lu
帖子: 146
注册时间: 2008-04-20 8:51

[讨论]转个dopod699运行linux的帖子。如有更多人参与进来就好了!!!

#1

帖子 arthur.lu » 2008-08-13 13:51

本贴为O2 XDA IIi安装Linux系统的,同样适用于DOPOD 699等相同硬件配置的手机。


前段时间本想研究O2 XDA IIi的WM5或WM6 ROM,但是未果,国外站点也没有太多的资料,无意中发现国外有些论坛在讨论PPC上安装Linux系统的话题,很感兴趣。既然咱们的699现在不能刷WM5或WM6,那就再NB一点有什么不可以呢?咱们直接就玩Linux。

(也许有些DX已经实现699刷WM5或6,只是我还没看到699的相关帖子,只是知道修改XIP可以,但是没试成功,哪位知道请提供相关资料,万分感谢!)

本教程所提到的启动工具和镜像以及PPC上的Linux系统,在本帖最后提供下载。
如果想要定制编译内核,PC机上用到的Linux操作系统请自行安装或下载镜像文件在Windows下用Vmware虚拟机安装。
由于工作需要,本人使用的是RedHat Linux Server 5,其实任何一个支持U盘和可以访问互联网的Linux系统都可以,甚至是Windos系统都可以,只是编译环境和软件的问题,Windos下编译环境不成问题,只是缺少制作ext2分区和将tar.gz压缩包解压到ext2分区的软件,我相信这样的软件是一定可以找到的,只是为了方便,本人就以Linux系统为例,毕竟手机系统也是Linux,一家人说话方便嘛,至于Windows系统下操作会遇到的一些问题我们稍后再说。
按此帖中的方法在其它PPC系统上也同样可以根据实际情况安装Linux,但是如果安装在其它型号硬件系统上需要重新编译image,需要的朋友可以把手机型号发上来。有空我会把image放上。

好了,开始吧,

先来看一下我们的699配置:

网络频率:GSM/GPRS;900/1800/1900MHz
重 量 :190 克
尺寸/体积:130×69×19mm
屏幕参数:65536色TFT彩色屏幕;240×320像素,3.5英寸
操作系统:Windows Mobile 2003 Second Edition for Pocket PC
处理器:Intel PXA272 520MHz
这么强的配置怎么会没有WM5或WM6呢?大多数的理由是硬件配置的问题。
不同硬件配置的手机安装同一个Linux也是不一定可行的,应用程序上的当然没问题,但是涉及到系统启动中加载的驱动,要么选择兼容(稳定性稍差),要么选择跳过(功能缺失),否则,系统是无法启动的。
想要在其它基于Windows系统的手机上安装Linux,需要针对不同的硬件配置编译内核,对于WM系统就是要重新开发驱动。Linux也正是在这样的时候才能显示出来他开源的优势。

先说安装系统,咱们最后再说定制系统和Windows下制作系统遇到的一些问题。
1.下载启动软件:boot.zip
2.下载系统软件:system.tar.bz2
3.将系统用SPB BACKUP备份到SD卡,因为手机会硬启。
4.将SD卡备份,也就是把SD卡上所有内容复制到台式机硬盘,因为需要重新为SD卡分区。
5.找一台Linux系统的电脑,或者在Windows上安装Vmware虚拟机安装一个Linux,系统要支持U盘。
6.将SD卡插入读卡器,连接Linux,在Vmware下需要选择VM-Removable Device-USB Device。
7.为SD卡分区。当SD卡连接上以后Linux会认出USB设备,
如果系统硬盘是IDE的,SD卡应该为/dev/sda
如果硬盘时SATA的,SD卡应该为/dev/sdb
某些读卡器也许会认出有多个盘,那就执行
ls/dev/sd* -l
看看到底是哪个,如果看到/dev/sda1,/dev/sda2之类的则代表第一个分区和第二个分区。
找到SD卡所代表的设备后(此处就拿SD卡为/dev/sdb)执行
fdisk /dev/sdb
输入p回车,再次看一下磁盘信息是不是SD卡。如果不是就按q退出,以免误删分区。如果是SD卡,那就继续按以下输入为SD卡分区。
o
回车
n
回车
p
回车
1
回车
不敲任何东西
直接回车
以下为分区大小,请先看说明再输入。
+10M
回车(以上数字是本人为128M的测试卡分的第一个分区,+10M为想要为SD卡划出的第一个分区的大小,如果是2G的卡,完全可以写+1800M,Linux分区用150M足够了)
以下为创建第二个分区
n
回车
p
回车
2
回车
什么都不敲
连续按两次回车
t
回车
1
回车
6
回车
w
回车
mkdosfs空格/dev/sdb1
回车
mke2fs空格/dev/sdb2
回车
至此,分区工作已经完成并已经为SD卡的分区建立了文件系统格式。

8.接下来需要将刚才下载回来的文件解压缩到SD卡上
首先,需要将新为SD卡的分的两个区加载到系统中。
我们建立两个目录
mkdir /mnt/sdfat
mkdir /mnt/sdext2
然后将SD卡的分区加载上去。
mount –t fat /dev/sdb1 /mnt/sdfat
mount /dev/sdb2 /mnt/sdext2
tar zxvf /dev/root/Desktop/boot.zip /mnt/sdfat
tar jzxvf /dev/root/Desktop/system.tar.bz2 /mnt/sdext2
至此,手机系统已经安装成功了。
把SD卡拿下来插回手机,然后在手机上执行SD卡里的boot.exe,系统会重启,使用SD卡上的系统启动,这样就启动Linux了。

尽情感受一下吧。速度快,功能多。
附件:
1.启动软件:boot.zip http://www.infoxmarket.com/tools/boot.zip
2.系统软件:system.tar.bz2 http://www.infoxmarket.com/tools/system.tar.bz2
3.Windows系统下读取Linux分区的软件这个可以读写EXT2,EXT3分区,比较NB!下载地址 http://www.infoxmarket.com/tools/Ext2Fsd-0.45.exe
4.Linux的zImage镜像,与附件1中的大同小异,只删除一行无用代码。下载地址 http://www.infoxmarket.com/tools/zImage

说明一下:
此Linux无法使用GSM和WIFI功能,无法接打电话,无法使用WIFI上网,红外和蓝牙使用正常。系统重启时需要硬启。由于此Linux只有键盘驱动,没有699的按键驱动,所以进入Linux后,按键无法使用。
本人在699上研究此系统纯粹出于个人爱好,提升PPC的使用价值。所有信息及资源全部免费提供。

Linux下的编译方法,后边慢慢再贴。
本帖旨在抛砖引玉,欢迎感兴趣的朋友一起研究,开发GSM和WIFI功能。

本贴旨在抛砖引玉,欢迎有兴趣的朋友一起研究。
附件
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
0.jpg
arthur.lu
帖子: 146
注册时间: 2008-04-20 8:51

#2

帖子 arthur.lu » 2008-08-13 13:56

本帖照片全部是本人699安装LINUX的真实效果,并非PS,人品还没那么差。

在这里我把可以安装的机型列出来,某些机型WIFI和GSM功能可以正常使用。手头没那么多测试机,没有一一试过。
以下可安装的机型全部出自国外论坛,并非本人猜测:
696 696i 699 700 818 828 838 D900 及同配置不同名的手机如QTEK 2020i,O2 XDAIIi等。

本帖旨在抛砖引玉,希望699的机友一起来努力提升699的价值。有兴趣的朋友欢迎交流。


在这里发两个网站:
http://handhelds.org/
http://www.xda-developers.com

这些网站都有关于PPC安装LINUX的帖子,在某个贴我还曾经见到过PPC上的IPHONE,但是后来没再找到那贴,也许是插件,也许真的是IPHONE移植,希望大家看到后跟贴上图。

由于本人是699的忠实机友,但那些网站大部分并不是针对699的硬件配置,所以本人自己翻译并且实践后将心得体会写在这里。

目前版本的LINUX确实不支持GSM和WIFI,本人正在努力中。但是一个人的力量永远是渺小的,希望广大LINUX爱好着一同努力,这并不是为了699,而是为了所有的PPC,所以我们的努力都是值得的。

http://www.infoxmarket.com


699的LINUX从功能上来讲和WINDOWS的差不多,但是软件比WINDOWS少得多。
699的LINUX从速度上来说比WINDOWS快一些,个人感受,只是打开一个2M的WORD文档试验了一下而已。

其实装LINUX并不会比699现有的系统有什么本质飞跃。只是换一种操作风格而已,感受一下LINUX下的软件设计,增长一下LINUX的知识,我更看重的是在LINUX下的开源,很多软件可以自己定制。



不需要刷机,但是要给机器做好备份,因为有可能会硬启。

这个系统是装在卡上的,然后用引导程序引导启动。

无论出现任何问题,硬启一下就行了。




LINUX 多普达699的GSM驱动源代码
/*
* GSM driver for HTC Alpine
*
* Copyright (C) 2006, Philipp Zabel
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of this archive for
* more details.
*/

#include <linux/module.h>
#include <linux/err.h>
#include <linux/delay.h>
#include <linux/platform_device.h>

#include <asm/io.h>
#include <asm/mach-types.h>

#include <asm/arch/hardware.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/serial.h>

int suspending;

/* FIXME: asic5 needs its own driver */

extern void htcalpine_cpld_egpio_set_value(int gpio, int val);

void *asic5_map;

void asic5_egpio_set_value(int gpio, int val) {
int bits = 1<<gpio;
static int egpio;

printk ("asic5_egpio_set_value(%d, %d)\n", gpio, val);

if (val)
egpio |= bits;
else
egpio &= ~bits;

__raw_writew(egpio & 0xffff, asic5_map+0x0);
__raw_writew(egpio>>16, asic5_map+0x2);
}

void asic5_phone_on(void)
{
printk ("asic5_phone_on\n");

__raw_writew((__raw_readw(asic5_map+0x28) | 0x3), asic5_map+0x28);
__raw_writew((__raw_readw(asic5_map+0x04) | 0x1), asic5_map+0x04);

__raw_writew((__raw_readw(asic5_map+0x28) | 0xc), asic5_map+0x28);
__raw_writew((__raw_readw(asic5_map+0x04) & 0xfffd), asic5_map+0x04);

__raw_writew((__raw_readw(asic5_map+0x28) | 0x30), asic5_map+0x28);
__raw_writew((__raw_readw(asic5_map+0x04) | 0x4), asic5_map+0x04);

__raw_writew((__raw_readw(asic5_map+0x28) | 0xc0), asic5_map+0x28);
__raw_writew((__raw_readw(asic5_map+0x04) & 0xfff7), asic5_map+0x04);
}


static void alpine_gsm_reset(void)
{
printk ("GSM Reset\n");

GPSR(36) = GPIO_bit(36);
pxa_gpio_mode(36 | GPIO_OUT);

pxa_gpio_mode (10 | GPIO_IN);
pxa_gpio_mode (108 | GPIO_IN);

asic5_egpio_set_value(0, 0); /* DTR? */

asic5_egpio_set_value(11, 0); /* magician: pxa gpio 11 */
GPCR(87) = GPIO_bit(87);

/* stop display to avoid interference? */
GPCR(GPIO74_LCD_FCLK) = GPIO_bit(GPIO74_LCD_FCLK);

htcalpine_cpld_egpio_set_value(15, 1); /* GSM_POWER */
asic5_egpio_set_value(22, 1); /* ?? */

msleep (150);
GPSR(GPIO74_LCD_FCLK) = GPIO_bit(GPIO74_LCD_FCLK);
msleep (150);
GPCR(GPIO74_LCD_FCLK) = GPIO_bit(GPIO74_LCD_FCLK);

asic5_egpio_set_value(11, 1);

/* FIXME: disable+reenable 86, is this OK? */
GPCR(86) = GPIO_bit(86); // ??
GPSR(86) = GPIO_bit(86); // GSM_RESET
asic5_egpio_set_value(9, 1); /* magician: pxa gpio 26 */
msleep(150);
GPCR(86) = GPIO_bit(86);
msleep(10);

pxa_gpio_mode(36 | GPIO36_FFDCD_MD); /* or just GPIO_IN? */

asic5_phone_on();
}

void alpine_gsm_off(void)
{
printk ("GSM Off\n");

htcalpine_cpld_egpio_set_value(1<<15, 0); /* GSM_POWER */
}

static void alpine_phone_configure (int state)
{
switch (state) {

case PXA_UART_CFG_PRE_STARTUP:
printk( KERN_NOTICE "alpine configure phone: PRE_STARTUP\n");
if (!suspending)
alpine_gsm_reset();
asic5_egpio_set_value(1<<11,0); /* ready to talk */
break;

case PXA_UART_CFG_POST_STARTUP:
printk( KERN_NOTICE "alpine configure phone: POST_STARTUP\n");
break;

case PXA_UART_CFG_PRE_SHUTDOWN:
printk( KERN_NOTICE "alpine configure phone: PRE_SHUTDOWN\n");
if (suspending)
asic5_egpio_set_value(1<<11, 1); /* shut up, please */
else
alpine_gsm_off();
break;

default:
break;
}
}

static void alpine_phone_suspend (struct platform_device *dev, pm_message_t state)
{
suspending = 0 /* should be 1, but we need CPLD irq support first, anyway */;
// return 0;
}

static void alpine_phone_resume (struct platform_device *dev)
{
suspending = 0;
// return 0;
}

struct alpine_phone_funcs {
void (*configure) (int state);
void (*suspend) (struct platform_device *dev, pm_message_t state);
void (*resume) (struct platform_device *dev);
};

static int alpine_phone_probe (struct platform_device *dev)
{
struct alpine_phone_funcs *funcs = (struct alpine_phone_funcs *) dev->dev.platform_data;

printk ("alpine_phone_probe\n");

asic5_map = ioremap (PXA_CS1_PHYS + 0x02000000, 0x1000);

/* configure phone UART */

funcs->configure = alpine_phone_configure;
funcs->suspend = alpine_phone_suspend;
funcs->resume = alpine_phone_resume;

return 0;
}

static int alpine_phone_remove (struct platform_device *dev)
{
struct alpine_phone_funcs *funcs = (struct alpine_phone_funcs *) dev->dev.platform_data;

iounmap(asic5_map);

funcs->configure = NULL;
funcs->suspend = NULL;
funcs->resume = NULL;

return 0;
}

static struct platform_driver phone_driver = {
.probe = alpine_phone_probe,
.remove = alpine_phone_remove,
.driver = {
.name = "htcalpine-phone",
},
};

static __init int alpine_phone_init(void)
{
if (!machine_is_htcalpine())
return -ENODEV;
printk(KERN_NOTICE "alpine Phone Driver\n");

return platform_driver_register(&phone_driver);
}

static __exit void alpine_phone_exit(void)
{
platform_driver_unregister(&phone_driver);
}

module_init(alpine_phone_init);
module_exit(alpine_phone_exit);

MODULE_AUTHOR("Philipp Zabel");
MODULE_DESCRIPTION("HTC Alpine GSM driver");
MODULE_LICENSE("GPL");




GSM已经调好了可以打电话,短信还没顾上研究,目前有待解决的问题还有
1、进入LINUX系统后一直没办法关机,每次都得拔电硬启,很郁闷,正在努力。。。
2、无线和红外还不能用,少了两个很强大的功能,正在努力。。。
3、蓝牙虽然能发现硬件,可是没法正常使用,正在努力。。。

这个LINUX系统经过测试发现很好用,执行起来速度也挺快。现在可能有新版本了,没时间上网,前边提供过几个网站,有兴趣的去看看吧。

奥运期间估计会比较忙,更没时间研究了。慢慢来吧,有兴趣的顶起来!!!
附件
001.jpg
000.jpg
09.jpg
08.jpg
07.jpg
06.jpg
05.jpg
04.jpg
03.jpg
02.jpg
arthur.lu
帖子: 146
注册时间: 2008-04-20 8:51

#3

帖子 arthur.lu » 2008-08-13 13:57

晕,论坛发附件的顺序竟然是倒着的。
xboss
帖子: 20
注册时间: 2007-11-02 16:31

#4

帖子 xboss » 2008-08-14 15:08

支持搂主,楼主精神可嘉。
笔记本电脑直销中
帖子: 24
注册时间: 2008-08-13 16:10
来自: 广东
联系:

#5

帖子 笔记本电脑直销中 » 2008-08-14 17:26

:P 支持楼主。虽然看不懂。。但我觉得楼主精彩好啊。。
头像
cs772421
帖子: 172
注册时间: 2008-08-01 7:29
联系:

#6

帖子 cs772421 » 2008-08-15 11:47

我想要一个能让ppc与linux系统的电脑进行数据同步的软件有没有?我用u盘模式仅仅是数据的传送!并不能进行同步!麻烦楼主帮我做一个吧!
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#7

帖子 bones7456 » 2008-08-15 11:54

不能打电话啊? 最好把那句放最前面吧?
关注我的blog: ε==3
arthur.lu
帖子: 146
注册时间: 2008-04-20 8:51

#8

帖子 arthur.lu » 2008-08-15 13:29

bones7456 写了:不能打电话啊? 最好把那句放最前面吧?
已经可以打电话了
笔记本电脑直销中
帖子: 24
注册时间: 2008-08-13 16:10
来自: 广东
联系:

#9

帖子 笔记本电脑直销中 » 2008-08-15 15:05

:lol:
头像
sfree
帖子: 603
注册时间: 2007-03-17 1:24
来自: 湖南长沙

#10

帖子 sfree » 2008-08-15 22:43

楼上的在做广告吧
demon28
帖子: 13
注册时间: 2008-08-18 0:45

#11

帖子 demon28 » 2008-08-18 15:59

我考!!!真的假的 。。。 我用的是o2 xda life - -!
我是有这心没这胆 。。。
不过能不能在 ppc上也来个双系统???嘿嘿
我的ppc内置rom有1g的空间。。。不知道可不可行
preston29
帖子: 32
注册时间: 2008-03-23 9:28

Re: [讨论]转个dopod699运行linux的帖子。如有更多人参与进来就好了!!!

#12

帖子 preston29 » 2009-07-24 15:57

多谢楼主~

先mark下~

也发个网站 http://anytux.org/index.php

:em01
felonwan
帖子: 262
注册时间: 2008-09-12 12:32

Re: [讨论]转个dopod699运行linux的帖子。如有更多人参与进来就好了!!!

#13

帖子 felonwan » 2009-07-26 0:41

真不错,顶LZ!

我现在用的黑莓8800,用着还好,不过做为一个 Linux爱好者, 想尝试下。不知道可不可以试下类似的方法?
回复