顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - jserv

頁: [1] 2 3 ... 5
1
簡報檔案已上線,請見:
    http://www.slideshare.net/jserv/android-internals-30176596

另外,受到台大資訊系廖世偉教授的徵召,下學期開設在台大資訊系的「Android 執行環境及編譯器」(Andorid Runtime and Compilers) 課程中,我會貢獻幾周的時間,探討 Android 中 Dalvik 虛擬機器的運作原理,而稍候廖世偉教授則會以 LLVM 和 ART 切入,並分析 OpenCL / RenderScript,帶著同學全面掌握 Android 系統開發之基本能力,鼓勵同學投入發展國際級的 open source 系統,從國際級大師案例學習經驗。

以下引述課程大綱:
「由 Android Runtime 原作者之一親自講授 Android 虛擬機及執行系統,獨家還原 Google 設計的準則與取捨,解開人手一隻的 Android 到底是如何work。本課不同於其他虛擬教法,而是切入真實的虛擬機,以求學生玩真的,學到位。 」

屆時我也會更新 Android 底層的文件。

課程資訊: https://nol.ntu.edu.tw/nol/coursesearch/print_table.php?course_id=922+U4160&class&dpt_code=9440&ser_no=60187&semester=102-2

題目: 從 Binder 理解 Android 系統服務的運作原理

摘要:
本議程延續今年二月份 SA@Taipei 之「利用 Android 學習系統程式」議題,繼續從 Android 最核心的 Binder 機制去切入,
嘗試揭開一系列系統服務的神秘面紗。記得大陸網友曾說過,若能理解 Android Binder 的原理,整個 Android
framework 大概已理解 50%,這句話一點也不為過。Android 中,Binder 為貫徹概念整體性 (conceptual
integrity) 的最佳案例,也因此,探討其設計原理,就格外重要,要理解盤根錯節的系統服務之前,必先對此有通透的解析。除了闡述觀念外,也用實際的手機操作,驗證
Binder 運作原理與相關實作,並從 Binder 出發,一路向上分析 Android framework 與系統服務。

2
各位好,

本議程的簡報可參考以下:
    http://www.slideshare.net/jserv/unix-v6study

預計今年八月下旬或九月份,還會安排另一場更深入的演講,繼續探討 UNIX v6 的設計。

-jserv

題目:
        UNIX v6 原始程式碼導讀

簡介:
        UNIX v6 是現代各類 UNIX 作業系統核心的鼻祖,奠定程序管理、排程、記憶體管理,與檔案系統等等經典設計的基礎,今日隨處可及的iOS / MacOS X 與 Android / Linux 的底層,均可見其深刻影響。UNIX v6 的原始程式碼出自 Ken Thompson 和 Dennis Ritchie 這兩位大師之手,若能深入閱讀經典作品,當然有助於成長與啟發,諸如程式設計風格、宏觀思維、高效能設計,以及各式技巧的運用。
        本議程以浸淫於作業系統開發三十餘年的 magoroku Yamamoto日本工程前輩的的《V6 unix in okinawa》作基礎,重新翻譯為中文並依據相關資訊修訂,預計涵蓋從 PDP-11 硬體特性、UNIX 設計原則、虛擬記憶體、系統啟動流程,到系統呼叫等議題。

3
今天議程預計用到的簡報檔案,已先行上線,請見:
    http://0xlab.org/~jserv/tmp/unix-v6-study.pdf

(持續更新中)

4
charles0607 兄臺請勿激動,

如果 CA 兄沒空北上,而且您不介意的話,我可以從台南北上為您分享同樣 CMake 主題,只有一個請求,希望您能分享筆記,作為日後改進依據。

Thanks,
-jserv

5
因為一般的 graphics commands 都是成對的,試想你要從 Process A 分享一個 Pixmap 給 Process B 作 clip 的動作,中間需要幾次往返呢? :)
恰好三月 19 號,我在南台科技大學資訊工程系的演講,預計會更深入探討 Android Binder IPC:
    http://blog.linux.org.tw/~jserv/archives/2012/03/android_5.html

The basic part of Binder IPC: http://www.slideshare.net/jserv/android-ipc-mechanism

