2008年11月19日 星期三

Openmoko 手機軟體環境開發建置

請注意 本開發環境 使用 ubuntu 8.10 作業平台建置 ~

 dfu-util 更新手機程式
首先需要安裝額外的套件
$sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev ccache libxrender-dev intltool libmokoui2-dev libgconf2-dev mtools fakeroot alien
Neo FreeRunner 開機後預設的IP是192.168.0.202
使用usb將手機與pc連接後~將pc端的usb模擬成網路介面 並指定192.168.0.200給pc端
就可以連上手機!
這時可以用lsusb指令來檢視連到電腦的usb 裝置
Bus 002 Device 006: ID 1457:5122 First International Computer, Inc. OpenMoko Neo1973 kernel cdc_ether USB network
必須要有這個裝置
$sudo ifconfig usb0 192.168.0.200
如果無法使用usb0裝置~
請執行下面這行
$modprobe usbnet (載入usbnet模組)
接著就能連入手機
$ssh root@192.168.202
如要輸入密碼!請直接按enter進入!
進到手機端後
請改dns server
$sudo vim /etc/resolv.conf 
改成hinet 的dns "nameserver 168.95.1.1"
記得要把主機端執行下面這三行~手機才能透過電腦連上網路!!
$iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
$sysctl -w net.ipv4.ip_forward=1
$ip addr add 192.168.0.200/24 dev usb0
 
===============
以下請在主機端執行!!等手機開載U-boot選單!接上usb線就可以開始燒寫
$cd ~
$mkdir freerunner
$wget   http://downloads.openmoko.org/daily/dfu-util
$chmod a+x dfu-util
下載2008.9月 釋出的kernel
$wget  http://downloads.openmoko.org/releases/Om2008.9/Om2008.9-gta02-20081106.uImage.bin
$./dfu-util -a kernel -R -D ./Om2008.9-gta02-20081106.uImage.bin

下載 rootfs

$wget http://downloads.openmoko.org/releases/Om2008.9/Om2008.9-gta02-20081117.rootfs.jffs2
$./dfu-util -a rootfs -R -D ./Om2008.9-gta02-20081117.rootfs.jffs2
燒寫rootfs需要一段時間..可以去喝好幾杯茶再回來...

2008年11月9日 星期日

Openmoko 手機軟體開發GTK+

