1、嵌入式系統(tǒng)開發(fā)
--平臺種類繁多。
--資源受限。
--專用系統(tǒng)。
--需要與底層的硬件設(shè)備進(jìn)行通信和交互操作。與設(shè)備相關(guān)。
--數(shù)要是對設(shè)備控制和操作。
--對編譯器的要求較高,不同處理器平臺有各自的編譯器和調(diào)試軟件。
--需要專門的調(diào)試工具,尤其是一些專用設(shè)備。
--對代碼的質(zhì)量要求高,要求可執(zhí)行的程序占用的存儲(chǔ)空間少。
--由于多任務(wù)同時(shí)運(yùn)行,產(chǎn)生的錯(cuò)誤比較多,因此在穩(wěn)定性和性能上要求很高。
2、通用PC系統(tǒng)開發(fā)
--平臺種類較少。
--資源不受限制。
--通用系統(tǒng)。
--與底層操作通過系統(tǒng)軟件的接口函數(shù)API來實(shí)現(xiàn),與設(shè)備無關(guān)。
--主要是數(shù)據(jù)處理和UI界面處理。
--對編譯器沒有特別的要求,通常使用一些通用的編譯器和調(diào)試軟件。
--不需要專門的調(diào)試工具。
--對代碼的質(zhì)量沒有特別的要求,在存儲(chǔ)空間上也沒有太多的限制。
--在穩(wěn)定性和性能方面沒有嵌入式系統(tǒng)要求那么嚴(yán)格。
在 實(shí)際中,我發(fā)現(xiàn)嵌入式軟件開發(fā)有很多地方和其他的應(yīng)用軟件是大不一樣的,比如說,在嵌入式軟件中對位的操作用的是非常之多,很大的一個(gè)原因是很多接口控制 芯片為了減少地址線或簡約操作,很多控制都是用位來表示的,還有就是要注意的編譯器的優(yōu)化問題,對于一些端口或者的實(shí)時(shí)變化的變量,在定義聲明的時(shí)候一定 要將其聲明為volatile,一個(gè)定義為volatile的變量是說這變量可能會(huì)被意想不到地改 變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的 備份,否則會(huì)有災(zāi)難性的錯(cuò)誤。還有就是嵌入式軟件大部分是對很多接口芯片的操作,比如說常用的IIC接口、SPI接口、USB接口、RS232接口、紅外接口、LCD控制器接口、觸摸屏接口、以太網(wǎng)、can總線等等,還需要熟悉一些常用器件的確定時(shí)序,例如AD轉(zhuǎn)換器和DA轉(zhuǎn)換器、電源控制芯片、信號發(fā)生芯片。有時(shí)候做的系統(tǒng)比較大還需要了解其他嵌入式芯片的接口很如何兼容,簡單的一個(gè)例子就是,假若使用ARM作為控制處理器,控制輸入輸出和顯示,使用DSP作為數(shù)據(jù)的高速處理,使用FPGA作為數(shù)據(jù)的采集和存儲(chǔ)器控制以及一些AD的控制,那么就需要通過嵌入式軟件將三者接口聯(lián)系起來。在其他的軟件設(shè)計(jì)中,我想一臺好點(diǎn)PC電腦,裝上幾個(gè)軟件就控制工作了,但是對嵌入式軟件來說,很多時(shí)候用到很多專門的軟件和設(shè)備,例如JTAG口代理軟件,ADS1.2編譯環(huán)境,什么串口調(diào)試助手和以太網(wǎng)檢測工具啊,有時(shí)候要測試硬件上的問題,那就需要一臺示波器,最好是多通道高速的,至少電壓表得有一個(gè),好一點(diǎn)的有信號發(fā)生器、邏輯分析儀等等。對于測量控制領(lǐng)域我覺得稍微大一定的系統(tǒng)使用ucos+ucgui很好的,linux的實(shí)時(shí)性不是很好,而且入門操作都不太容易,但是對于實(shí)時(shí)性要求不太高的,用linux也是一個(gè)非常好的選擇。
軟件開發(fā)和嵌入式開發(fā)區(qū)別
嵌入式開發(fā)主要針對硬件開發(fā),開發(fā)的軟件用在單片機(jī)、ARM上,嵌入式開發(fā)要了解硬件的結(jié)構(gòu),工作原理,開發(fā)語言現(xiàn)在主流用C語言。
一般的軟件開發(fā)多指面向?qū)ο螅?/span>.net開發(fā),做網(wǎng)站,做系統(tǒng)等等,這方面流行的語種比較多。VC、VB、PB、JAVA、ASP、JSP。
嵌入式計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)過程
1. 需求分析
確定設(shè)計(jì)任務(wù)和目標(biāo),并制定說明規(guī)格文檔,作為下一步設(shè)計(jì)的指導(dǎo)和驗(yàn)收標(biāo)準(zhǔn)。需求分析往往要與用戶反復(fù)交流,以明確系統(tǒng)功能需求,性能需求,環(huán)境、可靠性、成本、功耗、資源等需求。
2. 體系結(jié)構(gòu)設(shè)計(jì)
體系結(jié)構(gòu)設(shè)計(jì)是嵌入式系統(tǒng)的總體設(shè)計(jì),它需要確定嵌入式系統(tǒng)的總體構(gòu)架,從功能上對軟硬件進(jìn)行劃分。在此基礎(chǔ)上,確定嵌入式系統(tǒng)的硬件選型(主要是處理器選型),操作系統(tǒng)的選擇和開發(fā)環(huán)境的選擇。
3. 硬件的設(shè)計(jì)、制作及測試
在這一階段要確定硬件部分的各功能模塊及模塊之間的關(guān)聯(lián),并在此基礎(chǔ)上完成元器件的選擇、原理圖繪制、印刷電路板(PCB)設(shè)計(jì)、硬件的裝配與測試、目標(biāo)硬件最終的確定和測試。
4. 軟件的設(shè)計(jì)、實(shí)現(xiàn)及測試
這部分工作與硬件開發(fā)并行、交互進(jìn)行。軟件設(shè)計(jì)主要完成引導(dǎo)程序的編制、操作系統(tǒng)的移植、驅(qū)動(dòng)程序的開發(fā)、應(yīng)用軟件的編寫等工作。設(shè)計(jì)完成后,軟件開發(fā)進(jìn)入實(shí)現(xiàn)階段。這一階段主要是嵌入式軟件的生成(編譯、鏈接),調(diào)試和固化運(yùn)行,最后完成軟件的測試。
5. 系統(tǒng)集成
將測試完成的軟件系統(tǒng)裝入制作好的硬件系統(tǒng)中,進(jìn)行系統(tǒng)綜合測試,驗(yàn)證系統(tǒng)功能是否能夠正確無誤地實(shí)現(xiàn),最后將正確的軟件固化在目標(biāo)硬件中。本階段的工作是整個(gè)開發(fā)過程中最復(fù)雜、最費(fèi)時(shí)的,特別需要相應(yīng)的輔助工具支持。
6. 系統(tǒng)性能測試及可靠性測試
測試最終完成的系統(tǒng)性能是否滿足設(shè)計(jì)任務(wù)書的各項(xiàng)性能指標(biāo)和要求。若滿足,則可將正確無誤的軟件固化在目標(biāo)硬件中;若不能滿足,在最壞的情況下,則需要回到設(shè)計(jì)的初始階段重新進(jìn)行設(shè)計(jì)方案的制定。
2. 軟件開發(fā)和嵌入式開發(fā)的特點(diǎn)
3. 嵌入式計(jì)算機(jī)系統(tǒng)同通用型計(jì)算機(jī)系統(tǒng)相比具有以下特點(diǎn): |
1.嵌入式系統(tǒng)通常是面向特定應(yīng)用的嵌入式CPU與通用型的最大不同就是嵌入式CPU大多工作在為特定用戶群設(shè)計(jì)的系統(tǒng)中,它通常都具有低功耗、體積小、集成度高等特點(diǎn),能夠把通用CPU中許多由板卡完成的任務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設(shè)計(jì)趨于小型化,移動(dòng)能力大大增強(qiáng),跟網(wǎng)絡(luò)的耦合也越來越緊密。
2.嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。這一點(diǎn)就決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識集成系統(tǒng)。
3.嵌入式系統(tǒng)的硬件和軟件都必須高效率地設(shè)計(jì),量體裁衣、去除冗余,力爭在同樣的硅片面積上實(shí)現(xiàn)更高的性能,這樣才能在具體應(yīng)用中對處理器的選擇更具有競爭力。
4.嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級換代也是和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場,具有較長的生命周期。 5.為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)本身中,而不是存貯于磁盤等載體中。
6.嵌入式系統(tǒng)本身不具備自舉開發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也是不能對其中的程序功能進(jìn)行修改的,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)。