6
因為一般的 graphics commands 都是成對的,試想你要從 Process A 分享一個 Pixmap 給 Process B 作 clip 的動作,中間需要幾次往返呢? :)

恰好三月 19 號,我在南台科技大學資訊工程系的演講,預計會更深入探討 Android Binder IPC:
    http://blog.linux.org.tw/~jserv/archives/2012/03/android_5.html

Regards,
-jserv

7
感謝當天捧場與討論的朋友!

簡報已更新,請見:
    http://www.slideshare.net/jserv/discover-androidsystemfacilities

另外,針對 Dalvik 與 APK 層面的議題,也請參閱:
    http://www.slideshare.net/jserv/practice-of-android-reverse-engineering

最近我也有一場探討 Dalvik VM 的演講:
    http://blog.linux.org.tw/~jserv/archives/2012/03/android_dalvik.html

Regards,
-jserv

8

感謝分享 :-)

考慮整理成 blog 或 wiki 嗎?今年我也會繼續探討 Android 其他部份的設計。

如果有開放的Wiki的話我可以整理一份放上去。請問一下社群內常用(可以用的)Wiki是哪一個呢?

wikidot 不錯 -> http://www.wikidot.com/
不過先紀錄在 blog 再彙整到 wiki 也挺好的,總之,謝謝分享

9
感謝各位大大的付出,整理一份當時抄的筆記,由於年代已久不可考,有些其實已經忘記當初要記的重點。
這份筆記主要是補充投影片中的東西和自己有興趣的內容,建議搭配投影片和紫皮書。另外我想應該很多錯
誤也請指正,謝謝!

感謝分享 :-)

考慮整理成 blog 或 wiki 嗎?今年我也會繼續探討 Android 其他部份的設計。

* Android IPC
   - Intent -> AIDL -> Binder
   - cat /sys/kernel/debug/binder 可以觀察相關資訊
   - Parcel打包概念
   - binder 是去shared memory 撈service
   - 所有service是由binder描述
把「描述」改為「相互聯繫」,會比較恰當。

* Android debuggerd
   - Android 攔胡process segmentation fault signal,發生不正常錯誤時透過socket通知debuggerd
   - debuggerd在logcat中顯示的address是上次跑完的address
   - lr -> register for storing return address in ARM
   - 可以比照crash log和/proc/pid/maps

參考:
https://wiki.linaro.org/WorkingGroups/ToolChain/Outputs/LibunwindDebuggerd

* Dynamic linker/program interpreter
   - ls-linux.so.2 (Linux下)
   - 可執行
   - 同一個OS下面可以放不同的interpreter

改為同一個 root file system 底下可有兩個以上的 ELF interpreter,會比較恰當。

   - Android
     + Entry: __libc_init
     + library: bionic
     + linker: /system/bin/linker (不可以執行)

/system/bin/linker 本身還是 ELF executable,當然可執行,但因為沒有正確處理 stack & calling convention,所以會發生 SegFault

* bionic
   - adbd 是static (?)

用 file 與 readelf 觀察看看 :-)

   - Embedded的ABI不同的原因可能是
     + 改板
     + 商業考量,故意讓其他產品不能相容
還有「效率」的考量,請進一步參考:
  http://wiki.debian.org/ArmEabiPort
現在 ARM EABI 基本上已大一統了。

* Start a process
   - create a process
   - load executable file
   - setup runtime
   - page valid (?)
下一階段的演講會針對這部份繼續探討 :-)

Thanks,
-jserv

10
感謝演講結束後,仍有不少朋友指教與討論,小弟已經將更新的簡報放上來了,請參考:
    http://www.slideshare.net/jserv/discover-androidsystemfacilities/

補充說明:
    http://blog.linux.org.tw/~jserv/archives/2012/01/_android.html

謝謝!

11
主題
  Android 系統元件探討 (不含 Android 應用程式開發)

感謝前來指教的朋友。這個議程由於有頗多當場 code tracing 與僅在黑板解說的項目,所以就沒有釋出簡報。
不過仍可參考之前在台大資工的演講:
    http://www.slideshare.net/jserv/applied-computer-science-concepts-in-android

另外,預計在 2012 年會針對 Android 4.x 作系統元件的分析主題,會拆成若干各項目,比方說圖形:
    http://www.slideshare.net/jserv/design-and-concepts-of-android-graphics

