|
4.產(chǎn)品開(kāi)發(fā)設計文檔(需要包括硬件和軟件兩個(gè)方面)
4.1 硬件文檔撰寫(xiě)思路
1)首先是需求定義或產(chǎn)品規格:
如果這些是產(chǎn)品最終目標的話(huà),那么產(chǎn)品對硬件和軟件的要求就是技術(shù)方案的最終目標;對硬件和軟件的要求是從定義用戶(hù)界面和系統功能開(kāi)始的。
2)其次,根據需求,系統整體定義文檔中給出硬件接口的具體定義:
定義硬件最有效的方法是從需求開(kāi)始描述,由于硬件必須支持系統定義的所有功能,因此硬件定義是與系統說(shuō)明不可分割的;
例如,我們設計一個(gè)定時(shí)器(事先需求說(shuō)明定時(shí)器不能與個(gè)人電腦連接,故無(wú)法使用CRT顯示時(shí)間),我們只有兩種選擇:一種是使用發(fā)光二極管(LED),另一種是使用液晶顯示器件(LCD);盡管LCD的顯示效果比較好,但考慮到定時(shí)器要常年位于戶(hù)外,并且早期LCD顯示器不能在低溫下工作,最終還是選擇LED設備(這整個(gè)過(guò)程描述了我們硬件選型時(shí)的一個(gè)思路,這個(gè)是密切跟需求掛鉤的)
3)一旦完成了系統整體說(shuō)明文檔,就開(kāi)始進(jìn)行系統設計:
首先要對硬件說(shuō)明的內容進(jìn)行細化,包括添加能讓工程師理解的設計意圖,以及軟件工程師圍繞硬件進(jìn)行程序設計時(shí)需要使用的硬件信息等。
完成硬件電路板說(shuō)明文檔后,我們還要在該文檔中增加一個(gè)用來(lái)描述系統的原始要求的前言部分,包括說(shuō)明方案的設計思路和方法,除此之外,還要附上軟件工程師用來(lái)對硬件進(jìn)行控制所需的各類(lèi)信息,這類(lèi)信息主要包括如下內容(軟件工程所需信息):
-----內存和I/O端口地址(如果需要,還可以提供內存映射圖)
-----可用內存容量
-----狀態(tài)寄存器每一位的定義
-----每個(gè)端口管腳的用途
-----外部設備的驅動(dòng)方法(例如,說(shuō)明輸入定時(shí)器電路的時(shí)鐘頻率等)
-----其他有管軟件人員設計程序需要了解的信息
對于比較復雜的系統來(lái)說(shuō),硬件文檔中經(jīng)常使用兩個(gè)獨立的部分來(lái)進(jìn)行說(shuō)明;其第一部分用來(lái)描述硬件指標和工作原理,第二部分則主要為軟件人員提供程序設計需要的信息。
4.2 軟件文檔撰寫(xiě)思路
1) 軟件文檔與硬件文檔的組織方法類(lèi)似,軟件要求文檔的主要內容則是定義軟件要實(shí)現的功能;一種是在簡(jiǎn)單項目設計過(guò)程中,軟件定義也可以只對一種電路板使用的軟件給予描述;對較復雜的項目來(lái)說(shuō),由于參與這種項目的軟件人員分別負責設計驅動(dòng)不同硬件部分的代碼(同一電路板),因此每個(gè)軟件人員可能會(huì )為自己的設計代碼指定不同的定義,這類(lèi)軟件說(shuō)明需要提供下列的內容:
-----論述包括需求定義、工程指標、硬件參數等實(shí)施項目需要的內容
-----說(shuō)明軟件之間、處理器之間或處理器與其內部器件之間使用的通信協(xié)議:其內容應包括對緩沖區接口機制、命令/應答協(xié)議、信號控制等協(xié)議的具體說(shuō)明。
-----借助流程圖、偽代碼或者其他可能的方法來(lái)描述軟件的實(shí)現方法和過(guò)程
2) 軟件與硬件所考慮的不同之處(此經(jīng)驗方便技術(shù)總監或其他相關(guān)管理者參考,因為無(wú)論是多高深的技術(shù)管理者,要么是硬件出身,要么是軟件出身,要么就是非技術(shù)出身,armjishu.com里面有少數軟硬件都精通的高手)
a. 軟件的靈活性遠遠大于硬件,要讓軟件人員搞清楚某個(gè)軟件的內部格式是非常困難的任務(wù),解決的辦法:詳細定義其他程序員需要了解的編程接口具體內容,以及其他工程人員在實(shí)施開(kāi)發(fā)項目過(guò)程中需要使用的技術(shù)細節信息。
b. 軟件工程師只有在收到硬件說(shuō)明文檔后,才有可能知道如何對系統硬件進(jìn)行操作;而硬件人員一般不需要了解軟件程序的技術(shù)細節。
c. 由于軟件易于更改,因此程序內容經(jīng)常會(huì )按銷(xiāo)售人員提供的要求發(fā)生變更,在某些情況下,軟件文檔的內容無(wú)法及時(shí)反映程序的最新變化。
d. 軟件經(jīng)常是工程項目最后完成的部分,因此其文檔也經(jīng)常因時(shí)間不夠而欠缺完整。實(shí)際上,軟件文檔是否詳細、完整,在某種程度上是與公司或客戶(hù)的要求有關(guān)的。例如,軍事或國家工程一般要求開(kāi)發(fā)商就其所有軟件實(shí)現的功能提供全面詳細的文檔
e. 有個(gè)潛規則,對軟件的要求越復雜,則需求的正確可能性就越小,這個(gè)是經(jīng)驗之談了,我們需要把準需求這個(gè)準繩來(lái)做文章,而不是陷入個(gè)人主義以及對軟件要求而憑空發(fā)揮自己不切實(shí)際的想象。
f. 我們可以先硬件設計,接著(zhù)圍繞該硬件編制軟件。雖然實(shí)際系統的實(shí)現過(guò)程可能是軟硬件并行開(kāi)發(fā),但軟件人員基本上也是圍繞著(zhù)已經(jīng)實(shí)現的硬件來(lái)進(jìn)行程序設計的;對于更為復雜的系統來(lái)說(shuō),開(kāi)發(fā)過(guò)程可能會(huì )出現重復。
例如,某個(gè)項目的硬件工程師和軟件工程師可能會(huì )坐下來(lái)開(kāi)會(huì ),共同決定使用哪種硬件來(lái)實(shí)現某種功能;軟件人員可能提出需要為數據緩沖區口沖內存容量,也可能要求提供某種外部設備接口,以便充分利用現成接口程序提供的各種驅動(dòng)代碼。
總的來(lái)說(shuō),必須在提高軟件開(kāi)發(fā)效率與硬件系統的復雜性與成本之間進(jìn)行權衡.
5.嵌入式高手對技術(shù)的理解(含辛茹苦這么多年的精華體驗)
有很多人認為:嵌入式系統性能的核心因素是軟件功能,其實(shí),如果按照這種邏輯,系統設計中存在的問(wèn)題就應由軟件人員來(lái)負責;其實(shí)這個(gè)觀(guān)點(diǎn)實(shí)際上反映了設計嵌入式產(chǎn)品時(shí)如何考慮劃分硬件和軟件各自應實(shí)現的功能,也就是這個(gè)功能是軟件實(shí)現,還是考慮用硬件來(lái)實(shí)現(硬件實(shí)現:需要購買(mǎi)處理該功能的硬件芯片,從而增加成本;軟件實(shí)現:無(wú)需增加硬件成本,但會(huì )占用處理器以及內存的資源,這是armjishu.com的專(zhuān)家們體會(huì )到的)。
例如:我們在這里設計的基于STM32的神舟II號開(kāi)發(fā)板產(chǎn)品,我們可以使用專(zhuān)業(yè)的解碼芯片來(lái)負責mp3音樂(lè )文件的解碼和播放功能,也可以使用另一種方法來(lái)解碼mp3語(yǔ)音文件,讓ARM處理器利用軟件控制寄存器來(lái)驅動(dòng)耳機或音響,處理器通過(guò)對mp3語(yǔ)音文件解碼之后再將解碼后的數據流按照一定協(xié)議格式送給音頻輸出的硬件接口進(jìn)行播放。
優(yōu)點(diǎn):這種方案在硬件方面節省了一個(gè)器件,降低了成本,并且該功能還方便調試(因為是軟件實(shí)現的)。
缺點(diǎn):從另一個(gè)角度來(lái)看,雖然節省了一塊語(yǔ)音解碼芯片,但同時(shí)要在三個(gè)方面增加成本。
首先,要在程序中增加語(yǔ)音協(xié)議解碼的代碼;
其次,可能要把增加ROM來(lái)存放語(yǔ)音解碼的協(xié)議,這樣可以增加速度;
最后,運行該程序將占用處理器的時(shí)間和資源。
其實(shí),話(huà)又說(shuō)回來(lái),對于本案例來(lái)說(shuō),上述成本的節約并不會(huì )引發(fā)任何問(wèn)題,包括驅動(dòng)程序增加也只需少量的,我們討論這個(gè)mp3產(chǎn)品的案例的目的在于說(shuō)明如何對軟件硬件的功能進(jìn)行合理劃分。
總的來(lái)說(shuō),交給軟件實(shí)現的功能越多,則產(chǎn)品的成本就越低,當然這就要處理器必須有足夠的處理速度和內存空間來(lái)實(shí)現設計指定的功能;常言說(shuō)得好,天下沒(méi)有免費的午餐;把功能分配給軟件來(lái)實(shí)現,會(huì )增加軟件的復雜性、開(kāi)發(fā)時(shí)間、以及程序的調試時(shí)間;然而,隨著(zhù)處理器的處理能力的不斷提高,可以預見(jiàn),越來(lái)越多的功能將會(huì )由軟件來(lái)實(shí)現。
雖然在軟件中實(shí)現各種功能會(huì )增加開(kāi)發(fā)成本,但如果把功能移植到硬件中實(shí)現,則會(huì )增加產(chǎn)品的成本,這類(lèi)開(kāi)銷(xiāo)是在構造每個(gè)系統組件時(shí)不可避免的。在低成本設計方案中,增加任何額外的硬件都會(huì )對產(chǎn)品成本產(chǎn)生顯著(zhù)的影響,因此軟硬件功能劃分就是一個(gè)決定產(chǎn)品成本的大問(wèn)題。在諸如大眾消費產(chǎn)品這一類(lèi)對成本非常敏感的設計方案中,一般都會(huì )把無(wú)法通過(guò)軟件實(shí)現的功能排除在外的。 |
|