分类:
2009-12-17 15:02:08
FreeRunner手机的基本操作
本文记录一些FreeRunner手机的基本操作。本文把FreeRunner手机简称为fr。
1、ssh登录
1.1、主机用VMWare+Ubuntu
将VMWare窗口选为当前窗口,然后用USB线连接PC和FreeRunner手机。这时如果在VMWare窗口的状态栏看到USB图标,就说明已经检测到设备。
我用的虚拟机有时会出现插上USB线但VMWare没有反应的情况。这时可以检查一下VMWare/Ubuntu的本次启动是否正常。如果启动正常,可以先在USB上插一个容易识别的U盘或移动硬盘。识别后就umount掉,然后用同一个USB口连接fr,通常可以连接成功。
在连接好fr后,敲ifconfig可以看到usb0连接。配置这个连接的IP:
sudo ifconfig usb0 192.168.0.200
fr的IP地址默认是192.168.0.202。这时应该可以ping通fr。用ssh登录:
ssh
fr默认没有密码。提示输入密码时直接回车。你就登录了FR。如果在ssh时出现这样的提示:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
只要:
rm ~/.ssh/known_hosts
再用ssh登录就可以了。
1.2、主机用Windows
安装驱动后,设备管理器的网络适配器类别中会增加一个“Neo1973 USB Ethernet/RNDIS”。在网络连接中会增加一个本地连接。将这个本地连接的ip设为192.168.0.200后,你就可以用自己习惯的ssh工具(例如putty)登录fr了。
2、文件传输
在主机和fr之间传输文件既可以用scp,也可以用tftp。
2.1、scp
在主机上用scp复制文件到fr:
$ scp scim_1.4.7-r0_armv4t.ipk :
password:
scim_1.4.7-r0_armv4t.ipk 100% 1007KB 251.7KB/s 00:04
在fr上用scp复制文件到主机:
# scp 1.png :
password:
1.png 100% 68KB 67.9KB/s 00:00
下面的例子是在虚拟机中用scp将fr上的文件复制到虚拟机与windows的共享目录。
$ scp /mnt/hgfs/share/
password:
3.png 100% 205KB 204.6KB/s 00:00
2.2、tftp
如果主机上安装了tftp服务器,在fr上可以用tftp工具put或get主机上的文件。
2.2.1、安装tftp服务器
可以这样安装tftp服务器:
sudo apt-get install tftpd-hpa tftp-hpa
编辑/etc/default/tftpd-hpa:
$ cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -c -s /tftpboot"
"-l"表示独立启动,不依赖inetd。"-c"允许创建文件。"-s /tftpboot"在启动时将/tftpboot设置为根目录。创建/tftpboot,chmod到777。重启后就可以使用tftp服务了。
2.2.2、在fr上使用tftp
fr上的tftp通常是busybox中的简化版本,用法如下:
Usage: tftp [OPTION]... HOST [PORT]
Transfers a file from/to a tftp server using "octet" mode.
Options:
-l FILE Local FILE.
-r FILE Remote FILE.
-g Get file.
-p Put file.
使用示例如下:
# tftp -p -r 2.raw 192.168.0.200
# tftp -g -r scim-pinyin_0.5.91-r0_armv4t.ipk 192.168.0.200
"-p"是put 文件。"-g"是get 文件。
3、屏幕截图
最简单的方法是使用fbgrab。将这个安装包传输到fr后,用opkg或ipkg安装。例如:
opkg install fbgrab_1.0-r1_armv4t.ipk
安装了fbgrab后,截图就很简单了:
# fbgrab 1.png
不用fbgrab,也可以直接复制framebuffer中的数据,例如:
# cat /dev/fb0 > 2.raw
将原始数据文件传输到主机后,可以用fb2png转换到png,例如:
# fb2png 2.raw 2.png 0 480 640 16
fb2png用法如下:
fb2png 0.1 (2001-09-19)
fb2png [dev] [filename] [sec] (x) (y) (depth)
Usage: fb2png /dev/fb0 filename.png 5 800 600 24
参数[sec]是截图的延时时间,即截取sec秒后的图像。
4、通过usb线上网
在测试时可以让fr通过主机连接外网。在主机上执行:
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
sudo sysctl -w net.ipv4.ip_forward=1
iptables命令在nat表中添加一条规则,"-s 192.168.0.0/24"指定源数据包地址,其中"24"表示掩码255.255.255.0。 sysctl命令设置内核参数net.ipv4.ip_forward,允许主机转发ip包。
用ssh登录fr后执行:
# echo nameserver 208.67.222.222 > /etc/resolv.conf
# echo nameserver 208.67.220.220 >> /etc/resolv.conf
这两个ip是OpenDNS的DNS服务器地址,OpenDNS是一个提供免费DNS服务的网站。通过上述设置,我们就可以在fr上访问外网了,例如:
5、更新fr软件
5.1、简介
更新fr软件的通俗说法就是“刷机”了,我习惯说软件升级。软件升级有两种方式,通过jtag接口或者通过通过USB线。
通过jtag接口升级程序是通过CPU的jtag接口直接操作存储器,不需要手机程序配合。使用jtag方式需要调试板和相应的软件。
通过USB线升级程序需要手机里有个升级程序与PC程序通信,升级程序接收数据并更新存储器里的程序。软件升级功能是由手机里的boot程序实现的。通常升级程序不能更新自身。
与NEO1973不同,FreeRunner有一块NOR flash。如果通过NAND flash里的boot程序升级,我们可以更新kernel和rootfs,但不能更新NAND flash的u-boot。如果我们通过NOR flash里的boot程序升级,就可以更新kernel、rootfs和NAND flash的u-boot。
5.2、启动模式
除了正常启动外,我们还可以把fr启动到NOR boot或NAND boot模式。将fr左上方的按键称作aux键。先按下aux键并保持,再按下电源键,保持两键同时按下,过几秒钟就应该进入NOR boot模式。先按下电源键并保持,再按下aux键,保持两键同时按下,过几秒钟就会进入NAND boot模式。
我只用过NAND boot模式,因为我的fr不能进入NOR boot模式。我估计原因是这个fr的NOR flash是空的,没写入boot程序。我用grep在flash中查找boot程序版本:
:~# grep Bootloader /dev/mtdblock1
Neo1973 Bootloader U-Boot 1.3.2-rc2-dirty-moko12
:~# grep Bootloader /dev/mtdblock0
:~#
在NAND flash中可以找到boot程序版本。在NOR flash里却找不到boot程序。
5.3、用dfu-util升级程序
升级用的PC程序是一个叫dfu-util的程序,既有linux版本,也有Windows版本。 Windows版本还要装一个叫作OpenMokoDFU的驱动。我在VMWare中升级不成功,就只能用Windows版本。首先安装好驱动。将fr启动到NAND boot模式后,用USB线连接fr和主机,设备管理器中会增加一个"libUSB-Win32 Devices"的设备类别,其中有个叫"Device Firmware Upgrade"的设备。执行:
D:\tools\dev>dfu-util -l
dfu-util - (C) 2007 by OpenMoko Inc.
This program is Free Software and has ABSOLUTELY NO WARRANTY
Found Runtime: [0x1d50:0x5119] devnum=1, cfg=0, intf=2, alt=0, name="USB Device Firmware Upgrade"这就表示找到设备了。注意在boot模式,如果一段时间没有任何操作(例如没有开始升级),是会自动关机的。更新内核的命令是:
dfu-util -a kernel -R -D uImage-2.6.24+r10+gitr9706327002caebe6633c93e605882ea37172ec57-r10-om-gta02.bin
"-a" 指定要更新的程序别名。别名可以是一个词汇或一个数字。常用别名见下表:
内核 kernel或3
文件系统 rootfs或6
引导程序 u-boot或1
开机画面 splash或4
开机参数 u-boot_env或2
"-R" 表示操作完成后复位。"-D 文件名"指定要下载的文件。同理,更新文件系统的命令可以是:
dfu-util -a rootfs -R -D poky-image-sato-om-gta02-20081127082421.rootfs.jffs2
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fmddlmyy/archive/2009/01/30/3855262.aspx