2009年2月9日 星期一

minigui

安裝 qvfb 在 qt3-dev-tools-embedded 這個套件中就有 qvfb 程式:
$apt-get install qt3-dev-tools-embedded
安裝libjpeg-dev 資料庫 
$sudo apt-get install libjpeg-dev
 ------->>
執行 qvfb 必須調整設定
   640*480-32bpp display mode. 
範例程式必須在640*480以上模式才能正常顯示!!
Installing resource files of MiniGUI
    必須按照下列步驟安裝:
        1) Use `tar' to extract minigui-res-1.6.x.tar.gz. You can use
           the following command:
           $ tar zxf minigui-res-1.6.x.tar.gz
        2) Change to new directory and run `make' as a super user:
           $ sudo make install

Configure and compile MiniGUI
    MiniGUI uses `automake' and `autoconf', so configuration and compilation
    of MiniGUI are very easy:
        1) Use `tar' to extract `libminigui-1.6.x.tar.gz' to a new directory:
           $ tar zxf libminigui-1.6.x.tar.gz
        2) Change to the new directory and run `./configure':
           $ ./configure
        3) Run the following commands to compile and install MiniGUI:
           $ make;sudo make install;
        4) By default, libraries of MiniGUI will be installed in
           `/usr/local/lib'. You should make sure that this directory
           is listed in `/etc/ld.so.conf' file. And after having installed
           them, you should run the following command to update the cache
           of shared library system:
           $ sudo ldconfig
        5) If you want to specify which features MiniGUI provides, you
           can run
           $ ./configure --help
           to see the complete configuration options listed, then disable or
           enable some features by using command line switches. For example,
           if you do not want MiniGUI to load JPEG pictures via the function
           LoadBitmap, you can use
           $ ./configure --disable-jpgsupport
      
 執行範例程式
 $ tar zxvf mde-1.6.10.tar.gz
 $ cd mde-1.6.10
 $ ./configure
 $ make
 $ cd same
 $ ./same
----->> 底下是範例 mgis
  1. Unpack proj-4.4.7.tar.gz
    • ./configure
    • make
    • sudo make install
  2. Unpack gdal-1.2.6.tar.gz
    • ./configure --withou-pg --without-python --without-jasper --without-odbc
    • make
    • sudo make install
  3. Unpack mgis-1.0.tar.gz
    • ./configure
    • make

所須要的程式都在這個網址http://www.minigui.org/downloads/

2009年2月6日 星期五

VIVI Bootloader 如何新增指令?

 STEP1.




先來設定一下工作目錄所在位置, 在這裡我的 Bootloader 資料放在  /home/dclab/bootLoader/vivi  ,所以後面就用 $VIVI表示




# export VIVI=/home/dclab/bootLoader/vivi




 STEP2.




首先我們新增一個檔案 led.c  , 這個檔案內容負責宣告新增指令用!




# vim $VIVI/lib/led.c







[檔案]  $vivi/lib/led.c:




#include <config.h>
#include <command.h>
#include <types.h>
#include "printk.h"

void command_led(int argc, const char **argv){
    printk("show led....\n");               //    當執行指令後, 螢幕顯示出來的資訊內容!
}   

user_command_t led_cmd = {                                //    宣告一個指令結構
    "led",                                                               //     命令的名稱   
    command_led,                                                  //     實現該命令的具體函數
    NULL,                                                              //     指向下一條命令的指
    "help led [{cmds}]\t\t\t -- Led show program"    //     命令的使用說明
};







[參閱]  $vivi/include/command.h:




typedef struct user_command {
const char *name;
void (*cmdfunc)(int argc, const char **);
struct user_command *next_cmd;
const char *helpstr;
} user_command_t;













 STEP3.



[檔案]  修改 $vivi/lib/command.c 檔案, 尋找 int init_builtin_cmds(void)  處, 新增以下內容:





+ :351    extern user_command_t led_cmd;  // 新增於 int init_builtin_cmds(void) 上方

+ :398    add_command(&led_cmd);             // 新增於 int init_builtin_cmds(void)








[檔案]  修改 $vivi/lib/Makefile 檔案, 新增以下內容





+ :10   obj-y += led.o








 STEP4.




接著就可以編譯 vivi 看看




# make clean
# make








開發版上測試指令, 輸入上方宣告的指令  " led "




# led




























參考資料:
http://blog.csdn.net/hansir007/archive/2007/08/29/1764077.aspx




http://www.cublog.cn/u/21948/showart.php?id=379460

2009年1月9日 星期五

在boa server 使用php 程式

如何在一個輕量級的web server 使用php程式

下載! 底下是boa跟php原始檔
 安裝! 必須執行下面指令把patch更新檔寫入!
$cd path_to_boa_subdir; zcat path_to_boa_patch_file | patch -p1
$cd path_to_php_subdir; zcat path_to_php_patch_file | patch -p1
編譯! 手動地增加必要的設置選擇編寫php (在uClinux-dist或設置或者config.in和uClinux-dist或者用戶或者文件編寫),boa應該已經定義在那些文件。
$make xconfig
安裝! php需要被安裝入cgi目錄/home/httpd/cgi-bin 。 boa.conf在/etc在/home/httpd被安裝,boa的已經放置了這個文件,如果一個是存在這個目錄裡,boa不會使用它。 uClinux的預設docroot是/home/httpd,如果您在這個目錄放.php,您需要給url加前/cgi-bin/php才能瀏覽php這頁。
一個簡單的php例子是:

<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php echo '<p>Hello world !</p>'; ?>
</body>
</html>
複製此程式碼到您的romfs的/home/httpd/index.php。
然後輸入這個URL在您的瀏覽器
http://your.host/cgi-bin/php/index.php
php範例!下載tar file這個tar文件並且打開它放入您的預設fle系統的docroot目錄,然後開/cgi-bin/php/index.php嘗試例子。

php設定! 要建立PHP (PHP 4.3.4補丁)的第一個版本uClinux的,我使所有功能失去能力(./configure --disable-all)。 在第二個版本(PHP 4.3.10補丁)由於缺乏對應的lib,有些特點失去了能力,配置命令是:

 ./configure --disable-mysql --disable-xml --disable-pear --disable-ipv6 。

2008年12月6日 星期六

分散式編譯環境 Icescream

Icescream 它是一個分散式的 compiler 架構…
可以藉由同個網域下的cpu資源~來減少編譯程式的時間!

在Debian 和 Ubuntu 下相當好安裝… 只要
$sudo aptitude install icecc icecc-monitor
然後
$export PATH=/usr/lib/icecc/bin:$PATH
就好了

在同一個網域下,把一台機器設成 scheduler (一台就好)
sudo vim /etc/default/icecc
# Defaults for icecc initscript
# sourced by /etc/init.d/icecc
START_ICECC="true"
START_ICECC_SCHEDULER="true"

把紅色的地方 false 改成 true
sudo /etc/init.d/icecc restart
就搞定了…

編譯的時間會隨著電腦的多寡來增快~

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