S12系列MCU通用編程系統的改進(jìn)設計
①PC發(fā)送進(jìn)入BDM命令,目標芯片進(jìn)入BDM模式;
②PC發(fā)送完全擦除命令,擦除目標芯片Flash并進(jìn)行空白校驗,返回校驗碼;
③PC發(fā)送命令將寫(xiě)入子程序的目標代碼發(fā)送到目標芯片內存中,寫(xiě)入子程序的功能是將存放在目標芯片內存上的用戶(hù)目標代碼寫(xiě)入Flash中;
④PC分析S19文件,提取需要發(fā)送的目標代碼,以512字節組合成一頁(yè),分頁(yè)發(fā)送到目標芯片內存中,然后運行已發(fā)送目標芯片中的寫(xiě)入子程序,將用戶(hù)目標代碼寫(xiě)入目標芯片Flash中;
⑤PC判斷是否需要發(fā)送下一頁(yè),并接收校驗碼判斷一頁(yè)數據發(fā)送是否正確。
PC發(fā)送一頁(yè)數據到目標芯片內存之前,先將數據發(fā)送到編程調試器內存,和一次向S12系列芯片Flash寫(xiě)入512字節相比較。JB8的RAM只有有限的 256字節,并且堆棧也在RAM區域,可用于接收一頁(yè)數據的RAM緩存太小,因而每次寫(xiě)入的數據量就會(huì )受到限制,要分多次寫(xiě)入。這就增加了PC和編程調試器之間的通信次數以及編程調試器和目標芯片的通信次數,從而影響了編程的速度。圖3中,JB8以串行的方式接收和發(fā)送數據,先從PC方接收一頁(yè)128字節用戶(hù)目標代碼(1,3,5,7過(guò)程),然后將數據發(fā)送到目標芯片內存(2,4,6,8過(guò)程)。經(jīng)過(guò)4次的接收之后,目標芯片將RAM空間的512字節數據一次寫(xiě)入Flash空間,返回校驗碼。本文引用地址:http://dyxdggzs.com/article/152430.htm
而JM60作為編程調試器則擁有4 KB的RAM,可以直接開(kāi)辟512字節作為緩沖。在整個(gè)編程系統通信流程的設計上,就可以借鑒指令流水線(xiàn)操作的思想,充分考慮可作預取的操作,利用編程調試器和目標芯片之間通信的時(shí)間完成PC方單獨的操作,以及利用目標芯片自身進(jìn)行操作的時(shí)間來(lái)完成PC方和編程調試器之間的操作,提高編程系統的運行速率,盡量減少空等待操作。
在圖4所示的以JM60作為編程調試器的編程系統通信流程中,首先PC發(fā)送第1頁(yè)用戶(hù)目標代碼到JM60內存(過(guò)程1),然后發(fā)送到目標芯片內存(過(guò)程 2),目標芯片執行寫(xiě)入子程序將數據寫(xiě)入Flash。寫(xiě)入子程序執行過(guò)程中,字寫(xiě)入命令時(shí)間t=9×(1÷fNMVOP)+25×(1÷fbus)。 fNMVOP指Flash操作頻率,fbus指總線(xiàn)頻率。S12系列芯片Flash的操作頻率范圍限制在150~200 kHz,取fNMVOP=200 kHz,fbus=40 MHz,計算得1個(gè)字寫(xiě)入時(shí)間在最小情況下為t=0.045 625 ms,寫(xiě)入512字節需要時(shí)間為11.68 ms,而PC發(fā)送1頁(yè)數據的時(shí)間為512×8÷12Mbps=0.341 ms。因此PC和JM60可以利用目標芯片寫(xiě)入1頁(yè)數據的時(shí)間進(jìn)行交互,將下一頁(yè)數據提前發(fā)送到JM60,完成從PC→JM60內存,如圖5所示。 JM60和目標芯片也可以在PC對前一頁(yè)數據進(jìn)行校驗的同時(shí),將1頁(yè)數據從JM60發(fā)送到目標芯片,如圖6所示。
在實(shí)現以上思想的同時(shí)也充分考慮了寫(xiě)入過(guò)程出錯的情況,如圖4在JM60內存區域開(kāi)辟了可存放2頁(yè)數據的緩沖區用于接收用戶(hù)目標代碼。若前一頁(yè)數據寫(xiě)入錯誤,則將這頁(yè)數據在Flash的塊寫(xiě)入首地址傳遞給塊擦除程序,重新進(jìn)行擦除,等待當前頁(yè)發(fā)送完畢,作為下一頁(yè)數據參與整個(gè)流程進(jìn)行寫(xiě)入。
評論