為什么要使用仿真器
1.1 仿真的概念:
----仿真的概念其實(shí)使用非常廣,最終的含義就是使用可控的手段來(lái)模仿真實(shí)的情況。
----在嵌入式系統(tǒng)的設(shè)計(jì)中,仿真應(yīng)用的范圍主要集中在對(duì)程序的仿真上。例如,在單片機(jī)的開(kāi)發(fā)過(guò)程中,程序的設(shè)計(jì)是最為重要的但也是難度最大的一種最簡(jiǎn)單和原始的開(kāi)發(fā)流程是:編寫(xiě)程序燒寫(xiě)芯片驗(yàn)證功能,這種方法對(duì)于簡(jiǎn)單的小系統(tǒng)是可以對(duì)付的,但在大系統(tǒng)中使用這種方法則是完全不可能的。
1.2 仿真的種類(lèi):
---軟件仿真:這種方法主要是使用計(jì)算機(jī)軟件來(lái)模擬運(yùn)行,實(shí)際的單片機(jī)運(yùn)行因此仿真與硬件無(wú)關(guān)的系統(tǒng)具有一定的優(yōu)點(diǎn)。用戶(hù)不需要搭建硬件電路就可以對(duì)程序進(jìn)行驗(yàn)證,特別適合于偏重算法的程序。軟件仿真的缺點(diǎn)是無(wú)法完全仿真與硬件相關(guān)的部分,因此最終還要通過(guò)硬件仿真來(lái)完成最終的設(shè)計(jì)。
---硬件仿真:使用附加的硬件來(lái)替代用戶(hù)系統(tǒng)的單片機(jī)并完成單片機(jī)全部或大部分的功能。使用了附加硬件后用戶(hù)就可以對(duì)程序的運(yùn)行進(jìn)行控制,例如單步,全速,查看資源斷點(diǎn)等。硬件仿真是開(kāi)發(fā)過(guò)程中所必須的。
1.3 為什么要使用仿真器?
---在與一些有經(jīng)驗(yàn)的工程師交談中,我們會(huì)發(fā)現(xiàn)有相當(dāng)一部分工程師在開(kāi)發(fā)中不使用或很少仿真器。向他們?cè)儐?wèn),原因得到的回答是"仿真器不可靠"但是他們是如何解決程序開(kāi)發(fā)中遇到的問(wèn)題呢?通過(guò)深入的交流才明白他們是按照這樣的方法來(lái)開(kāi)發(fā)程序的:
---(1) 根據(jù)自己的設(shè)計(jì)建立一個(gè)符合要求的硬件平臺(tái),如果該平臺(tái)涉及的程序比較復(fù)雜。還要搭建一個(gè)人機(jī)交流的通道人機(jī)交流通道可能是一個(gè)簡(jiǎn)單的發(fā)光二極,管蜂鳴器,復(fù)雜的可能是串口通訊口LCD顯示屏。
---(2) 寫(xiě)一個(gè)最簡(jiǎn)單的程序例,如只是將發(fā)光二極管連續(xù)的閃爍。程序編譯后燒寫(xiě)到單片機(jī)芯片中,驗(yàn)證硬件平臺(tái)是否工作正常。
---(3) 硬件平臺(tái)正常工作后編寫(xiě)系統(tǒng)最低層的驅(qū)動(dòng)程序,每次程序更改后都重新燒寫(xiě)單片機(jī)芯片驗(yàn)證。如果在程序驗(yàn)證中遇到問(wèn)題,則可能在程序中加入一些調(diào)試手段。例如通過(guò)串口發(fā)送一些信息到PC 端的超級(jí)終端上,用于了解程序的運(yùn)行情況。
---(4) 系統(tǒng)低層驅(qū)動(dòng)程序完成后再編寫(xiě)用戶(hù)框架程序,由于這部分已經(jīng)不涉及到硬件部分,所以程序中的問(wèn)題用戶(hù)一般能夠發(fā)現(xiàn)。
---但是更多的調(diào)查表明,使用以上方法的工程師總的看來(lái)所設(shè)計(jì)的程序不是很龐大或很復(fù)雜。因?yàn)樵谧龊?jiǎn)單的項(xiàng)目時(shí),我們可以通過(guò)一個(gè)發(fā)光二極管就可以表達(dá)出內(nèi)部的信息:如果程序復(fù)雜,可能需要更多的信息來(lái)表示內(nèi)部的狀態(tài),這樣可能就需要串口協(xié)助調(diào)試:如果程序更復(fù)雜,硬件更多,實(shí)時(shí)性更強(qiáng),那工程師就要更多的增強(qiáng)調(diào)試手段,串口可能就不能滿(mǎn)足了,需要類(lèi)似于斷點(diǎn)的功能,因?yàn)槲蚁胫涝谀骋粋€(gè)時(shí)刻單片機(jī)內(nèi)部的狀態(tài)究竟是怎樣?
---如果用戶(hù)程序的修改非常頻繁,可能一次又一次地的燒寫(xiě)芯片占用的時(shí)間就很多,這時(shí)用戶(hù)就會(huì)想能下載程序并運(yùn)行的裝置。
---到這里,您會(huì)看到,隨著用戶(hù)要求的越來(lái)越高,調(diào)試裝置已經(jīng)越來(lái)越象一個(gè)通用的仿真器了。因此我們的建議是:不要回避使用仿真器因?yàn)槭褂梅抡嫫髂芴岣吣拈_(kāi)發(fā)速度。
---但是不能否認(rèn)的是,用戶(hù)回避使用仿真器也是有原因的。因?yàn)榉抡嫫饕彩且环N電子裝置,非常依賴(lài)于設(shè)計(jì)者的水平。如果一個(gè)仿真器設(shè)計(jì)者的水平有欠缺,那將給仿真器的使用者帶來(lái)很大的問(wèn)題。因?yàn)榉抡嫫鞯氖褂谜邔⒎植磺宄烤故浅绦虻膯?wèn)題還是出在那里。隨著電子設(shè)備的復(fù)雜化,設(shè)計(jì)工程師面臨前所未有的壓力。您可以想象,用戶(hù)發(fā)現(xiàn)了程序中有一個(gè)問(wèn)題,首先懷疑是自己系統(tǒng)中的問(wèn)題,可能是軟件方面也可能是硬件方面。因?yàn)橛脩?hù)系統(tǒng)處于開(kāi)發(fā)階段,用戶(hù)基本上不會(huì)懷疑仿真器。在這種情況下,用戶(hù)將耗費(fèi)很大的精力在自己的系統(tǒng)中尋找并不存在的問(wèn)題。如果用戶(hù)最終發(fā)現(xiàn)問(wèn)題來(lái)源于仿真器,并通過(guò)燒寫(xiě)芯片驗(yàn)證確,實(shí)如此那這個(gè)仿真器用戶(hù)以后可能會(huì)逐漸放棄使用仿真器。
---用戶(hù)放棄使用仿真器,對(duì)用戶(hù)的影響是巨大的。因?yàn)榉艞壥褂靡粋€(gè)設(shè)計(jì)不完善的仿真器,也放棄了使用其它設(shè)計(jì)完善的仿真器,關(guān)鍵是放棄了合理的開(kāi)發(fā)方法。因此我們的建議是:不要回避使用仿真器但要挑選好的仿真器。