揭秘:6秒极速开机如何实现?

示波器的开机时间几乎都在30秒甚至1分钟以上,似乎大家已经习以为常了,因此几乎所有的制造商都熟视无睹。而周立功的设计理念却完全不一样,那就是“让用户从按下电源那一刻起,就能感受到我们的努力和诚意。” 基于此,ZDS2022做到了从按下电源到开始使用,整个过程仅需6秒时间,其开机时间击垮了所有品牌的示波器。

ZDS2022示波器开机速度快,主要得益于对启动代码的深度优化。开机时,启动代码需要配置FPGA并加载DSP应用程序,即需要分别将FPGA和DSP固件从外部FLASH中读出来,然后通过SPI接口将FPGA固件配置到FPGA芯片中,以及解析DSP固件并将之存放到相应的地址段。在传统的启动代码中,这些操作是由CPU来执行的,虽然速度很慢,但程序设计简易。直观来看,其瓶颈在于:

  • 外部FLASH比较慢,CPU从FLASH中读取数据花了较长时间;
  • 通过SPI配置FPGA耗时较长;
  • 在整个过程中,CPU都是按照串行方式执行的。

如果要缩短开机时间,除了开启指令、数据cache与打开编译器优化等基本方法外,通常考虑的无非是将外部FLASH的速度配快些。显然,如果将外部FLASH配得过快那是有风险的,完全可能导致读出来的数据出错,且速度提升效果并不明显。通过分析发现,最大的瓶颈在于操作的所有过程CPU是按照串行方式来执行的,而读FLASH与SPI配置FPGA等数据传输操作完全可以通过DMA来完成,利用CPU与DMA可并行运行的特点,将CPU资源释放出来用于并行解析DSP固件,这样一来开机速度就会大大地提升,详见下图。

示波器开机时间优化处理流程

通过上述优化后,开机速度有了明显的提升。由于FLASH读取速度太慢,因此进一步将代码压缩比达到了3:1甚至更大,那么FLASH中存放的是压缩后的代码,则读取FLASH的时间就少很多了。由于DSP的运算能力极强,解压速度快,因此启动的综合时间进一步缩短,最终不仅将开机时间控制在6秒,而且通过代码压缩减少了所需的FLASH空间。