Regards,
-jserv

12
請問大大會開台北場嗎? ;D

會!這是我的 2012 年計畫,並以手機平台作為實驗對象

14
各位大大好,
昨天去聽了SA@Kaohsiung 九月份活動 - Android 圖形系統:設計與實做分析的課程,收穫良多。如果我沒有誤解的話,課後閒聊時
jserv 大大提到Android用binder自己搞IPC的原因是想要減少IPC時 context switch的次數,他進一步說用loopback socket傳IPC會
用到兩次context switch。後來因為時間關係加上不好意思佔用別人時間,就沒有再詳細的問清楚。回家以後一直再想這個問題。姑狗
查了半天也只有看到tcp socket會context switch兩次(請姑狗:Unix domain sockets vs TCP Sockets),但是沒有解釋原因。我很好
奇 context switch為何會兩次?我知道system call會引發context swtich,那另外一次呢?還是從頭到尾是我會意錯jserv大大的意思?

因為一般的 graphics commands 都是成對的,試想你要從 Process A 分享一個 Pixmap 給 Process B 作 clip 的動作,中間需要幾次往返呢? :)

15
議題簡介:
        自 2006 年起,講者分享了名為「深入淺出 Hello World」的系列演講後,獲得一些迴響與啟發,而隨著
        Android 裝置的普及與整體硬體的提昇後,實際在大量使用的裝置如智慧型手機上,做觀察、分析,進而研究系統程式的原理,已是相當便利。本議程可視為「深入淺出
        Hello World」的實務篇,企圖從觀察 ARM/Linux 的運作開始,延伸去年的演講主題「自己動手,豐衣足食 -- 淺談探索
        Linux 系統設計之道」,透過現有 Linux 核心與 Android 系統的若干機制,逐步揭開系統程式的面紗。   

感謝在寒冬前來捧場的朋友,當天議程的簡報檔案如下: (未整理)
    http://0xlab.org/~jserv/tmp/android-system-01.pdf

稍候會整理一份附有參考資訊與修正圖例的版本

Merry Xmas & Happy New Year!

17
活動議題:
  Android 圖形系統:設計與實做分析
活動時間:
  中華民國100年9月24日13:30~17:00 (課後另有餐會交流)

Hello !

簡報檔案已上線,做了一些補充,請參考:
    http://blog.linux.org.tw/~jserv/archives/2011/11/android_--_1.html

Thanks,
-jserv

18
先把簡報檔案放上來:
http://jserv.sayya.org/embedded/platform/

課程結束後,還會更新

19
???
報名網址還是連到舊的. 我先幫你拿掉了

Any update?

20
活動/聚會區 / [proposal] SA Taipei on May 15
« 於: 2010-05-02 23:12 »
之前曾討論過,SA Taipei 的議程,定於 May 15,不過 sa.taipei@study-area.org 一直無法發送,於是張貼一份作參考:

主題:探索嵌入式 ARM 平台與 SoC (Part I + II)

議程簡介:
雖然 ARM 嵌入式平台早已充斥於我們的日常生活,舉凡手機、導航系統等電子產品,但探討其原理架構的課程,往往有如英文諺語
"an arm and a leg" 背後的意思一般,所費不貲。講者嘗試整理過去幾年開發的心得,以心得分享的方式,免費介紹 ARM 硬體特性
與原理,並以一個具體而微的即時多工作業系統 (以講者開發的 CuRT 為例),作為探索架構與軟體驗證的對象。此外,與本議程相關
的技術分享,也會在講者行有餘力之際,以免費開放的形式作探討,詳情可參考「酷!學園」的活動公告:
  http://phorum.study-area.org/index.php/board,22.0.html

建議聽者背景: (任一)
(1) 已熟悉 C 語言程式設計,並參與過 ARM 平台軟體移植者
(2) 對 ARM/RISC 架構開發有興趣者
(3) 覺得只要有心,什麼都不是問題的熱血人士

