ZDS2022十全十美示波器之6秒開(kāi)機(jī)時(shí)間
示波器的開(kāi)機(jī)時(shí)間幾乎都在30秒甚至1分鐘以上,似乎大家已經(jīng)習(xí)以為常了,因此幾乎所有的制造商都熟視無(wú)睹。而周立功的設(shè)計(jì)理念卻完全不一樣,那就是“讓用戶(hù)從按下電源那一刻起,就能感受到我們的努力和誠(chéng)意。” 基于此,ZDS2022做到了從按下電源到開(kāi)始使用,整個(gè)過(guò)程僅需6秒時(shí)間,其開(kāi)機(jī)時(shí)間擊垮了所有品牌的示波器。
ZDS2022示波器開(kāi)機(jī)速度快,主要得益于對(duì)啟動(dòng)代碼的深度優(yōu)化。開(kāi)機(jī)時(shí),啟動(dòng)代碼需要配置FPGA并加載DSP應(yīng)用程序,即需要分別將FPGA和DSP固件從外部FLASH中讀出來(lái),然后通過(guò)SPI接口將FPGA固件配置到FPGA芯片中,以及解析DSP固件并將之存放到相應(yīng)的地址段。在傳統(tǒng)的啟動(dòng)代碼中,這些操作是由CPU來(lái)執(zhí)行的,雖然速度很慢,但程序設(shè)計(jì)簡(jiǎn)易。
直觀來(lái)看,其瓶頸在于:
- 外部FLASH比較慢,CPU從FLASH中讀取數(shù)據(jù)花了較長(zhǎng)時(shí)間;
- 通過(guò)SPI配置FPGA耗時(shí)較長(zhǎng);
- 在整個(gè)過(guò)程中,CPU都是按照串行方式執(zhí)行的。
如果要縮短開(kāi)機(jī)時(shí)間,除了開(kāi)啟指令、數(shù)據(jù)cache與打開(kāi)編譯器優(yōu)化等基本方法外,通??紤]的無(wú)非是將外部FLASH的速度配快些。顯然,如果將外部FLASH配得過(guò)快那是有風(fēng)險(xiǎn)的,完全可能導(dǎo)致讀出來(lái)的數(shù)據(jù)出錯(cuò),且速度提升效果并不明顯。通過(guò)分析發(fā)現(xiàn),最大的瓶頸在于操作的所有過(guò)程CPU是按照串行方式來(lái)執(zhí)行的,而讀FLASH與SPI配置FPGA等數(shù)據(jù)傳輸操作完全可以通過(guò)DMA來(lái)完成,利用CPU與DMA可并行運(yùn)行的特點(diǎn),將CPU資源釋放出來(lái)用于并行解析DSP固件,這樣一來(lái)開(kāi)機(jī)速度就會(huì)大大地提升,詳見(jiàn)圖1:
通過(guò)上述優(yōu)化后,開(kāi)機(jī)速度有了明顯的提升。由于FLASH讀取速度太慢,因此進(jìn)一步將代碼壓縮比達(dá)到了3:1甚至更大,那么FLASH中存放的是壓縮后的代碼,則讀取FLASH的時(shí)間就少很多了。由于DSP的運(yùn)算能力極強(qiáng),解壓速度快,因此啟動(dòng)的綜合時(shí)間進(jìn)一步縮短,最終不僅將開(kāi)機(jī)時(shí)間控制在6秒,而且通過(guò)代碼壓縮減少了所需的FLASH空間。