2009年3月12日星期四

拆解全球首款Android手机G1

日经BP社"技术在线"对业内首款采用了Google公司Android手机平台的智能手机T-mobile G1进行了拆解。与具有类似功能的同类智能手机相比,G1的价格还不到其它产品的2/3。

   在易用性方面,G1也非常出色,它具有3种输入用户接口,包括触摸屏、5行QWERTY键盘,以及轨迹球鼠标。目前具有这3种输入接口的智能手机仅有 WILLCOMD4。多个用户接口的优势在于可以根据不同的应用场合选择合适使用的接口。不过,这款手机的触摸屏不具备多触点功能,不能同时检测多个触摸 动作。

图1 T-mobile G1的结构


外围部件均采用标准部件

   G1可分为两部分,即显示部分与键盘部分。显示部分包括液晶屏等,键盘部分则包括键盘与各电路板。其中,显示部分、液晶屏及键盘部分的表面均采用标准部 件,以控制生产成本(见图1)。具体来说,从覆盖触摸屏与充电电池的内盖到容纳主板的机身,全部采用成本较低的塑料材料。触摸屏的ASIC芯片及其与键盘 部分进行连接的软电缆采用了美国Synaptics公司的产品。电池也采用了普通的锂离子充电电池,电池容量为1150mAh,用户可自行更换。

主板上大多采用0603元件

  主电路板上的元器件密度很高(见图2)。电路板表面安装了用于W-CDMA/HSPA无线通信的芯片组,内侧则安装了GSM/EDGE的芯片组。

  另外,在电路板表面由高通公司生产的手机芯片组的周围,密密麻麻地安装了许多0603元件。该芯片组内的MSM7201A同时也是Android操作系统中Linux内核的应用处理器。用来切换频率的RF开关使用的是索尼公司的SP9T(单刀九掷)产品。

罗盘模块是日本生产

图2 主电路板上安装了手机通信芯片组
图3 子电路板上安装了WLAN及轨迹球鼠标的传感器图4 手机天线采用了薄铝箔


  除了通信芯片组外,主板内侧还安装了Xilinx公司的 CPLDCoolRunner-II(XC2C128),用于对芯片之间的协同工作进行辅助。

  主板内侧还安装了日本旭化成电子公司生产的电子罗盘模块,其中集成了磁传感器与加速度传感器。如果将该罗盘功能与GoogleMaps组合使用,就可以看到使用者所在位置的实际情景。

  WLAN与蓝牙的收发功能都集中于主电路板之外的子电路板上(见图3)。收发芯片全部使用德州仪器(TI)公司的产品。另外,子板上还安装了用于检测轨迹球鼠标动作的芯片。

无利润空间的低价天线

  虽然G1出乎意料地使用了许多高成本器件,但也有刻意追求低成本的部件,这就是天线组。G1中的手机天线和GPS天线呈片状,材质为厚约0.2mm的薄铝箔,贴在黑色机壳内(见图4)。WLAN与蓝牙使用的2.4GHz频带天线也采用金属材料,隐形安装在机身内。

  虽然G1的主电路板采用了高密度安装技术,因此颇费成本,但其它外围部件可以说是尽其所能地降低了成本。而且,该产品之所以能实现极具竞争力的低价位,其所使用的Android软件平台也功不可没。

2009年3月8日星期日

Ubuntu/Fedora linux加载硬盘及备份硬盘记录

一、 加载硬盘

以下命令需要ROOT权限:

1、查看分区:

fdisk -l

/dev/sda (第一块硬盘,安装时选择了自动分区)

/dev/sda1 Linux (逻辑分区)

/dev/sda2 Extend (扩展分区)

/dev/sda5 Linux Swap (临时交换区)

/dev/sdb (第二块硬盘,还没分区,提示没有包含分区表)

物理分区使用a、b。。。编号,每个物理硬盘最多有四个主逻辑分区(或扩展分区),所以自动分区中,扩展分区sda2下第一个逻辑分区编号从5开始。

2、分区sdb:

fdisk /dev/sdb

选择m:查看命令。

选择n:add a new partition

选择p:添加逻辑分区,开始默认1,结束为+2048M,就是分2G给第一个逻辑分区

选择p:查看分区,可看到新增了一个分区sdb1

选择w:保持分区表信息

3、格式化:

用fdisk -l查看,可以看到sdb下新增多sdb1,再执行格式化

mkfs -t ext3 /dev/sdb1

4、挂载:就放到/media下吧,这个目录以后可以在桌面看到

mkdir /media/sdb1

mount /dev/sdb1 /media/sdb1

用df查看下(df -m),可以看到/dev/sdb1大小为1946,目录为/media/sdb1

5、添加到自动挂载中:修改/etc/fstab

# /dev/sdb1
/dev/sdb1 /media/sdb1 ext3 defaults 0 0

6、重启,可以看到桌面上出现了一个盘。

shutdown -r now

或者reboot


二、备份硬盘数据:

