而JM60作为编程调试器则拥有4 KB的RAM,可以直接开辟512字节作为缓冲。在整个编程系统通信流程的设计上,就可以借鉴指令流水线操作的思想,充分考虑可作预取的操作,利用编程调试器和目标芯片之间通信的时间完成PC方单独的操作,以及利用目标芯片自身进行操作的时间来完成PC方和编程调试器之间的操作,提高编程系统的运行速率,尽量减少空等待操作。
在图4所示的以JM60作为编程调试器的编程系统通信流程中,首先PC发送第1页用户目标代码到JM60内存(过程1),然后发送到目标芯片内存(过程 2),目标芯片执行写入子程序将数据写入Flash。写入子程序执行过程中,字写入命令时间t=9×(1÷fNMVOP)+25×(1÷fbus)。 fNMVOP指Flash操作频率,fbus指总线频率。S12系列芯片Flash的操作频率范围限制在150~200 kHz,取fNMVOP=200 kHz,fbus=40 MHz,计算得1个字写入时间在最小情况下为t=0.045 625 ms,写入512字节需要时间为11.68 ms,而PC发送1页数据的时间为512×8÷12Mbps=0.341 ms。因此PC和JM60可以利用目标芯片写入1页数据的时间进行交互,将下一页数据提前发送到JM60,完成从PC→JM60内存,如图5所示。 JM60和目标芯片也可以在PC对前一页数据进行校验的同时,将1页数据从JM60发送到目标芯片,如图6所示。
在实现以上思想的同时也充分考虑了写入过程出错的情况,如图4在JM60内存区域开辟了可存放2页数据的缓冲区用于接收用户目标代码。若前一页数据写入错误,则将这页数据在Flash的块写入首地址传递给块擦除程序,重新进行擦除,等待当前页发送完毕,作为下一页数据参与整个流程进行写入。