本發(fā)明涉及一種微控制器芯片,具體是一種實(shí)現(xiàn)微控制器芯片的用戶debug模式的方法。
背景技術(shù):
對(duì)于芯片設(shè)計(jì)來(lái)說(shuō),在設(shè)計(jì)目標(biāo)上往往存在沖突,即它們的功能要足夠全面,同時(shí)要求芯片面積盡量小。芯片用戶開(kāi)發(fā)應(yīng)用程序時(shí),支持用戶debug模式的微控制器芯片能夠帶來(lái)非常大的便利。微控制器芯片的用戶debug模式是相對(duì)于芯片正常工作模式之處的一種額外的模式,需要增加額外的邏輯資源才能實(shí)現(xiàn),所以會(huì)使微控制器芯片的面積增大,從而使生產(chǎn)成本上升。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種實(shí)現(xiàn)微控制器芯片的用戶debug模式的方法,以解決上述背景技術(shù)中提出的問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方法:
一種實(shí)現(xiàn)微控制器芯片的用戶debug模式的方法,微控制器芯片內(nèi)部包括芯片代碼選項(xiàng)模塊option、程序存儲(chǔ)器pmem、數(shù)據(jù)存儲(chǔ)器dmem、外設(shè)模塊per、用戶debug模式控制模塊dbg_ctrl、微控制器內(nèi)核core,外設(shè)模塊per是包含mcu所有外設(shè)的集合,spi模塊是包含于外設(shè)集合中的一個(gè)子模塊,微控制器芯片通過(guò)spi模塊與芯片外部進(jìn)行串行通信,spi模塊內(nèi)部包括串行接收控制邏輯以及串行發(fā)送控制邏輯,串行接收控制邏輯負(fù)責(zé)完成串行通信調(diào)試的接收過(guò)程,串行發(fā)送控制邏輯負(fù)責(zé)完成串行通信調(diào)試的發(fā)送過(guò)程,使用微控制器芯片的用戶debug模式時(shí),復(fù)用spi通信的3個(gè)單向通信端口,spi模塊通過(guò)miso輸出端口將芯片的數(shù)據(jù)輸出至芯片外部的上位機(jī),spi模塊通過(guò)mosi輸入端口接收芯片外部的上位機(jī)輸入的信息。
作為本發(fā)明進(jìn)一步的方法:芯片代碼選項(xiàng)模塊option負(fù)責(zé)整個(gè)微控制器芯片中全局性的配置。
作為本發(fā)明進(jìn)一步的方法:能夠通過(guò)芯片的代碼選項(xiàng)中的用戶debug模式使能信號(hào)dbg_en使能或者關(guān)閉芯片的用戶debug模式。
作為本發(fā)明進(jìn)一步的方法:當(dāng)debug模式使能信號(hào)dbg_en被配置為高電平狀態(tài)時(shí),spi模塊才被復(fù)用來(lái)實(shí)現(xiàn)用戶debug模式。
作為本發(fā)明再進(jìn)一步的方法:芯片外部的上位機(jī)與spi模塊進(jìn)行串行通信,spi模塊將mosi信號(hào)端口上的串行通信數(shù)據(jù)進(jìn)行并行化處理,然后通過(guò)并行通信總線pc_bus與用戶debug模式控制模塊dbg_ctrl進(jìn)行數(shù)據(jù)交互。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明通過(guò)復(fù)用微控制器芯片中的spi模塊的邏輯資源和通信端口,而不需要增加過(guò)多額外的邏輯資源、額外的通信接口以及通信端口即可以實(shí)現(xiàn)微控制器芯片的用戶調(diào)試功能,節(jié)省了用于實(shí)現(xiàn)用戶debug模式的大部分邏輯資源,降低微控制器芯片的生產(chǎn)成本。
附圖說(shuō)明
圖1為復(fù)用spi模塊實(shí)現(xiàn)微控制器芯片的用戶debug模式的原理框圖。
圖2為用戶debug模式控制模塊的原理框圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方法進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明復(fù)用spi模塊實(shí)現(xiàn)微控制器芯片的用戶debug模式的方法原理如圖1所示。微控制器芯片內(nèi)部包括芯片代碼選項(xiàng)模塊option、程序存儲(chǔ)器pmem、數(shù)據(jù)存儲(chǔ)器dmem、外設(shè)模塊per、用戶debug模式控制模塊dbg_ctrl、微控制器內(nèi)核core。外設(shè)模塊per是包含mcu所有外設(shè)的集合。spi模塊是包含于外設(shè)集合中的一個(gè)子模塊,本方法通過(guò)復(fù)用spi模塊可以實(shí)現(xiàn)微控制器芯片的用戶debug模式。
在本方法中,微控制器芯片通過(guò)spi模塊與芯片外部進(jìn)行串行通信。spi模塊內(nèi)部包括串行接收控制邏輯以及串行發(fā)送控制邏輯。串行接收控制邏輯負(fù)責(zé)完成串行通信調(diào)試的接收過(guò)程。串行發(fā)送控制邏輯負(fù)責(zé)完成串行通信調(diào)試的發(fā)送過(guò)程。使用微控制器芯片的用戶debug模式時(shí),需要復(fù)用spi通信的3個(gè)單向通信端口。spi模塊通過(guò)miso輸出端口將芯片的數(shù)據(jù)輸出至芯片外部的上位機(jī)。spi模塊通過(guò)mosi輸入端口接收芯片外部的上位機(jī)輸入的信息。sclk為spi通信提供同步的時(shí)鐘。
芯片代碼選項(xiàng)模塊option負(fù)責(zé)整個(gè)微控制器芯片中全局性的配置,在本方法中,可以通過(guò)芯片的代碼選項(xiàng)中的用戶debug模式使能信號(hào)dbg_en使能或者關(guān)閉芯片的用戶debug模式。只有當(dāng)debug模式使能信號(hào)dbg_en被配置為高電平狀態(tài)時(shí),spi模塊才被復(fù)用來(lái)實(shí)現(xiàn)用戶debug模式。芯片外部的上位機(jī)與spi模塊進(jìn)行串行通信,spi模塊將mosi信號(hào)端口上的串行通信數(shù)據(jù)進(jìn)行并行化處理,然后通過(guò)并行通信總線pc_bus與用戶debug模式控制模塊dbg_ctrl進(jìn)行數(shù)據(jù)交互。用戶debug模式控制模塊的原理如圖2所示。在用戶debug模式控制模塊中,通過(guò)比較器c1,將spi模塊輸送過(guò)來(lái)的并行通信總線pc_bus與用戶debug模式入口校對(duì)碼deg_entry進(jìn)入比較,當(dāng)兩者相同時(shí),將觸發(fā)用戶debug模式寄存器dbg_mode置位,微控制器芯片進(jìn)入用戶debug模式。
在微控制器芯片進(jìn)入用戶debug模式后,上位機(jī)將調(diào)試指令單步、斷點(diǎn)、全速等通過(guò)串行通信將數(shù)據(jù)輸送至芯片內(nèi)部,spi模塊將串行通信數(shù)據(jù)進(jìn)行并行化處理,然后通過(guò)并行通信總線pc_bus輸入至用戶debug模式控制模塊dbg_ctrl。用戶debug模式控制模塊dbg_ctrl內(nèi)部的用戶debug模式接口控制邏輯dbg_intf對(duì)并行通信總線pc_bus送過(guò)來(lái)的數(shù)據(jù)進(jìn)行譯碼,然后通過(guò)調(diào)試指令信號(hào)發(fā)送至微控制器內(nèi)核core。微控制器內(nèi)核根據(jù)調(diào)試指令信號(hào)做出相應(yīng)的操作。在用戶debug模式中,芯片外部的上位機(jī)也可以通過(guò)串行通信讀取到微控制器芯片運(yùn)行的實(shí)時(shí)狀態(tài)。這些實(shí)時(shí)狀態(tài)包括堆棧、程序指針、累加器、狀態(tài)寄存器等信息。當(dāng)微控制器芯片正常工作時(shí),微控制器內(nèi)核通過(guò)特殊功能總線sfr_bus對(duì)外設(shè)模塊中的特殊功能寄存器進(jìn)行讀寫(xiě)操作。當(dāng)微控制器芯片處于用戶debug模式,上位機(jī)需要獲取芯片內(nèi)特殊功能寄存器的值時(shí),用戶debug模式接口控制邏輯dbg_intf通過(guò)調(diào)試指令信號(hào)通知微控制器內(nèi)核,然后微控制器內(nèi)核逐一將所有特殊功耗寄存器的值通過(guò)狀態(tài)反饋信號(hào)傳送至用戶debug模式接口控制邏輯dbg_intf,用戶debug模式接口控制邏輯dbg_intf再將反饋的數(shù)據(jù)輸送至spi模塊。最后,spi模塊通過(guò)其內(nèi)部的串行發(fā)送控制邏輯與芯片外部的上位機(jī)進(jìn)行串行通信,將反饋的數(shù)據(jù)輸送至上位機(jī)。微控制器芯片處于用戶debug模式中時(shí),上位機(jī)也獲取數(shù)據(jù)存儲(chǔ)器dmem中的存儲(chǔ)值。
為了方便用戶使用微控制器芯片對(duì)應(yīng)用程序進(jìn)行調(diào)試,上位機(jī)可以通過(guò)串行通信將操作請(qǐng)求發(fā)送至用戶debug模式控制模塊dbg_ctrl,用戶debug模式接口控制邏輯dbg_intf通過(guò)程序存儲(chǔ)器直接存取總線dma_pmem將程序指令碼寫(xiě)入程序存儲(chǔ)器中。
當(dāng)用戶完成調(diào)試后,需要退出用戶debug模式時(shí),上位機(jī)將通過(guò)串行信號(hào)將退出用戶debug模式請(qǐng)求發(fā)送至spi模塊。spi模塊將接收到的串行數(shù)據(jù)并行化,然后輸入至用戶debug模式控制模塊中,通過(guò)比較器c2,將spi模塊輸送過(guò)來(lái)的并行通信總線pc_bus與用戶debug模式出口校對(duì)碼exit_code進(jìn)入比較,當(dāng)兩者相同時(shí),將觸發(fā)用戶debug模式寄存器dbg_mode清零,微控制器芯片退出用戶debug模式。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本發(fā)明。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化囊括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。
此外,應(yīng)當(dāng)理解,雖然本說(shuō)明書(shū)按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方法,說(shuō)明書(shū)的這種敘述方式僅僅是為清楚起見(jiàn),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說(shuō)明書(shū)作為一個(gè)整體,各實(shí)施例中的技術(shù)方法也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。