模擬器
模擬器
模擬的概念其實使用非常廣,最終的含義就是使用可控的手段來模模擬實的情況。
目錄
----在嵌入式系統的設計中,模擬應用的範圍主要集中在對程序的模擬上。例如,在單片機的開發過程中,程序的設計是最為重要的但也是難度最大的一種最簡單和原始的開發流程是:編寫程序燒寫晶元驗證功能,這種方法對於簡單的小系統是可以對付的,但在大系統中使用這種方法則是完全不可能的。
1.2 模擬的種類:
---軟體模擬:這種方法主要是使用計算機軟體來模擬運行,實際的單片機運行因此模擬與硬體無關的系統具有一定的優點。用戶不需要搭建硬體電路就可以對程序進行驗證,特別適合於偏重演演算法的程序。軟體模擬的缺點是無法完全模擬與硬體相關的部分,因此最終還要通過硬體模擬來完成最終的設計。
---硬體模擬:使用附加的硬體來替代用戶系統的單片機並完成單片機全部或大部分的功能。使用了附加硬體後用戶就可以對程序的運行進行控制,例如單步,全速,查看資源斷點等。硬體模擬是開發過程中所必須的。
1.3 為什麼要使用模擬器?
---在與一些有經驗的工程師交談中,我們會發現有相當一部分工程師在開發中不使用或很少模擬器。向他們詢問,原因得到的回答是"模擬器不可靠"但是他們是如何解決程序開發中遇到的問題呢?通過深入的交流才明白他們是按照這樣的方法來開發程序的:
---(1) 根據自己的設計建立一個符合要求的硬體平台,如果該平台涉及的程序比較複雜。還要搭建一個人機交流的通道人機交流通道可能是一個簡單的發光二極,管蜂鳴器,複雜的可能是串口通訊口LCD顯示屏。
---(2) 寫一個最簡單的程序例,如只是將發光二極體連續的閃爍。程序編譯后燒寫到單片機晶元中,驗證硬體平台是否工作正常。
---(3) 硬體平台正常工作后編寫系統最低層的驅動程序,每次程序更改后都重新燒寫單片機晶元驗證。如果在程序驗證中遇到問題,則可能在程序中加入一些調試手段。例如通過串口發送一些信息到PC 端的超級終端上,用於了解程序的運行情況。
---(4) 系統低層驅動程序完成後再編寫用戶框架程序,由於這部分已經不涉及到硬體部分,所以程序中的問題用戶一般能夠發現。
---但是更多的調查表明,使用以上方法的工程師總的看來所設計的程序不是很龐大或很複雜。因為在做簡單的項目時,我們可以通過一個發光二極體就可以表達出內部的信息:如果程序複雜,可能需要更多的信息來表示內部的狀態,這樣可能就需要串口協助調試:如果程序更複雜,硬體更多,實時性更強,那工程師就要更多的增強調試手段,串口可能就不能滿足了,需要類似於斷點的功能,因為我想知道在某一個時刻單片機內部的狀態究竟是怎樣?
---如果用戶程序的修改非常頻繁,可能一次又一次地的燒寫晶元佔用的時間就很多,這時用戶就會想能下載程序並運行的裝置。
---到這裡,您會看到,隨著用戶要求的越來越高,調試裝置已經越來越象一個通用的模擬器了。因此我們的建議是:不要迴避使用模擬器因為使用模擬器能提高您的開發速度。
---但是不能否認的是,用戶迴避使用模擬器也是有原因的。因為模擬器也是一種電子裝置,非常依賴於設計者的水平。如果一個模擬器設計者的水平有欠缺,那將給模擬器的使用者帶來很大的問題。因為模擬器的使用者將分不清楚究竟是程序的問題還是出在那裡。隨著電子設備的複雜化,設計工程師面臨前所未有的壓力。您可以想象,用戶發現了程序中有一個問題,首先懷疑是自己系統中的問題,可能是軟體方面也可能是硬體方面。因為用戶系統處於開發階段,用戶基本上不會懷疑模擬器。在這種情況下,用戶將耗費很大的精力在自己的系統中尋找並不存在的問題。如果用戶最終發現問題來源於模擬器,並通過燒寫晶元驗證確,實如此那這個模擬器用戶以後可能會逐漸放棄使用模擬器。
---用戶放棄使用模擬器,對用戶的影響是巨大的。因為放棄使用一個設計不完善的模擬器,也放棄了使用其它設計完善的模擬器,關鍵是放棄了合理的開發方法。因此我們的建議是:不要迴避使用模擬器但要挑選好的模擬器。
1.4 模擬器的附加服務更加重要
---在購買模擬器的同時,還要注意模擬器廠家的服務,這一點很關鍵。這裡說的服務包含模擬器本身的服務,例如模擬器使用上的指導服務,模擬器的維修服務,這些都是一個產品的最基本的服務。對於模擬器這種特殊產品來將還不是全部的服務。
---使用模擬器來開發產品,會遇到很多問題:產品本身的問題,模擬器的問題,模擬器和用戶系統的問題。如果用戶開發經驗不是很豐富,他並不能排除遇到的問題究竟來源於哪個方面。這時,他可能求助於模擬器生產廠商。如果模擬器的生產廠商只專註於模擬器的設計,而對於其它的單片機應用不熟悉,他可能對用戶提出的問題不能作出正確的判斷而一味的強調自己的模擬器沒有問題。與之相反,一個既熟悉模擬器的使用,又有豐富開發經驗的模擬器支持廠商則能協助用戶快速的找出問題。實踐證明這兩種情況帶來的效果是完全不一樣的。