新闻中心

EEPW首页>嵌入式系统>设计应用> S12系列MCU通用编程系统的改进设计

S12系列MCU通用编程系统的改进设计

作者: 时间:2009-07-08 来源:网络 收藏

①PC发送进入BDM命令,目标芯片进入BDM模式;
②PC发送完全擦除命令,擦除目标芯片Flash并进行空白校验,返回校验码;
③PC发送命令将写入子程序的目标代码发送到目标芯片内存中,写入子程序的功能是将存放在目标芯片内存上的用户目标代码写入Flash中;
④PC分析S19文件,提取需要发送的目标代码,以512字节组合成一页,分页发送到目标芯片内存中,然后运行已发送目标芯片中的写入子程序,将用户目标代码写入目标芯片Flash中;
⑤PC判断是否需要发送下一页,并接收校验码判断一页数据发送是否正确。
PC发送一页数据到目标芯片内存之前,先将数据发送到调试器内存,和一次向芯片Flash写入512字节相比较。JB8的RAM只有有限的 256字节,并且堆栈也在RAM区域,可用于接收一页数据的RAM缓存太小,因而每次写入的数据量就会受到限制,要分多次写入。这就增加了PC和调试器之间的通信次数以及调试器和目标芯片的通信次数,从而影响了编程的速度。图3中,JB8以串行的方式接收和发送数据,先从PC方接收一页128字节用户目标代码(1,3,5,7过程),然后将数据发送到目标芯片内存(2,4,6,8过程)。经过4次的接收之后,目标芯片将RAM空间的512字节数据一次写入Flash空间,返回校验码。

本文引用地址://m.amcfsurvey.com/article/152430.htm

而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指总线频率。芯片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的块写入首地址传递给块擦除程序,重新进行擦除,等待当前页发送完毕,作为下一页数据参与整个流程进行写入。



评论


相关推荐

技术专区

关闭