講者簡介:
Jim Huang (黃敬群),慣用網路暱稱為 "jserv",熱血工讀生。自 1999 年開始參與自由由軟體開發,於 2005 年起提供以自由軟體為
基礎的技術資訊服務,涉及手機、GPS 導航、數位電視、電子廣告系統、機器人等嵌入式系統設計。基於對電腦技術與自由軟體的熱愛,
於 2009 年共同創立 0xlab,期許能以團隊的優勢提供完整戰力,為軟體界做出些許貢獻。
web: http://jserv.sayya.org/
blog: http://blog.linux.org.tw/jserv/
0xlab: http://0xlab.org/

Part I --
 * ARM 架構快速瀏覽
       o Architecture version vs. Implementation
       o ISA feature
 * ARM SoC 平台
       o 整合多種不同功能的複雜IC 組合,針對特定的市場或應用需求
       o 典型組成
 * 關鍵概念
       o 工作模式、暫存器組、系統狀態

Part II --
 * ARM 定址與組合語言概況
 * ARM SoC 與 CuRT 的硬體啟動程序 (以 PXA255 為例)
 * ARM 中斷、例外處理,以及系統暫存器的對應

注意事項:
(1) 本議程不包含實習,僅討論基礎概念,如有任何客製化需求,請與講者聯繫
(2) 免費分享的初衷是引導更多熱心的朋友投入 ARM/Embedded 系統開發,礙於時間與資源的限制,無法確保每處技術細節皆正確,但相當歡迎討論交流
(3) 議程進行所使用的軟體,列表如下:
* CodeSourcery ARM GNU Toolchain -- http://www.codesourcery.com/sgpp/lite/arm
* Qemu/Openmoko -- http://wiki.openmoko.org/wiki/Qemu
* Ubuntu LInux 9.10 + qemu 0.10.x,驗證方式:
$ /usr/bin/qemu-system-arm | head -1
QEMU PC emulator version 0.10.0, Copyright (c) 2003-2008 Fabrice Bellard
*  CuRT -- http://jserv.sayya.org/kernel/curt-src-v1.tar.bz2
(4) 參考資訊:
* Part I 簡報: http://www.slideshare.net/jserv/arm-and-soc-traning-part-i-overview
* ARM Processor Guide: http://www.arm.com/documentation/ARMProcessor_Cores/
*  師大資訊系的嵌入式系統課程教材,使用 CuRT --
http://sites.google.com/site/embedded2009/introduction-to-curt-v1
* OPENCSL -- http://opencsl.openfoundry.org/
* 深入淺出 Hello World 系列演講 -- http://jserv.sayya.org/helloworld/
* 快快樂樂學 gdb -- http://jserv.sayya.org/debugger/
* 以 GDB 重新學習 C 語言程式設計 --
http://blog.linux.org.tw/~jserv/archives/2010/04/_gdb_c_1.html

以上,感謝!
-jserv

21
請問一下,為啥這次議程沒放出投影片?

整理中,請見諒。

PS: 因為忙著發表新作品,所以最近的一些 talk 都還未放出 slides

22
這次課讓我瞭解到ARM的近況,不過說實話如果ARM在作業系統上如只想作到如此的話,遲早都會被微軟統一,因為在22日到24日之間參加了微軟的Tech Days的講習,雖然技術部份並未深入,卻可以看到微軟未來的規劃,除邁向雲端運算Fancy的科技名詞外,微軟作業統明年應可跨入中小型的架構(因為硬體已夠強到支援微軟2009的Server),而嵌入式系統也因硬體已夠強到支援微軟Windows 7作業系統,所以我個人並不看好ARM現在系統,如果ARM還是停留在目前架構不在開發和使用的介面上作整合,快則明年.慢則2012年微軟可攻下50%的嵌入式系統,當然也希望這只是我個人的杞人憂天

似乎離題了,ARM 與 Microsoft 兩家公司都致力於在其專業的領域,保持競爭優勢,並無直接的衝突。

另外,世界上的裝置有高階,也有低階定位,不可能由單一廠商滿足全部的需求。

23
感謝 Jserv 這一天半在台南這麼用力的技術分享。(居然還是免費的, 真是太感動了 m(_._)m)
讓小弟釐清許多觀念,也看到以前所未注意到的細節。
雖然時間不夠多,讓 Jserv 很趕。
但還是學到很多很多,再次謝謝 Jserv。
希望以後在南部還可以聽到這樣子的課程。