Openmoko 手機軟體開發GTK+在Openmoko的軟體 需使用Pre-Built Toolchain來編譯 本篇是使用 GTK+ 開發環境
下載預先編譯好的 Toolchain
$cd ~/freerunner
$ wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2
切換至 ‘/’ (根目錄) 後直接解壓即可完成安裝
$ cd /
$ sudo tar jxvf ~/freerunner/openmoko-i686-arm-linux-gnueabitoolchain.tar.bz2
由 pre-built toolchain 裡取得第一個範例
$ cd ~/freerunner
$ cp -r /usr/local/openmoko/source/openmoko-sample2 ./
設定環境變數(Pre-built toolchain 裡己經寫好環境變數設定,可以直接引用。)
$ . /usr/local/openmoko/arm/setup-env
使用 pre-built toolchain 提供的 om-conf 來建立所須的設定檔
$ om-conf openmoko-sample2
未正確設定環境變數將無法執行 om-conf
Host 端可能需要額外的工具套件、請先行安裝補齊
$sudo apt-get install gnome-common
主要的程式放置於 openmoko-sample2/src 目錄下
使用 openmoko-sample2 裡的 autogen.sh 來產生 Makefile
$ cd openmoko-sample2
$ ./autogen.sh
編譯後打包成 Openmoko 所需的 ipk 格式
$ make
$ cd ..
$ om-make-ipkg openmoko-sample2
• 取得 ipk 套件後以 scp 方式安裝至手機
• 再 ssh 到手機上後以 ipkg 指令安裝套件
$ scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202:
$ ssh root@192.168.0.202 opkg install openmoko-sample2_0.1_armv4t.ipk
安裝 Library 至 Toolchain這邊是使用 opkg-target 安裝套件至 pre-built toolchain $ cd /usr/lib
$ sudo ln -s libcurl.so.3 libcurl.so.4
$ sudo su -
# . /usr/local/openmoko/arm/environment-setup
# opkg-target update
# opkg-target install libevas-dev
# opkg-target install libetk-dev
# opkg-target install libts-dev
# exit
$
安裝完後~可以做個實驗!首先~下載這個lots-gameread-only的專案
$ svn checkout http://lots-game.googlecode.com/svn/trunk/lots-gameread-only
修改src/Makefile.am的內容~紅色的部份
INCLUDES = -I$(top_srcdir)
AM_CPPFLAGS = \
-DPKGDATADIR=\"$(pkgdatadir)\" \
-DTERMINAL_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
-DDATADIR=\""$(datadir)"\" -D_GNU_SOURCE
AM_CFLAGS = -Wall -pedantic -std=c99 @DEPENDENCIES_CFLAGS@
# add the name of your application
bin_PROGRAMS = game
# add the sources to compile for your application
game_SOURCES = \
game.c \
gs_read.c
game_LDADD = @DEPENDENCIES_LIBS@
MAINTAINERCLEANFILES = config.h.in Makefile.in
接著修改 configure.ac 紅色的部份
AC_PREREQ(2.53)
AC_INIT(lots-game, 0.0.1, http://www.openmoko.org/)
AM_INIT_AUTOMAKE()
AC_CONFIG_SRCDIR(src/game.c)
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
...
dnl i18n support
GETTEXT_PACKAGE=AC_PACKAGE_NAME
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
...
PKG_CHECK_MODULES(DEPENDENCIES, evas etk)
AC_SUBST(DEPENDENCIES)
AC_OUTPUT([
Makefile
src/Makefile
data/Makefile
po/Makefile.in
])
最後把 lots-game 編譯成ipk檔..就能放到手機內安裝..
$ ./autogen.sh --host=arm-linux
$ make
$ cd..
$ om-make-ipkg lots-gameread-read-only 
會產生一個 lots-gameread-read-only_0.1_armv4t.ipk

QEMU模擬openmoko

1. 準備開發 OpenMoko 用的環境


因為 OpenMoko 要在 Arm 處理器上執行,而你的 Linux 大概是裝在用 Intel 或 AMD CPU 的 PC 上(有人用 Mac 玩 OpenMoko 嗎?),所以要先建立好 cross-compile 的環境,這包括 QEMU、
gcc 3.x、cl-sdl... 等等。

1.1. 取得 QEMU

你必須先取得一份由 OpenMoko Patch 過的 QEMU:
$ svn checkout https://svn.openmoko.org/trunk/src/host/qemu-neo1973
$ cd qemu-neo1973

1.2. 編譯 QEMU

取得 QEMU-NEO1973 Source code 之後,其最佳的編譯器為 gcc-3.x。如果使用 gcc 4.x 會出現下列
訊息:
WARNING: "gcc" looks like gcc 4.x
Looking for gcc 3.x
gcc 3.x not found!
QEMU is known to have problems when compiled with gcc 4.x
It is recommended that you use gcc 3.x to build QEMU
To use this compiler anyway, configure with --disable-gcc-check
安裝編譯 source code 的必須套件:gcc 3.x 和 cl-sdl,順便把待會要用的 lynx 和 netbm 也裝起來:

# aptitude install gcc-3.4
# aptitude install cl-sdl
# aptitude install lynx
# aptitude install netbm
編譯:

$ ./configure –target-list=arm-softmmu
$ make

1.3. 下載 Openmoko 的核心和 Root 檔案系統的映像檔

$ openmoko/download.sh

2. 由 QEMU 執行 OpenMoko

$ openmoko/flash.sh