Email me: jollen # jollen.org

more: Jollen 的 Embedded Linux 教育訓練

« October 2010 | (回到Blog入口) | December 2010 »

November 2010 歸檔

November 10, 2010

又說 Android 2.3 將透過 OTA 更新了

OHA Team Member Confirms Gingerbread Version As 2.3, Hints At Dev Nexus Ones Receiving An OTA Update In The Next Few Days」說把 Nexus One 準備好,因為 Android 2.3 將於近日內釋出。根據文章裡的消息來看,最有可能釋出的是 Android 2.3 SDK,時間是在 11 月 11 日。至於將令各界人仰馬翻的 AOSP 目前依然狀況未明。不過總結目前的謠言來看,下一個版本 Gingerbread 是 2.3 而不是 3.0。之前謠傳的 Nexus Two 現在「據說」硬體出了問題,無法如期推出。最近真是太有趣了。

Gingerbread 除了大幅改善使用者介面外,也加入了 WebM 技術,很值得期待;Android 多媒體架構與支援程度,等到 AOSP 釋出後需要了解一下,是否有較大的設計變更。WebM 導入後,Android 的影音串流技術預期將進入新的里程碑。其它像是 Flash 以及 HTML5 等,只能等到 AOSP 釋出才知道了。

November 17, 2010

Android 產品開發工作談:嵌入式系統技術講求整機開發

嵌入式系統畢竟是一個需要高度「軟硬整合」的技術工作,這和過去台灣所熟悉的「PC」是很不一樣的工程。過去把 PC 模組化,大家可以分工生產個別模組,組裝後,安裝作業系統以及軟體。把這個思惟用在嵌入式系統開發上,可能會產生一些盲點。

以 Android 作業系統為例,廠商都能取得 reference code,以及 Android 使用許多開放源碼專案的成果,因此技術人員能進行更精緻的技術工作,例如:針對處理器優化編譯器。過去,把硬體做好,再安裝微軟作業系統,是台灣習慣的模式,但廠商無法取得源碼,最多只能使用 API 進行開發,所以直接取得能支援硬體的作業系統,是微軟模式的特色。

近期與許多經理人洽談 Android 產品的合作,發現微軟習慣真是如影隨形,以舊思惟思考新的產品,可能有許多盲點。產品研發的根本是技術,尚未脫離技術工作階段時,把專業的工作交給專業,是最基本的態度與責任。以下是小弟的一些個人看法,希望在此與大家分享,讓專案的成敗由技術決定,而不是身段與心態。請不吝指教。

嵌入式系統技術講求整機開發

如同一開始提的,嵌入式系統是非常講求細節的工作,所有的細節是為了讓軟體與硬體有更好的整合性,效能與穩定性的期中考卷,技術工作者必須努力交出及格的成績單。嵌入式系統的技術細節,往往超乎技術人員自已的想像。

過去的 PC & NB 研發工作,努力把硬體做好,用更快的處理器,把作業系統安裝到硬體上。「直接把軟體安裝在硬體上」,不管是硬體工程師,或軟體工程師,都不需要考慮軟硬體間的細節。所以,PC & NB 是一種不必過度講究開發細節的工作。

現在把 Android 放到 ARM 平臺上,開發手機,不但需要把 Android 提供的 reference code 做實作,更要進行許多細節的工作。幾個大細節像是:

1. Android 提供的 reference Launcher 夠不夠用?(穩定性、反應速度等)
2. Android 提供的 prebuilt toolchain 夠不夠用?(符號處理、指令集等等)
3. 開機速度。

還有更多的小細節需要我們努力,例如:PNG24 在 PNG8 的處理有失真問題 (GIF)。不同的硬體,細節不會相同,例如這裡提到的 PNG24 與 PNG8 處理問題。所有的細節是為了讓「整機」有更棒的表現,例如避免 PNG24 不出現失真,這個失真會是肉眼可見的問題,不該被忽略。

我們是一個專注嵌入式系統的研發團隊,開發「整機」讓我們全心在「這個硬體」上處理各種軟體細節。Android 產品也是如此。一開始就定位「整機研發」,因為這是技術的本質,嵌入式系統考慮硬體來做軟體,所以軟體綁硬體,是技術所導致的結果。

在我們 A 機器上表現良好的軟體,直接安裝到 B 機器,我們的軟體可能是 dirty software:達不到好的穩定性,也做不到好的速度,或許只有部份功能可以正常。因此,身為一個專業的技術工作者,當您遇到客戶提出「給我們源碼與硬體設計」,「我們要自已改硬體」,「我們自已改Driver」,「應用程式可以用外包方式處理」,等典型要求時,最好為自已爭取一段時間,靜下心來思考專案的可行性。

請不要把我的 Android framework 軟體直接「安裝」在您的硬體上。

技術學習者也應該更務實,以「Embedded Linux」來說,我們應該有耐心地去了解每個單元的設計、運作原理與架構,因為細節就是在處理這些技術,而不是學習操作或是 how-to。

取得參考設計,在硬體上加入模組,更換零件,把源碼當護身符,「因為樣機都可以跑了、改改東西不難」,是良方還是毒藥,需專業判斷,而不是籠統的認定。例如:2個G-Sensor還是3個G-Sensor,是不同的二件事情。商業周刊第1191期的標題「忘記會做微軟 不然就等死」,看起來聳動,但也真實;但是,我們必須往好處想,因為我們面臨的將不會是技術問題,而是心態問題。《待續》

November 25, 2010

簡介 Android Camera 三大功能區塊

近期為客戶進行 Android Camera 的顧問服務,主要的任務是改善 Android 在拍照方面的效能,撰寫了一些相當基本的觀念介紹,在此與大家分享。Android 的 Camera 系統大概念上可分成三大區塊:

