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