S12系列MCU通用編程系統的改進設計
2.2 通信子程序的改進
2.2.1 優化通信子程序代碼
通信流程的改進提高了整個編程系統的通信速率。進一步分析編程系統,從JM60發送數據到目標芯片,內存需要的時間在整個程序下載過程中占用比例比較大;而在1位發送過程中,如圖7所示,從位開始時刻到目標芯片讀取時刻的周期間隔是固定的10~13個目標周期,但位與位之間的發送存在時隙。
在原有編程系統的字節發送代碼中,發送位1和位0是兩個單獨的子程序,需要通過判斷來分別調用兩個子程序。所使用的BCC、JSR、BRA都是周期較長的指令,且每發送1位就調用1次JSR指令,就有一次RTS指令返回,需要周期較多。在改進編程系統的字節發送代碼中,將位1和位0的發送代碼很好地結合在 1個子程序之內,縮短了位與位之間發送的時隙。本文引用地址:http://www.104case.com/article/152430.htm
編程系統通過BDM硬件命令WRITE_WORD發送1個字,需要調用5次字節發送程序。發送的5字節分別是1字節的命令操作碼、2字節的內存地址、2字節的數據,同時硬件命令WRTE_WORD的完成還需要延遲150個編程調試器時鐘周期。所以假如從編程調試器發送100 KB的數據到目標芯片內存,其所需要花費的時間計算如下:
在JB8的編程系統中,發送1個字節的周期為:2+(1+3+5+4+4+4+3+3+4+7)×8+4=310,100 KB的數據需要(100×1024÷2)個字×(5×310+150)個周期÷(3×106)=29.01 s。
在改進的編程系統中,發送1個字節的周期為:2+2+4+3+1+1+2+4+(1+3+6+88)×8+2+4=809,100 KB的數據需要(100×1024÷2)個字×(5×809+150)個周期÷(24×105)=8.95 s。
而JM60緩存中的數據是以連續存放的形式寫入目標芯片內存的,因此可以選用BDM固件命令WRITE_NEXT,每次執行命令時寄存器X的值會先自動加 2,然后將1個字寫入到X所指向的地址。所以只需要在寫入開始時,對寄存器X進行一次地址賦值操作,將目標芯片內存地址減2處的地址值賦給X即可,后續數據可以直接調用WRITE_NEXT命令寫入,不需要再發送地址信息。采用WRITE_NEXT寫1個字需要發送3個字節(1個字節的命令操作碼、2個字節的數據),它的完成需要延遲32個編程調試器時鐘周期。因而從編程調試器發送100 KB的數據到目標芯片內存需要花費的時間計算如下:
(100×1024÷2)個字×(3×809+32)個周期÷(24×106)=5.25 s
改進后的編程系統在編程調試器內存與目標芯片內存的數據通信速度上提高了5.5倍,大大提高了編程調試器的工作效率。
2.2.2 編寫目標芯片接收程序
優化通信子程序代碼之后,從編程調試器內存向目標芯片內存發送數據的時間大大減少,但是使用BDM命令,除了發送2個字節的用戶數據之外,還需要發送額外的字節,并且命令的完成都需要較長的延遲時間。由于BDM采用單線引腳串行通信,因此可以自己編寫一段模擬BDM串行通信的程序,目標芯片只從編程調試器接收用戶目標代碼,提高通信速度。
另外將JM60的引腳PTBD.O與目標芯片PTA.0引腳相連來傳送數據,以便數據通信過程不影響BKGD引腳。過程如下:
①按照編程調試器發送1位時序,在編程調試器方編寫以PTBD.0為發送引腳的字節發送代碼;
②按照目標芯片接收1位的過程,編寫目標芯片以PTA.0為接收引腳的字節接收代碼,進而編寫好目標芯片接收程序;
③將自定義的目標芯片接收程序編譯成目標代碼,通過基本的BDM命令發送到目標芯片內存;
④執行目標芯片中自定義的接收程序,將接收到的字節寫入目標芯片指定的內存空間。
由于目標芯片的接收程序是自己定義的,因此編程調試器不需要發送操作碼與地址信息,也無需等待命令完成延遲時間。自定義的目標芯片接收程序代碼量少于50字節,這部分時間很短。因而假如從編程調試器發送100KB的數據到目標芯片內存,需要花費的時間計算如下:
(100×1024)個字節×809個周期÷(24×106)=3.45 s
使用自定義目標芯片接收程序,在原有系統編程調試器內存與目標芯片內存的數據通信速度上提高了8倍多。
3 編程系統的通用性設計
編程系統的通用性在于兩點:一是可以根據不同型號的目標芯片獲取相應的MCU參數進行操作;二是可以根據不同型號MCU的總線頻率調用相應的發送接收代碼。
3.1 MCU信息的存儲
S12系列MCU有很多型號,而且未來還會推出更多新型號。表1給出了數據庫中MCU的信息。不同型號MCU屬性參數不同,包括內部RAM及Flash的大小和起始地址。這些參數在對目標芯片進行擦除、寫入及調試操作時極為重要。為了便于通用性方面的設計,在PC方數據庫中保存了每款MCU的相關信息,在用戶建立工程的時候就可以獲取這些字段信息,對目標芯片進行正確的操作。
評論