1. android.hardware.Camera
2. Camera Service
3. Camera HAL + videodev

其中最核心的 Camera Service 預設是實作在 SystemServer 裡。控制 Camera 硬體的 HAL 部份,目前大多採用 Linux 的 videodev 介面來擷取視訊。以下簡介 Android Camera 的三大功能區塊。

1. android.hardware.Camera

屬於 Java 層,Camera 應用程式可透過 Camera.open() 來取得 android.hardware.Camera 的實例化 (instance),並且可實作 Camera.PictureCallback 介面來取得「照片影像」。Camera.PictureCallback 提供二種照片資料:JPEG Data 與 Raw Data。這部份的細節可參考 Camera.takePicture()。

2. Camera Service

Android 的 Camera Service 重要程式碼實作於 libcameraservice.so,對於 Android 平臺的移植者來說,可忽略 Camera Service 的內部細節,直接實作 Camera HAL 即可驅動 Camera 硬體。但對於 Camera Service 的設計,以及實作細節進行一些研究,對於改善現有 reference code 的效率會有一些幫助。關於 Camera Service 的設計細節,留待後續做說明。

3. Camera HAL

驅動 Camera 硬體最關鍵的部份。在 Google 官方的 Android Platform Developer's Guide 文件裡指出,平臺移植者可實作 CameraHardwareInterface 來驅動 Camera 硬體。CameraHardwareInterface 是 Android 的 Camera HAL 設計,開發者可參考 Android 裡的 CameraHardwareStub.c 範例,以了解 CameraHardwareInterface 的實作原理。

Camera HAL 裡設計了二個 thread,分別是:preview thread 與 picture thread。Picture thread 在取得影像資料後,以 callback 方式將 JPEG data 或 raw data 往 Java 層傳遞。如上述,Camera 應用程式透過實作 Camera.PictureCallback 取得影像資料。

November 29, 2010

山寨市場是常規市場:下一波的市場新機會

將山寨市場正名為「常規市場」,這種的現象是一種新的社會文化。

2010年又到了尾聲,傳聞中的Android 3.0版本以及Android平板電腦,都將在明年成為科技業的重頭戲之一。將近一年前,在本論壇也提及二個主題:「發展自有Android分支」以及「山寨軍品牌革命:下一個山寨影響力」。根據Google對Android未來的發展策略,以及對廠商的支援政策來看,發展自有Android分支已經成為一項必要的工作。

在山寨軍品牌革命這篇評論裡,提到Android帶來的機會,以及山寨的轉型方向。隨著Android手機以及相關產品的大舉佔市,以及山寨大軍一年多來的努力,我們發現「山寨市場」以及「山寨文化」確實有一些顯著的改變。許多山寨商已經擁有自有的Android分支,但我們從更大的層面來放大觀察「山寨」:山寨改變了社會文化。以下是針對「山寨」所做的一些觀察,以及延續性的討論,請不吝指教。

針對「山寨」這個名詞,許多人都有「一個層面」上的誤解,即「山寨就是盜版」。即先前提到的:在抄襲與非正統的「模式」下所開發與製造的手機,就被暱稱為「山寨機」,意謂拷貝與強取之意。大陸知名山寨觀察家「阿甘」在他的著作「山寨手機幕後真相」裡指出,「山寨機」成為一種「社會文化」。

在阿甘先生的著作裡提出這樣的看法。過去的大型企業,做習慣了「規模經濟」,由於一些因素,這些企業在發展穩定後,便開始「貴族化」,這與山寨文化是非常鮮明的對比。山寨機經過幾年的發展,居然開始影響社會文化,讓山寨起家的「草根階層」也能和以大企業為代表的「精英階段」相互競爭。從產品的角度來看,這是個性化與「私品牌化」的潮流。

由山寨所帶起的社會文化改變,最鮮明的現象就是「個人與團隊」的快速堀起。這點在阿甘先生的著作裡也有觀察。有技術的個人,或是有能力的團隊,掌握了關鍵的資源或技術,因此萌生自立門戶的想法。關鍵的資源包含:市場、人力、商業模式、社會資源等等。單純從技術面來分析,Android帶動巨大的機會,許多優秀的Android開發小公司,都是個人自立門戶下的成果。這就是山寨機崛起的關鍵因素:眾多的個人或小團隊。

因此,把山寨定位為盜版集團,可能是過時的看法了。維基百科、Linux kernel以及山寨機本質本並無差別,他們都是以一種「籠統」、「非正規組織」、「個人」、「螞蟻大軍」等模式所建構出來的;從十多年前開始,透過網際網路的推波助灡與影響,這種新的社會文化就開始形成了。所以,就如同阿甘先生在他的著作裡的看法,「山寨企業將顛覆傳統的競爭法則」;自由軟體或 Android給了技術人員很好的機會。

在十月份的「2010 Android社群平臺開發大會」上,小弟也發表了一個淺見。「山寨市場」或「類山寨市場」,與「正規市場」完全衝突,但山寨機廠商不但國際化也品牌化,許多山寨廠商的產品品質也和正規產品不相上下了,許多更已經「正規化」。因此,不如將山寨市場正名為「常規市場」,這種「非大企業也能為之」的現象是一種新的社會文化,許多山寨廠商都能直接和大公司建立商業關係,這代表精英階層的鬆動;阿甘先生在其著作裡所做的觀察,令人發省。從Android或自由軟體的技術面深入觀察,將角度提升到社會層面,將會發現許多有趣的改變。(原文刊載於「零組件雜誌 2010.11月」)

關於 November 2010

此頁面包含了在November 2010發表於Jollen's Blog的所有日記,它們從老到新列出。

前一個存檔 October 2010

後一個存檔 December 2010

更多信息可在 主索引 頁和 歸檔 頁看到。

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org