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