Richard Stallman 說: "if I like a program I must share it with other people who like it." (from GNU Manifesto - http://www.gnu.org/gnu/manifesto.html )

小弟秉持同樣的心態,分享所知罷了,還請各位多多指教。另外,如果有需求的話,請提出討論,謝謝。多分享、多學習是提高競爭力最好的方式 :)
http://blog.linux.org.tw/~jserv/archives/002051.html

24
請問公開的資料, 怎麼下載?

請告知哪一份資料,謝謝

25
類似這種open 的活動可以在新竹嬤?
感覺新竹市個荒涼的地方 爹不疼娘不愛 沒人理
要不就是要下去很遠的地方
要不就是去人生地不熟的台北
well....  千呼萬喚

新竹距離小弟老家苗栗不遠,閣下願意安排的話,也許能交流看看 :)

期待指教與分享。

Thanks!

26
請問pdf好像下不了耶??

為了避免無法下載,稍早在 slideshare.net 放了一份複製,請見:
  http://www.slideshare.net/jserv/arm-and-soc-traning-part-i-overview

Thanks,
-jserv

27
Fixed now!

Thanks!

請問pdf好像下不了耶??

it's downtime of server.  Please stay tune.  I'm really sorry for that.

28
請問pdf好像下不了耶??

it's downtime of server.  Please stay tune.  I'm really sorry for that.

29
上週六應 Study-Area 台北的邀請,進行主題為「探索嵌入式 ARM 平台與 SoC」的演講/教育訓練,雖然主題較為冷僻,
但前來指教的朋友們,還是將訓練教室塞滿,在此,相當感謝捧場與指導。目前簡報已上線,請參考以下連結:

    * http://jserv.sayya.org/embedded/platform/ARM-1-overview.pdf

仿造過去「深入淺出 Hello World」系列演講[1] 的模式,只要行有餘力,小弟將循序探討 ARM 架構與 SoC 的概念和實務,
當然,這一切的演講/教育訓練,都維持免費且開放,只要您願意提出意見,我們可隨時調整方向與探討的細節。誠如前文提到的
訓練宗旨:

      「探討如何從零到有設計完整的作業系統、如何進行必要的系統初始化、如何動手理解 ARM 的種種關鍵設計,且從軟體設計師的角度去切入」

在這個 "Everything goes mobile" 的時代,我們更在意知識的累積與多元轉換,可惜台灣人的工作環境,不免會基於某些考量,
發生專業技能的「藏私」狀況,或多或少限制了視野的廣度與專業的深度。希望就能如去年在「自由軟體教育訓練與演講規劃」[2]
一文提到的項目,循序漸進分享與接受各方的指教,從而累積資訊技術知識。

此次 Part I 課程回顧:

    * ARM 架構
          o Architecture version vs. Implementation
          o ISA feature
    * ARM SoC 平台
          o 整合多種不同功能的複雜IC 組合,針對特定的市場或應用需求
          o 典型組成
    * 關鍵概念
          o 工作模式、暫存器組、系統狀態
          o 指令集、例外處理

而關於系列演講的 Part II,預定提綱針對系統控制,涵蓋以下:

    * ARM 定址與組合語言
    * PXA255 SoC 與 CuRT 的硬體啟動程序
    * ARM Interrupt, ISR, Exception的處理,解析 PSR

期待您的指教與討論,您的付出與關注,將使這一切變得更好,謝謝!

blog: http://blog.linux.org.tw/~jserv/archives/002113.html

[1] http://jserv.sayya.org/helloworld/
[2] http://blog.linux.org.tw/~jserv/archives/002051.html

30
看到可以站著聽,那要如何報名,還是當天去簽到就好,我很想去聽?
另外請問我早上還要上班因為現在是旺季,請假應該是沒辦法,下午去聽可以嗎?

您好,

只要場地許可,您在任何時段都可前來指教。若行有餘力,小弟希望日後能維持這類的免費教育訓練 (知識公開檢閱,講者與學員才能共同成長,不是嗎?),也請您留意酷!學園的活動資訊。
謝謝您的興趣與意見。

Sincerely,
-jserv

頁: [1] 2 3 ... 5