一種支持nvm軟斷點(diǎn)調(diào)試的仿真器和方法
【專利摘要】本發(fā)明介紹一種支持NVM軟斷點(diǎn)調(diào)試的仿真器和方法,涉及芯片仿真【技術(shù)領(lǐng)域】。仿真器包括仿真器調(diào)試模塊和仿真器硬件,仿真器硬件主要包括芯片功能調(diào)試模塊、CPU、芯片MMU、芯片NVM、芯片RAM、調(diào)試RAM等模塊。仿真器調(diào)試模塊將擦寫程序和斷點(diǎn)數(shù)據(jù)分別寫入調(diào)試RAM的擦寫程序RAM和斷點(diǎn)存儲RAM中,并依據(jù)斷點(diǎn)數(shù)據(jù)將芯片NVM中斷點(diǎn)地址的代碼備份到斷點(diǎn)存儲RAM,控制CPU執(zhí)行擦寫程序?qū)VM中斷點(diǎn)地址的代碼寫為斷點(diǎn)指令,實(shí)現(xiàn)斷點(diǎn)設(shè)置功能;將芯片NVM中斷點(diǎn)指令改回?cái)帱c(diǎn)存儲RAM備份的代碼,實(shí)現(xiàn)斷點(diǎn)清除功能。
【專利說明】一種支持NVM軟斷點(diǎn)調(diào)試的仿真器和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種芯片仿真器,特別涉及一種支持NVM軟斷點(diǎn)調(diào)試的仿真器和方法。
【背景技術(shù)】
[0002]斷點(diǎn)調(diào)試是智能卡芯片仿真器主要調(diào)試手段,仿真器通常都會(huì)支持硬斷點(diǎn)調(diào)試,由于CPU調(diào)試模塊硬斷點(diǎn)寄存器個(gè)數(shù)的限制,仿真器支持的硬斷點(diǎn)個(gè)數(shù)較少,例如ARM7內(nèi)核最多支持兩個(gè)硬斷點(diǎn)。
[0003]軟斷點(diǎn)則是通過在代碼中設(shè)置特征值的方式來實(shí)現(xiàn),特征值通常稱為斷點(diǎn)指令。當(dāng)需要在某地址代碼處設(shè)置軟斷點(diǎn)的時(shí)候,仿真器會(huì)先將此處代碼進(jìn)行備份保護(hù),然后將預(yù)先設(shè)定好的斷點(diǎn)指令寫入此地址,覆蓋原來的代碼數(shù)據(jù)。當(dāng)程序運(yùn)行到斷點(diǎn)指令處時(shí),便會(huì)產(chǎn)生中斷,或是程序停止運(yùn)行。當(dāng)取消斷點(diǎn)時(shí),之前受保護(hù)的代碼信息會(huì)被自動(dòng)恢復(fù)。
[0004]硬斷點(diǎn)可以設(shè)置在任何存儲器的代碼上,例如RAM和NVM(NVM包括ROM、EEPR0M、FLASH等);而軟斷點(diǎn)由于需要修改相應(yīng)地址的值,所以一般只能設(shè)在RAM上,斷點(diǎn)數(shù)量可以不受限制。由于芯片程序存儲器通常為NVM,少數(shù)的硬斷點(diǎn)很難滿足工程師進(jìn)行深入調(diào)試的需要,希望仿真器支持NVM的軟斷點(diǎn)調(diào)試。為解決NVM無法設(shè)置軟斷點(diǎn)的問題,有些仿真器實(shí)現(xiàn)了在FLASH上設(shè)置軟斷點(diǎn)的功能,實(shí)現(xiàn)原理是設(shè)置軟斷點(diǎn)對Flash進(jìn)行擦寫操作,需要仿真器能夠有Flash編程功能,并且能夠在盡可能短的時(shí)間內(nèi)完成斷點(diǎn)指令的寫入。由于對Flash進(jìn)行擦寫需要一定的時(shí)間,在執(zhí)行到Flash斷點(diǎn)的時(shí)候會(huì)感覺到停頓,用戶體驗(yàn)不好。另外由于FLASH擦寫程序及下載數(shù)據(jù)緩存在芯片RAM中,每次斷點(diǎn)操作時(shí)都需下載擦寫程序,進(jìn)行用戶RAM數(shù)據(jù)保護(hù),使得仿真器設(shè)計(jì)變得復(fù)雜。
[0005]為解決上述方案中斷點(diǎn)調(diào)試速度慢,芯片RAM數(shù)據(jù)需要保護(hù)的問題,本發(fā)明提出一種利用硬件電路支持NVM芯片軟斷點(diǎn)調(diào)試的仿真器。
[0006]本發(fā)明的仿真器在仿真器硬件的調(diào)試RAM中存放NVM擦寫程序及斷點(diǎn)數(shù)據(jù),不占用芯片RAM,因此不需要考慮用戶芯片RAM的數(shù)據(jù)保護(hù)。NVM擦寫程序只需下載一次,斷點(diǎn)的設(shè)置和清除操作主要是由硬件自動(dòng)完成,斷點(diǎn)調(diào)試速度得以明顯提升。只要增加調(diào)試RAM容量,可以實(shí)現(xiàn)更多的軟斷點(diǎn),從而大大提高開發(fā)效率。
【發(fā)明內(nèi)容】
[0007]本發(fā)明所解決的技術(shù)問題是,如何設(shè)計(jì)一種支持NVM芯片軟斷點(diǎn)調(diào)試的仿真器。
[0008]本發(fā)明的仿真器包括仿真器調(diào)試模塊和仿真器硬件兩部分:仿真器控制模塊與仿真器硬件相連,用于控制仿真器硬件運(yùn)行,實(shí)現(xiàn)對芯片功能模塊中的用戶程序調(diào)試功能。對于斷點(diǎn)功能,仿真器調(diào)試模塊實(shí)現(xiàn)生成斷點(diǎn)數(shù)據(jù),下載NVM擦寫程序、設(shè)置斷點(diǎn)、清除斷點(diǎn)的功能。仿真器硬件包括芯片功能調(diào)試模塊、CPU、功能模塊、MMU選擇模塊、芯片MMU、芯片NVM, RAM選擇模塊、芯片RAM和調(diào)試RAM。
[0009]芯片功能調(diào)試模塊,連接到仿真器調(diào)試模塊,用于接收調(diào)試命令;芯片功能調(diào)試模塊連接到MMU選擇模塊,用于選擇芯片功能調(diào)試模塊或者CPU連接芯片MMU ;芯片功能調(diào)試模塊連接到芯片MMU,實(shí)現(xiàn)調(diào)試模式下MMU權(quán)限設(shè)置;芯片功能調(diào)試模塊連接到CPU,實(shí)現(xiàn)對CPU的調(diào)試控制;芯片功能調(diào)試模塊連接到RAM選擇模塊,用于選擇芯片MMU連接的是芯片RAM還是調(diào)試RAM ;
[0010]CPU,仿真芯片使用的CPU處理器,經(jīng)過MMU選擇模塊連接到芯片MMU ;
[0011]功能模塊,與CPU相連,仿真芯片使用的各種功能模塊的功能。
[0012]MMU選擇模塊,將芯片功能調(diào)試模塊或者CPU連接到芯片MMU ;
[0013]芯片MMU,仿真芯片使用MMU保護(hù)功能,增加了 MMU選擇控制信號,當(dāng)芯片功能調(diào)試模塊連接到芯片MMU時(shí),改變芯片MMU權(quán)限控制,實(shí)現(xiàn)芯片功能調(diào)試模塊對芯片RAM和調(diào)試RAM的讀寫操作權(quán)限,對芯片NVM的讀操作權(quán)限的功能設(shè)置。
[0014]芯片NVM,仿真芯片使用的NVM存儲器;
[0015]RAM選擇模塊,將芯片MMU連接到芯片RAM或者調(diào)試RAM ;
[0016]芯片RAM,仿真芯片使用的RAM存儲器;
[0017]調(diào)試RAM,包括擦寫程序RAM和斷點(diǎn)存儲RAM,擦寫程序RAM存儲芯片NVM執(zhí)行擦寫操作的程序,CPU執(zhí)行擦寫程序RAM中的程序,實(shí)現(xiàn)對芯片NVM的擦寫操作,要寫入芯片NVM的數(shù)據(jù)暫存在擦寫程序RAM中,斷點(diǎn)存儲RAM用于存儲斷點(diǎn)數(shù)據(jù),斷點(diǎn)數(shù)據(jù)包括斷點(diǎn)總個(gè)數(shù)、斷點(diǎn)所在頁首地址、斷點(diǎn)地址、斷點(diǎn)代碼,斷點(diǎn)代碼是指芯片NVM中斷點(diǎn)地址對應(yīng)的程序代碼。
[0018]本發(fā)明的仿真器實(shí)現(xiàn)了軟斷點(diǎn)相關(guān)的三個(gè)基本操作:下載NVM擦寫程序、設(shè)置斷點(diǎn)、清除斷點(diǎn)。
[0019]下載NVM擦寫程序的方法如下:
[0020]仿真器調(diào)試模塊發(fā)送下載NVM擦寫程序命令,芯片功能調(diào)試模塊接收到命令后,設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)有效,將控制芯片功能調(diào)試模塊連接至芯片MMU,將芯片MMU連接到調(diào)試RAM,控制芯片功能調(diào)試模塊經(jīng)過MMU選擇模塊、芯片MMU、RAM選擇模塊訪問調(diào)試RAM,芯片功能調(diào)試模塊將NVM擦寫程序?qū)懭氩翆懗绦騌AM中,最后芯片功能調(diào)試模塊設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)無效,將CPU連接至芯片MMU,芯片MMU連接到芯片RAM。
[0021]下載NVM擦寫程序只在仿真器在初始化時(shí)進(jìn)行一次下載,只要仿真器沒有斷電,調(diào)試RAM中擦寫程序就一直存在,軟斷點(diǎn)操作就可以隨時(shí)調(diào)用此程序進(jìn)行NVM數(shù)據(jù)擦寫操作。
[0022]設(shè)置斷點(diǎn)的方法如下:
[0023]仿真器調(diào)試模塊發(fā)送設(shè)置斷點(diǎn)命令,并將斷點(diǎn)數(shù)據(jù)發(fā)送給芯片功能調(diào)試模塊,芯片功能調(diào)試模塊設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)有效,不經(jīng)過CPU直接訪問調(diào)試RAM,芯片功能調(diào)試模塊將斷點(diǎn)數(shù)據(jù)寫入斷點(diǎn)存儲RAM,并根據(jù)斷點(diǎn)存儲RAM中的斷點(diǎn)地址信息,將斷點(diǎn)代碼保存到斷點(diǎn)存儲RAM中,之后芯片功能調(diào)試模塊控制CPU執(zhí)行擦寫程序RAM中的NVM擦寫程序,將芯片NVM中的斷點(diǎn)代碼改寫為斷點(diǎn)指令,最后芯片功能調(diào)試模塊設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)無效,將CPU連接至芯片MMU,將芯片MMU連接到芯片RAM ;
[0024]清除斷點(diǎn)的方法如下:
[0025]仿真器調(diào)試模塊發(fā)送清除斷點(diǎn)命令,芯片功能調(diào)試模塊接收到命令后,設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)有效,不經(jīng)過CPU直接訪問調(diào)試RAM,芯片功能調(diào)試模塊控制CPU執(zhí)行擦寫程序RAM中的NVM擦寫程序,并根據(jù)斷點(diǎn)存儲RAM中的斷點(diǎn)數(shù)據(jù),將芯片NVM中斷點(diǎn)地址位置處的斷點(diǎn)指令改寫為斷點(diǎn)代碼,最后芯片功能調(diào)試模塊設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)無效,將CPU連接至芯片MMU,將芯片MMU連接到芯片 RAM。
[0026]本發(fā)明的仿真器實(shí)現(xiàn)專用的調(diào)試RAM用于存儲擦寫程序及斷點(diǎn)數(shù)據(jù),程序運(yùn)行時(shí)使用芯片RAM,程序斷點(diǎn)操作時(shí)使用調(diào)試RAM,斷點(diǎn)操作信息都保存在調(diào)試RAM中,斷點(diǎn)操作不會(huì)改變芯片RAM數(shù)據(jù),不會(huì)影響用戶程序執(zhí)行。由于斷點(diǎn)操作不占用芯片RAM,斷點(diǎn)操作期間無需實(shí)現(xiàn)對芯片RAM數(shù)據(jù)的保護(hù),并且斷點(diǎn)的設(shè)置和清除操作在芯片調(diào)試模塊控制下由硬件自動(dòng)完成,從而提升了斷點(diǎn)的操作速度。
[0027]芯片功能調(diào)試模塊實(shí)現(xiàn)了芯片MMU的訪問接口,不經(jīng)過CPU直接訪問存儲器,調(diào)試操作時(shí)提高存儲器訪問速度,相比經(jīng)過CPU訪問存儲器獲得調(diào)試數(shù)據(jù),芯片功能調(diào)試模塊直接訪問存儲器速度更快。芯片功能調(diào)試模塊不僅實(shí)現(xiàn)對芯片MMU權(quán)限管理功能,同時(shí)對訪問的存儲器進(jìn)行調(diào)試功能的權(quán)限管理,程序調(diào)試過程中無法通過CPU訪問的數(shù)據(jù),通過此通路得以顯示,或者禁止部分?jǐn)?shù)據(jù)訪問,達(dá)到對芯片代碼保護(hù)的功能。
[0028]本發(fā)明實(shí)現(xiàn)NVM數(shù)據(jù)快速改寫的功能,用于實(shí)現(xiàn)NVM中程序下載,調(diào)試過程數(shù)據(jù)修改功能,可以實(shí)現(xiàn)調(diào)試界面NVM數(shù)據(jù)的實(shí)時(shí)修改,方便用戶對NVM程序的調(diào)試。
[0029]本發(fā)明中的軟斷點(diǎn)是指能夠CPU識別的斷點(diǎn)指令,CPU執(zhí)行到斷點(diǎn)指令時(shí)自動(dòng)停止,或是產(chǎn)生中斷進(jìn)行調(diào)試數(shù)據(jù)的存儲和顯示。
[0030]本發(fā)明中的芯片NVM是指芯片使用的ROM或FLASH或EEPROM存儲器,在仿真器硬件中使用RAM增加接口電路的方式實(shí)現(xiàn)。
【專利附圖】
【附圖說明】
[0031]圖1是芯片功能模塊結(jié)構(gòu)圖。
[0032]圖2是支持軟斷點(diǎn)調(diào)試仿真器結(jié)構(gòu)圖。
[0033]圖3是擦寫程序RAM的結(jié)構(gòu)圖。
[0034]圖4是斷點(diǎn)存儲RAM的結(jié)構(gòu)圖。
[0035]圖5是下載NVM程序的流程圖。
[0036]圖6是設(shè)置軟斷點(diǎn)的流程圖。
[0037]圖7是清除軟斷點(diǎn)的流程圖。
【具體實(shí)施方式】
[0038]下面結(jié)合附圖對本發(fā)明仿真器進(jìn)行詳細(xì)說明。
[0039]1、如圖1所示,是支持MMU功能的芯片功能模塊,包括CPU 5、功能模塊6、芯片MMU8、芯片NVM 10、芯片RAM 11,用于仿真真實(shí)芯片的功能。CPU 5通過芯片MMU 8實(shí)現(xiàn)存儲器芯片NVM 10和芯片RAM 11的訪問和權(quán)限管理。
[0040]2、如圖2所示,基于支持MMU功能的芯片功能模塊,增加調(diào)試電路,實(shí)現(xiàn)了支持NVM軟斷點(diǎn)調(diào)試的仿真器。增加調(diào)試電路包括:仿真器調(diào)試模塊2、芯片功能調(diào)試模塊4、MMU選擇模塊7、RAM選擇模塊9、調(diào)試RAM 12。其中調(diào)試RAM 12由擦寫程序RAM 13和斷點(diǎn)存儲RAM14組成。圖5、圖6、圖7詳細(xì)介紹各模塊如何實(shí)現(xiàn)軟斷點(diǎn)調(diào)試功能。
[0041]3、如圖3所示,規(guī)定了擦寫程序RAM的數(shù)據(jù)結(jié)構(gòu),包括NVM擦寫程序區(qū)和擦寫數(shù)據(jù)Buffer區(qū)。NVM擦寫程序區(qū)在仿真器初始化時(shí)下載NVM擦寫程序,擦寫數(shù)據(jù)Buffer區(qū)用于芯片NVM 10數(shù)據(jù)改寫時(shí)存放的臨時(shí)數(shù)據(jù)。
[0042]4、如圖4所示,規(guī)定了斷點(diǎn)存儲RAM的數(shù)據(jù)結(jié)構(gòu),包括斷點(diǎn)總個(gè)數(shù)、頁地址標(biāo)志、斷點(diǎn)所在頁首地址、斷點(diǎn)地址及斷點(diǎn)代碼。圖中舉例的斷點(diǎn)I地址、斷點(diǎn)2地址、斷點(diǎn)a地址、斷點(diǎn)a+Ι地址、斷點(diǎn)a+2地址、斷點(diǎn)b地址統(tǒng)稱為斷點(diǎn)地址,斷點(diǎn)I代碼、斷點(diǎn)2代碼、斷點(diǎn)a代碼、斷點(diǎn)a+Ι代碼、斷點(diǎn)a+2代碼、斷點(diǎn)b代碼統(tǒng)稱為斷點(diǎn)代碼。斷點(diǎn)總個(gè)數(shù)、頁地址標(biāo)志、斷點(diǎn)所在頁首地址、所有斷點(diǎn)地址是由仿真器調(diào)試模塊2產(chǎn)生,并發(fā)送命令寫入斷點(diǎn)存儲RAM 14,斷點(diǎn)代碼是指芯片NVM 10中斷點(diǎn)地址對應(yīng)的程序代碼,是由芯片功能調(diào)試模塊4從芯片NVM 10讀出并寫入斷點(diǎn)存儲RAM 14進(jìn)行數(shù)據(jù)備份。根據(jù)斷點(diǎn)總個(gè)數(shù)確定設(shè)置操作的斷點(diǎn)數(shù)量。頁地址標(biāo)志表示后面的數(shù)據(jù)為另一頁的斷點(diǎn),前一頁的斷點(diǎn)可以進(jìn)行一次斷點(diǎn)寫入操作。斷點(diǎn)所在頁首地址確定操作NVM的頁號。數(shù)據(jù)結(jié)構(gòu)中每一頁中斷點(diǎn)個(gè)數(shù)不固定,由用戶設(shè)置斷點(diǎn)位置來確定。斷點(diǎn)存儲RAM的數(shù)據(jù)結(jié)構(gòu)保證了以較少的RAM容量可以存儲較多的斷點(diǎn)信息,從而設(shè)置更多的軟斷點(diǎn)。
[0043]5、如圖5所示,仿真器調(diào)試模塊2發(fā)送下載NVM擦寫程序命令,并將NVM擦除程序發(fā)送給芯片功能調(diào)試模塊4,芯片功能調(diào)試模塊4負(fù)責(zé)將NVM擦寫程序?qū)懭氩翆懗绦騌AM13,實(shí)現(xiàn)過程如下:
[0044]I)芯片功能調(diào)試模塊4直接訪問芯片MMU 8,選擇調(diào)試RAM 12。實(shí)現(xiàn)方法:芯片功能調(diào)試模塊4設(shè)置MMU選擇控制信號15和RAM選擇控制信號16同時(shí)有效,芯片功能調(diào)試模塊4可以直接訪問調(diào)試RAM 12中的擦寫程序RAM 13 ;
[0045]2)芯片功能調(diào)試模塊4將NVM擦除程序?qū)懭氩翆懗绦騌AM 13 ;
[0046]3)芯片功能調(diào)試模塊4判斷所有程序是否下載完成,如果下載完成執(zhí)行4),否則執(zhí)行2);
[0047]4) CPU 5直接訪問芯片MMU 8,選擇芯片RAM 11。實(shí)現(xiàn)方法:芯片功能調(diào)試模塊4設(shè)置MMU選擇控制信號15和RAM選擇控制信號16同時(shí)無效,CPU 5訪問芯片NVM 10和芯片RAM11,可以正常執(zhí)行程序。
[0048]6、如圖6所示,仿真器調(diào)試模塊2發(fā)送設(shè)置斷點(diǎn)命令,并將斷點(diǎn)列表數(shù)據(jù)(包括斷點(diǎn)總個(gè)數(shù)、斷點(diǎn)所在頁首地址、斷點(diǎn)地址)發(fā)送給芯片功能調(diào)試模塊4,斷點(diǎn)列表數(shù)據(jù)由仿真器調(diào)試模塊2根據(jù)用戶設(shè)置的斷點(diǎn)位置和數(shù)量,按斷點(diǎn)存儲RAM的數(shù)據(jù)結(jié)構(gòu)生成,數(shù)據(jù)大小在斷點(diǎn)存儲RAM 14容量范圍內(nèi)。芯片功能調(diào)試模塊4控制各個(gè)模塊完成軟斷點(diǎn)設(shè)置功能,具體流程如下:
[0049]I)芯片功能調(diào)試模塊4直接訪問芯片MMU 8,選擇調(diào)試RAM 12 ;
[0050]2)芯片功能調(diào)試模塊4將斷點(diǎn)列表數(shù)據(jù)寫入斷點(diǎn)存儲RAM 14 ;
[0051]3)芯片功能調(diào)試模塊4根據(jù)已設(shè)置的斷點(diǎn)數(shù)和斷點(diǎn)存儲RAM 14中“斷點(diǎn)總個(gè)數(shù)”,判斷是否繼續(xù)設(shè)置斷點(diǎn),如果完成所用斷點(diǎn)的設(shè)置執(zhí)行11),否則執(zhí)行4);
[0052]4)芯片功能調(diào)試模塊4根據(jù)斷點(diǎn)存儲RAM 14中“斷點(diǎn)所在頁首地址”,讀芯片NVM10中斷點(diǎn)所在頁的數(shù)據(jù)到擦寫程序RAM 13中“擦寫數(shù)據(jù)Buffer區(qū)”;
[0053]5)芯片功能調(diào)試模塊4將斷點(diǎn)存儲RAM 14中每個(gè)“斷點(diǎn)地址”對應(yīng)“斷點(diǎn)代碼”寫入斷點(diǎn)存儲RAM 14 ;
[0054]6)芯片功能調(diào)試模塊4將“擦寫數(shù)據(jù)Buffer區(qū)”對應(yīng)的“斷點(diǎn)地址”改為斷點(diǎn)指令;
[0055]7)芯片功能調(diào)試模塊4設(shè)置MMU選擇控制信號15無效,選擇CPU 5直接訪問芯片MMU 8 ;
[0056]8)芯片功能調(diào)試模塊4控制CPU 5執(zhí)行擦寫程序RAM 13中的程序,擦除芯片NVM10中斷點(diǎn)所在頁;
[0057]9)芯片功能調(diào)試模塊4控制CPU 5將“擦寫數(shù)據(jù)Buffer區(qū)”數(shù)據(jù)寫入芯片NVM 10中斷點(diǎn)所在頁;
[0058]10)芯片功能調(diào)試模塊4設(shè)置MMU選擇控制信號15有效,選擇芯片功能調(diào)試模塊4直接訪問芯片MMU 8,執(zhí)行3);
[0059]11) CPU 5直接訪問芯片MMU 8,選擇芯片RAM 11?;氐侥J(rèn)狀態(tài),使CPU 5訪問芯片NVM 10和芯片RAM 11,可以正常執(zhí)行程序。
[0060]7、如圖7所示,仿真器調(diào)試模塊2發(fā)送清除斷點(diǎn)命令,芯片功能調(diào)試模塊4收到命令后,控制各個(gè)模塊完成軟斷點(diǎn)清除功能,具體流程如下:
[0061]I)芯片功能調(diào)試模塊4直接訪問芯片MMU 8,選擇調(diào)試RAM 12 ;
[0062]2)芯片功能調(diào)試模塊4讀取斷點(diǎn)存儲RAM 14中的斷點(diǎn)數(shù)據(jù);
[0063]3)芯片功能調(diào)試模塊4根據(jù)已清除的斷點(diǎn)數(shù)和斷點(diǎn)存儲RAM 14中“斷點(diǎn)總個(gè)數(shù)”,判斷是否繼續(xù)清除斷點(diǎn),如果清除了所有斷點(diǎn)執(zhí)行10),否則執(zhí)行4);
[0064]4)芯片功能調(diào)試模塊4根據(jù)斷點(diǎn)存儲RAM 14中“斷點(diǎn)所在頁首地址”,讀芯片NVM10中斷點(diǎn)所在頁的數(shù)據(jù)到擦寫程序RAM 13中“擦寫數(shù)據(jù)Buffer區(qū)”;
[0065]5)芯片功能調(diào)試模塊4將斷點(diǎn)存儲RAM 14中每個(gè)“斷點(diǎn)地址”對應(yīng)“斷點(diǎn)代碼”寫入“擦寫數(shù)據(jù)Buffer區(qū)”;
[0066]6)芯片功能調(diào)試模塊4設(shè)置MMU選擇控制信號15無效,選擇CPU 5直接訪問芯片MMU 8 ;
[0067]7)芯片功能調(diào)試模塊4控制CPU 5擦除芯片NVM 10中斷點(diǎn)所在頁;
[0068]8)芯片功能調(diào)試模塊4控制CPU 5將“擦寫數(shù)據(jù)Buffer區(qū)”數(shù)據(jù)寫入芯片NVM 10中斷點(diǎn)所在頁;
[0069]9)芯片功能調(diào)試模塊4設(shè)置MMU選擇控制信號15有效,選擇芯片功能調(diào)試模塊4直接訪問芯片MMU 8,執(zhí)行3);
[0070]10) CPU 5直接訪問芯片MMU 8,選擇芯片RAM 11。CPU 5訪問芯片NVM 10和芯片RAM 11,可以正常執(zhí)行程序。
【權(quán)利要求】
1.一種支持NVM軟斷點(diǎn)調(diào)試的仿真器,其特征在于程序運(yùn)行時(shí)使用芯片RAM,程序斷點(diǎn)操作時(shí)使用調(diào)試RAM,斷點(diǎn)操作信息全部保存在調(diào)試RAM中,斷點(diǎn)操作不會(huì)改變芯片RAM數(shù)據(jù),不會(huì)影響用戶程序執(zhí)行;仿真器包括仿真器調(diào)試模塊和仿真器模塊,其中: 仿真器調(diào)試模塊,與仿真器硬件相連,實(shí)現(xiàn)對芯片功能模塊中程序的調(diào)試功能,對于斷點(diǎn)功能,實(shí)現(xiàn)生成斷點(diǎn)數(shù)據(jù),下載NVM擦寫程序、設(shè)置斷點(diǎn)、清除斷點(diǎn)的功能; 仿真器模塊,包括芯片功能調(diào)試模塊、CPU、功能模塊、MMU選擇模塊、芯片MMU、芯片NVM, RAM選擇模塊、芯片RAM和調(diào)試RAM ; 芯片功能調(diào)試模塊,連接到仿真器調(diào)試模塊,用于接收調(diào)試命令;芯片功能調(diào)試模塊連接到MMU選擇模塊,用于選擇芯片功能調(diào)試模塊或者CPU連接芯片MMU ;芯片功能調(diào)試模塊連接到芯片MMU,實(shí)現(xiàn)調(diào)試模式下MMU權(quán)限設(shè)置;芯片功能調(diào)試模塊連接到CPU,實(shí)現(xiàn)對CPU的調(diào)試控制;芯片功能調(diào)試模塊連接到RAM選擇模塊,用于選擇芯片MMU連接的是芯片RAM還是調(diào)試RAM ; CPU,仿真芯片使用的CPU處理器,經(jīng)過MMU選擇模塊連接到芯片MMU ; 功能模塊,與CPU相連,仿真芯片使用的各種功能模塊的功能; MMU選擇模塊,將芯片功能調(diào)試模塊或者CPU連接到芯片MMU ; 芯片MMU,仿真芯片使用MMU保護(hù)功能,增加了 MMU選擇控制信號,當(dāng)芯片功能調(diào)試模塊連接到芯片MMU時(shí),改變芯片MMU權(quán)限控制,實(shí)現(xiàn)芯片功能調(diào)試模塊對芯片RAM和調(diào)試RAM的讀寫操作權(quán)限,對芯片NVM的讀操作權(quán)限的功能設(shè)置; 芯片NVM,仿真芯片使用的NVM存儲器; RAM選擇模塊,將芯片MMU連接到芯片RAM或者調(diào)試RAM ; 芯片RAM,仿真芯片使用的RAM存儲器; 調(diào)試RAM,包括擦寫程序RAM和斷點(diǎn)存儲RAM,擦寫程序RAM存儲芯片NVM執(zhí)行擦寫操作的程序,CPU執(zhí)行擦寫程序RAM中的程序,實(shí)現(xiàn)對芯片NVM的擦寫操作。
2.一種支持NVM軟斷點(diǎn)調(diào)試的方法,應(yīng)用于如權(quán)利要求1所述的仿真器中,其特征在于步驟如下: 1)仿真器調(diào)試模塊發(fā)送下載NVM擦寫程序命令,芯片功能調(diào)試模塊接收到命令后,設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)有效,控制芯片功能調(diào)試模塊經(jīng)過MMU選擇模塊、芯片MMU、RAM選擇模塊訪問調(diào)試RAM,芯片功能調(diào)試模塊將NVM擦寫程序?qū)懭氩翆懗绦騌AM中,最后芯片功能調(diào)試模塊設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)無效,將CPU連接至芯片MMU,芯片MMU連接到芯片RAM ; 2)仿真器調(diào)試模塊發(fā)送設(shè)置斷點(diǎn)命令,并將斷點(diǎn)數(shù)據(jù)發(fā)送給芯片功能調(diào)試模塊,芯片功能調(diào)試模塊設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)有效,不經(jīng)過CPU直接訪問調(diào)試RAM,芯片功能調(diào)試模塊將斷點(diǎn)數(shù)據(jù)寫入斷點(diǎn)存儲RAM,并根據(jù)斷點(diǎn)存儲RAM中的斷點(diǎn)地址信息,將斷點(diǎn)代碼保存到斷點(diǎn)存儲RAM中,之后芯片功能調(diào)試模塊控制CPU執(zhí)行擦寫程序RAM中的NVM擦寫程序,將芯片NVM中的斷點(diǎn)代碼改寫為斷點(diǎn)指令,最后芯片功能調(diào)試模塊設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)無效,將CPU連接至芯片MMU,將芯片MMU連接到芯片RAM ; 3)仿真器調(diào)試模塊發(fā)送清除斷點(diǎn)命令,芯片功能調(diào)試模塊接收到命令后,設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)有效,不經(jīng)過CPU直接訪問調(diào)試RAM,芯片功能調(diào)試模塊控制CPU執(zhí)行擦寫程序RAM中的NVM擦寫程序,并根據(jù)斷點(diǎn)存儲RAM中的斷點(diǎn)數(shù)據(jù),將芯片NVM中斷點(diǎn)地址位置處的斷點(diǎn)指令改寫為斷點(diǎn)代碼,最后芯片功能調(diào)試模塊設(shè)置MMU選擇控制信號和RAM選擇控制信號同時(shí)無效,將CPU連接至芯片MMU,將芯片MMU連接到芯片RAM0
3.根據(jù)權(quán)利要求2所述的方法,其特征在于斷點(diǎn)操作不占用芯片RAM,斷點(diǎn)操作期間無需實(shí)現(xiàn)對芯片RAM數(shù)據(jù)的保護(hù),并且斷點(diǎn)的設(shè)置和清除操作在芯片調(diào)試模塊控制下由硬件自動(dòng)完成,提升了斷點(diǎn)的操作速度。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于芯片功能調(diào)試模塊實(shí)現(xiàn)了芯片MMU的訪問接口,不經(jīng)過CPU直接訪問存儲器,提高存儲器調(diào)試操作的訪問速度,不僅實(shí)現(xiàn)了芯片MMU的存儲器權(quán)限管理功能,還對訪問的存儲器進(jìn)行調(diào)試功能的權(quán)限管理,實(shí)現(xiàn)對芯片代碼保護(hù)、調(diào)試數(shù)據(jù)顯示的功能。
【文檔編號】G06F11/36GK104461859SQ201410427112
【公開日】2015年3月25日 申請日期:2014年8月27日 優(yōu)先權(quán)日:2014年8月27日
【發(fā)明者】張洪波, 趙滿懷, 陳 峰 申請人:北京中電華大電子設(shè)計(jì)有限責(zé)任公司