建一个目录以挂载第二块硬盘

mkdir /mnt/backup

mount -t ext3 /dev/sdb1 /mnt/backup

备份数据,只用的tar命令


tar -cvpzf /mnt/backup/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media /

接着,让我们稍微解释一下:
tar 是用来备份的程序
c - 新建一个备份文档
v - 详细模式, tar程序将在屏幕上实时输出所有信息。
p - 保存许可,并应用到所有文件。
z - 采用‘gzip’压缩备份文件,以减小备份文件体积。
f - 说明备份文件存放的路径, /media/sda7/backup.tgz 是本例子中备份文件名。这个备份文件备份的位置是其它分区,也就是原来的WIN分区中。因为我的根目录的空间不足,所以只有备份在其它的地方了。
来看看我们想要包含的目录。我们不想备份所有的东西,因为有些目录是没有多大用处的。确认你不想包含的文件,否则您会得到一个很奇怪的结果。 您也不必备份 /mnt 目录下的东西,除非您有其他分区挂在它下面或者你坚持要备份。您还必须确保没有任何资源挂在 /media 目录下(比如,任何CD或者移动存储介质).否则,剔除/media。
* 最後一个参数是我们想要保存的目录. 我们想要保存所有的东西,使用 / 作为根目录。

更多参数见man tar


将来还原系统备份:

我们在从硬盘上创建了一个名为backup.tgz的备份文件。

Linux 中美妙的事情之一就是在系统正在运行的情况下可以进行还原操作,而不需要启动光盘或者其他任何乱七八糟的东西。当然,如果您的系统已经崩溃,那您必须选择 使用live CD,但是结果还是一样。你甚至可以在Linux系统正在运行的时候,移除它里面所有文件。可是我不告诉你那个命令!
mount -t ext3 /dev/sdb1 /mnt/backup
tar -xvpzf /mnt/backup/backup.tgz -C /

如果您使用的是bz2压缩的:

tar -xvpjf /media/sda7/backup.tar.bz2 -C /

参数x是告诉tar程序解压缩备份文件。 -C 参数是指定tar程序解压缩到的目录。 ( 在本例中是/ )

2009年3月2日星期一

AutoSettings Design Doc


AutoSettings Design Doc

source - http://code.google.com/p/autosettings/
----
20081101 Goal

Goal:
- a simple replacement to Locale that actually works for _me_.

Locale pros & cons:
- Pros: it's free and it's already there.
- Cons: it should be in the platform, not a separate app.
- Cons: non-standard UI for tabs, deletion and time picker.
- Cons: does many things I don't care yet doesn't do stuff I need.

Non-goal:
- complete feature set of Locale, most of which is not useful to me.


Desired Features (rating number: 1=important to me, 2=less important, 3=useless):
- Location triggers:
[1] cell-id (coarse loc) vs [2] gps (fine loc), made explicit + update rate.
- Time trigger:
[1] start/end.
- Date trigger:
[2] week-of-day
- Settings:
[1] silent (what power>sound off does)
[1] ring volume
[1] vibrate
[1] brightness
[2] wifi on/off

For each trigger type (location, time, date), users create instances of
these triggers (i.e. home via cell id, home via gps, night time, week-end).

Triggers have an implicit "next event" timestamp. E.g. for a timer, it's the end
of the timer, for day it's 24 hours and for cell/gps it's the update rate.

A profile is composed of:
- a list of 0 or more trigger instances (add, edit, delete)
- a list of settings to set (add, edit, delete)
- trigger mode: or (any) or and (all)
- activated flag
- exclusive flag: only one flag can be exclusive and thus only this one is
activated. This is for manual activation.

Profile list:
- profile can only be activated if it has 1 or more settings.
- profile list: add, edit, delete, up, down
- when more than one profile works, apply in the profile order.
- when marked as exclusive, gray all other profiles

There's a list of profiles, with a "default" one (cannot be deleted).
Another default profile should be "silent".

Implementation:
- list of triggers { id, type, user-name, *value, curr-value, value-ts }
- list of settings { id, type, *proc }
- list of profiles { id, user-name, list trigger-id, list settings-id, activated }
- global: exclusive profile-id

- check service:
- for all triggers, update if value too old
- compute next check timestamp
- check profiles, if match, apply settings
- alarm/sleep till next check ts

----
20090120 Misc Ideas/suggestions

- conditions: time range and/or cellid/gps (+rate check)
- profile group of setting with same condition) vs (condition per setting).
- toggles: led, gps, cellid, wifi, 2g/3g
- levels: media/ringer volumes, brightness
- settings for weekends vs weekdays or weekly
- home icons for profiles

2009年3月1日星期日

First Android App Launched - PhoneFinder

http://www.blogger.com/post-create.g?blogID=3661548036467375452

When your phone is lost or stolen you will be able to use someone else's phone to retrieve the GPS coordinates at your phone's location to help you find it via a SMS with special format.

welcome to comment it.