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