init -> runtime -> zygote -> system server (初始化30多個manager 與 audio suface flinger並由zygote fork) ->完成系統初始化
2010年3月16日 星期二
2010年3月15日 星期一
Android HAL Stub整合
一. 兩種整合HAL Stub的實作方式:
1.透過java service ->native service -> HAL ->HAL Stub
2.使用remote object直接與native service 溝通
其中第一種方式須使用IPC機制而第二種方式則是從java service 取得一個分身(remote object),直接與分身溝通
native service具有daemon與JNI (run time) 功能
二. mokoid project:
對應target 端 :
system/framework/mokoid.jar(API for LedManager)
=> /framework/base/core/mokoid/hardware/...
system/lib/hw/led.goldfish.so(LED HAL Stub)
=> /hardware/modules/...
system/lib/libmokoid_runtime.so(JNI handle Led Service) => /framework/base/service/jni/...

1.透過java service ->native service -> HAL ->HAL Stub
2.使用remote object直接與native service 溝通
其中第一種方式須使用IPC機制而第二種方式則是從java service 取得一個分身(remote object),直接與分身溝通
native service具有daemon與JNI (run time) 功能
二. mokoid project:
對應target 端 :
system/framework/mokoid.jar(API for LedManager)
=> /framework/base/core/mokoid/hardware/...
system/lib/hw/led.goldfish.so(LED HAL Stub)
=> /hardware/modules/...
system/lib/libmokoid_runtime.so(JNI handle Led Service) => /framework/base/service/jni/...

飛輪教室
踩踏的三種方式:
踝動式:(一推(1:00)、二壓(3:00)、三拖(5:00)、四提(7:00 or 8:00))
50%重心放踏板,30%在坐墊,20%在把手,並記得上半身要放鬆,踩踏時要用身體的重量去壓,踏板與芝麻球(大拇指第3關節處)。
變速時當下需放輕踩踏的力道,並且維持鍊條在中間的位置,ex:爬坡時,前大變小時,飛輪也要變小一齒,來維持前進動力。
注意兩腿的力量差,目前左腳用力過度,須加強右腳的力量。
騎成公路車時,須注意膝蓋與手肘往內縮,肩頰骨放開,骨棚固定不動。
踩踏時經過上死點時勿重踩,維持膝蓋的角度,遇到下死點想像將鞋底的泥巴刮乾淨,順時鐘往上拉直到上死點。
參考網頁: http://mypaper.pchome.com.tw/56490
踝動式:(一推(1:00)、二壓(3:00)、三拖(5:00)、四提(7:00 or 8:00))
50%重心放踏板,30%在坐墊,20%在把手,並記得上半身要放鬆,踩踏時要用身體的重量去壓,踏板與芝麻球(大拇指第3關節處)。
變速時當下需放輕踩踏的力道,並且維持鍊條在中間的位置,ex:爬坡時,前大變小時,飛輪也要變小一齒,來維持前進動力。
注意兩腿的力量差,目前左腳用力過度,須加強右腳的力量。
騎成公路車時,須注意膝蓋與手肘往內縮,肩頰骨放開,骨棚固定不動。
踩踏時經過上死點時勿重踩,維持膝蓋的角度,遇到下死點想像將鞋底的泥巴刮乾淨,順時鐘往上拉直到上死點。
參考網頁: http://mypaper.pchome.com.tw/56490
2010年3月14日 星期日
GCC 編譯與連結
產生動態連結執行檔: gcc getarg.c writeinfo.c main.c -o test
產生靜態連結執行檔:
step1: gcc -c -o getarg.o getarg.c
gcc -c -o writeinfo.o writeinfo.c
gcc -c -o main.o main.c
step2:
gcc getarg.o writeinfo.o main.o -static -o test_static.o
執行檔檔案大小: test => 10798kb
test_static => 590326kb
靜態連結型執行檔對於嵌入式系統來說是不適用的,因此在系統支援動態的前提下,多採用動態連結方式使程式達到最佳化與省空間的目的。
實做動態連結庫:
gcc -shared getarg.o writeinfo.o -o libtest_d.so
連結動態庫產生可執行程式:
gcc main.o -L. -libtest_d.so -o test_dlib
修改環境變數:
export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH <=目前仍無解 ./test_dlib
產生靜態連結執行檔:
step1: gcc -c -o getarg.o getarg.c
gcc -c -o writeinfo.o writeinfo.c
gcc -c -o main.o main.c
step2:
gcc getarg.o writeinfo.o main.o -static -o test_static.o
執行檔檔案大小: test => 10798kb
test_static => 590326kb
靜態連結型執行檔對於嵌入式系統來說是不適用的,因此在系統支援動態的前提下,多採用動態連結方式使程式達到最佳化與省空間的目的。
實做動態連結庫:
gcc -shared getarg.o writeinfo.o -o libtest_d.so
連結動態庫產生可執行程式:
gcc main.o -L. -libtest_d.so -o test_dlib
修改環境變數:
export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH <=目前仍無解 ./test_dlib
訂閱:
文章 (Atom)