1. 程式人生 > >開發一般PC機軟體與嵌入式應用的區別

開發一般PC機軟體與嵌入式應用的區別

剛剛參加工作的時候我從事的是嵌入式應用系統的開發,後來又經歷了長達10年的PC機應用軟體的開發,直到最近,才又返回來進行嵌入式系統的開發,對於這兩種軟體開發的區別頗有一點心得。

總的來說,嵌入式開發與一般計算機軟體開發的區別如下:

1、終端軟體把大量的功能集中在一個程式中,程式碼規模非常大,原始碼動輒幾M、幾十M、甚至上百M;而嵌入式系統一般把功能分散在不同的硬體模組中,使用分散的程式是先系統功能,雖然整個系統功能點很多,但是具體到某個硬體模組,則程式碼一般都比較少,基本上是幾十到幾百K;

2、終端軟體執行在PC機上,一般來說編寫程式碼的時候是不用考慮記憶體和效率的問題(特殊情況除外);而嵌入式系統所使用的CPU從8位機到32位機都有,很多時候都會考慮到系統記憶體和程式碼執行效率的問題;

3、終端軟體大多數是訪問資料庫,使用網路來互相通訊;而嵌入式系統一般是訪問硬體,使用串列埠、HDLC、USB、網路等多種通訊方式;

4、終端軟體的操作介面主要是圖形介面,使用鍵盤、滑鼠或者其它外設進行操作;而嵌入式系統一般是提供一些介面供終端軟體訪問,不直接提供操作介面;

5、終端軟體編寫使用的語言多種多樣,不下幾十種;而嵌入式系統最常用的語言就是C和彙編;

6、終端軟體開發、除錯的工具都很強大,不需要額外的硬體支援;而嵌入式系統除錯,一般都需要有硬體的模擬器來幫助除錯,使用起來比較複雜,有時候出問題還需要確定是程式碼的問題還是模擬器的問題;

7、終端軟體開發在網上可以查到大量的資料,有很多的原始碼可以參考或者直接使用;而嵌入式系統一般只能查到廠商提供的晶片資料,具體的應用系統因為硬體不同,查詢到的資料和原始碼基本上只能參考,而不能直接使用;

8、終端軟體除錯遇到問題一般不用考慮硬體故障,基本上是軟體問題;而嵌入式系統遇到問題首先要確定是硬體問題還是軟體問題,這個問題從系統的開發一直到最後的維護階段都是一直存在的;

9、終端軟體有時可以通過升級硬體來提升系統的效能,不需要另外修改軟體;而嵌入式系統要提升效能,首先考慮的方法就是修改軟體演算法或者削減不必要的功能,因為嵌入式系統如果要修改硬體,必然要導致軟體的修改,跟重新開發一個軟體的工作量差不多(因為這個問題的存在,現在才有了嵌入式作業系統,可以減輕一些軟體移植的工作量);