如何降低手機軟件的更換成本
軟件堪稱移動電話最重要的元素,它是移動電話能否在市場成功的關鍵要素。它決定了手機是“熱門產品”還是“三味產品”。它是使用者最先接觸到的功能。它是我們愛恨手機的主要原因。手機系統工程師只要想到此點就不寒而栗,因為軟件很容易發生問題、成本經常超出預期、而且總是要到手機量產前才能完成。本文將深入說明軟件為何仍是系統開發人員的主要考慮,以及為何采用一種符合常識的設計方法和架構可以大幅減少這些風險。
手機內的軟件
圖1示出了手機里的軟件,它們最后都會在芯片組廠商提供的硬件平臺上執行。在移動電話里,這個平臺可能是含有MIPS等微控制器 (MCU) 的基帶處理器 (BB) 或應用協同處理器 (ACP)。由于軟件程序代碼必須針對基帶或應用處理器的緩存器、時序和微控制器種類而特別設計,因此由最了解硬件的廠商來提供軟件自然是最合理的選擇。
圖1 手機內的軟件
設計良好的軟件系統會將硬件相關的低階界面隱藏起來,不讓它們出現在比較依賴通用實時操作系統服務和應用軟件架構的高階接口。以典型的個人計算機應用為例,個人計算機應用軟件的程序設計師就不需要知道底層硬件的任何細節,這些研發人員會利用操作系統提供的服務以及協力廠商的工具來設計應用軟件。
在手機軟件世界里,這就像是硬件廠商會發展基本接口與上層軟件溝通,手機應用程序設計人員則會專注于軟件應用,完全不必考慮底層硬件。換言之,圖1就代表這種以專業知識為基礎的軟件設計分工方式。
盡管如此,手機軟件系統設計通常仍會涉及眾多廠商,因此實際情形并不會像圖1所示那么簡單明確。芯片組廠商雖然有硅芯片設計知識,卻不一定了解軟件。因此他們只會發展硅芯片,然后由不同的軟件廠商設計所需軟件以便與芯片提供的平臺驅動程序或系統驅動程序等外圍接口和功能溝通。這也難怪許多更具競爭力的芯片解決方案雖然提供更強大的集成度和效能,手機制造商在軟件考慮下總是不太愿意更換硬件平臺。
手機內的特定軟件
針對特定芯片所設計的軟件大致可分為兩個領域:俗稱為協議堆棧 (protocol stack) 的通訊軟件以及直接與芯片上各種外圍接口或驅動程序溝通的軟件。
協議堆棧軟件必須支持現有的全部電信標準才能通過電信法規認證。由于功能規格和時序要求都很嚴苛,這些軟件必須了解所使用的芯片組平臺細節。幸運的是,協議堆棧完全符合OSI-ISO (Open Systems Interconnect-International Standards Organization) 架構要求。該架構要求通訊軟件的發展必須采用分層架構,而且每層都要有一定程度的功能隔離。多數協議堆棧是由OSI模型的第一、二和三層組成 (L1、L2和L3),其中只有俗稱為實體層的第一層才需要了解底層硬件細節。協議堆棧的其余部份都與硬件無關,它們通過通用接口向下與特定硬件的第一層溝通,向上則與應用架構溝通。
手機軟件的評價指標
成本:當制造商談到手機的元器件用料時 (BOM),他們是指電子元器件用料 (E-BOM) 以及塑料和機械元器件等其他用料。雖然如此,只有極少數的制造商有能力計算和管理他們的軟件成本。經驗證明軟件成本約占普通手機成本的15%。軟件成本的另一來源是將現有軟件移植到新芯片平臺的前置作業費用,這需要的工作量相當于一位訓練有素而昂貴的工程師工作兩年半才能把原來就有的軟件移植到新平臺。假設每位工程師的總成本是每年30萬美元,這表示每個平臺需要75萬美元的工程費用。在今日競爭激烈的市場里,降低軟件成本有助于提高效益進而擴大整體獲利能力。
上市時程:目前,資源和研發時間大致會以7:3的比例分配給軟件和硬件。手機內嵌軟件研發人員通常會用一半以上時間解決軟件和基帶硬件的低階互動問題,但這純粹是生產力的浪費,因為工程師原本可利用這些時間設計與整合軟件。換言之,軟件整合過程對于手機極為重要。
圖2 一種彈性良好的手機軟件架構
品質:移動電話市場競爭極為激烈,因此任何產品隔離要素都非常重要。隔離主要來自于產品外型和使用者界面 (UI),然而手機制造商卻總是將軟件資源用于修改低階軟件以配合最新最好的芯片組,這會使得內嵌軟件的核心變得極不穩定;使用者雖然看不到這些重要的工作軟件,卻極度依賴它們執行手機功能,當它們變得問題叢生自然會導致手機經常故障和客戶抱怨連連。
效能:為了在不斷縮短的產品開發時間內推出更多手機,內嵌軟件工程師只有很少的時間將其軟件效能最佳化。因此他們會把時間用來試驗手機和修補程序以避免宕機,而不會采用良好的軟件工程流程來設計可靠的軟件。
如何解決這些問題
減少軟件整合的風險:只要讓手機制造商盡量保持原有的軟件架構就能做到此點。芯片廠商可以提供平臺驅動程序與通用接口,讓手機制造商很容易將現有的軟件整合于它們之上。平臺驅動程序會把硬件細節隱藏起來,同時讓工程師簡單快速而可靠地修改裝置驅動程序以支持所要使用的特定外圍。這種經過嚴格測試和工作可靠的低階軟件平臺還能讓手機制造商專心為產品發展獨特不同的新功能,他們不必為了支持更新更好的基帶芯片而負擔額外的軟件維護費用與軟件升級成本。
制造商修改軟件以配合底層硬件的工作:芯片廠商除了要提供平臺和知道硬件細節的系統驅動程序外,還必須提供易于使用的通用應用程序界面給手機制造商。程序設計師為了管理這類資源爭奪要求,通常必須安排這些高數據產出組件存取高速數據端口的順序。針對這種爭奪硬件使用權的要求,芯片廠商可以提供適當的應用程序接口來執行管理和排程功能,這將大幅減輕手機制造商軟件整合團隊的程序設計負擔。在通訊軟件部分,手機制造商也應能保持他們的協議堆棧原封不動,這是因為協議堆棧的上層會與手機應用軟件緊密互動以提供通話控制和SIM卡管理等功能。許多手機制造商不會向基帶器件制造商購買協議堆棧,他們有些是自己擁有協議堆棧的原始程序,有些則是向協議廠商購買所使用的協議堆棧軟件。協議堆棧工程師通常會與基帶器件制造商密切合作,這是因為協議堆棧實體層與底層基帶功能的互動非常密切。只有芯片廠商最了解基帶器件和它們的關鍵時序 (critical timing),因此手機制造商通常很難改用現有協議堆棧不支持的基帶芯片;換言之,在軟件移植成本的影響下,就算最有吸引力的芯片解決方案也會變得風險過高。
雖然如此,OSI-ISO的分層架構仍讓協議堆棧各層之間的功能區分極為明確。實體層本身就是由兩層所組成,其中同步實體層 (SPL) 負責提供所有重要基帶時序功能,異步實體層 (APL) 則負責將協議堆棧上層傳來的訊息轉送至同步實體層。由于第一層與基帶的關系極為密切,芯片廠商可以自行發展這層軟件,再由協議堆棧廠商將協議堆棧的其余部份移植到這層軟件上。有兩種方法可以讓第一層配合特定的協議堆棧,一種方法是在異步實體層和第二層之間增加接口層,另一種方法則是將整個異步實體層視為同步實體層與第二層之間的適應層 (adaptation layer)。采用第一種建議方法 (在異步實體層與協議堆棧其余部份之間加入接口層) 可能都不像最初所想的那么有效。第二種方法似乎較有希望,因為協議堆棧的多數實作都已包含異步實體層,它們不僅能重復使用,還可配合基帶器件的同步實體層。通過這種方式,協議堆棧廠商或芯片廠商就能移植現有的異步實體層,并讓它繼續擔任第二層和第三層與同步實體層之間的適應層,這能讓第一層的關鍵時序要求以及協議堆棧上層與應用軟件之間的接口維持不變。除此之外,由于同步實體層和異步實體層已成為業界標準概念,協議堆棧工程師也不需要學習任何新技術。
最后,芯片廠商還要提供世界級的支持服務,讓制造商通過單一窗口就能解決所有的系統問題。
圖3 通用鏈接庫提供最高質量
在各種環境中測試:芯片廠商只要提供通用標準實體層 (generic SPL) 和平臺驅動程序界面就能同時與多家手機制造商合作,這些制造商很容易就將他們的軟件移植到這個通用低階軟件平臺。由于多家制造商采用同樣的平臺和系統驅動程序以及標準實體層,這些核心軟件模塊就能在各式各樣的環境和平臺上搭配不同的實時操作系統、外圍、內存、軟件架構、音訊和視訊編碼器和應用軟件一起接受測試。芯片相關軟件模塊因此會受到最廣泛深入的檢驗,確保最后完成的軟件擁有最高質量。
擁有最佳化專家
這種獨特而有彈性的手機軟件架構可以提供最完整的測試,它會考驗芯片廠商所發展的低階軟件模塊的每個層面。這能讓手機制造商確信這些軟件已由一支經驗豐富和最了解硬件的專業軟件團隊將它們調整至最佳狀態。
結語
手機軟件領域極為復雜,各個層面之間的互動非常密切,這使得成本、上市時程、質量和效能成為非常重要的評比指標。芯片廠商若能承擔低階軟件接口的研發責任,就可大幅減少利用新手機平臺開發產品的風險,手機制造商也能專注于使用者界面和應用軟件等產品隔離功能。芯片廠商對于他們所參與的技術領域必須有更全面的看法,提供給手機制造商的產品也不應局限于硬件解決方案。手機制造商不應只是為了避免軟件轉換風險而被迫采用次佳芯片組,他們希望芯片平臺能夠提供最高的整合度和效能,同時又有足夠彈性讓他們保留現有的可靠軟件。在競爭激烈的手機市場上,一套低成本而不影響質量、效能或上市時程的全方位解決方案正是手機制造商的最佳選擇!
評論