欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

電路板固件命令行調(diào)試(測試)工具的制作方法

文檔序號:6435329閱讀:189來源:國知局
專利名稱:電路板固件命令行調(diào)試(測試)工具的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于對電路板固件的調(diào)試,跟蹤以及測試。并且,電路板及其固件正式發(fā)布以后,通過本發(fā)明的實施例,仍然可使電路板固件程序從任意指定的起始地址開始執(zhí)行。例如,通過本發(fā)明,可直接指定固件源代碼(C/C++)的函數(shù)或者全局變量作為命令執(zhí)行。
背景技術(shù)
通常,電路板固件工程師在固件研發(fā)過程中,最常用的調(diào)試工具就是調(diào)試仿真器 (ICE)。盡管調(diào)試仿真器(ICE)的調(diào)試功能強大,但是,它存在以下局限固件的目標(biāo)程序在編譯時,必須編譯鏈接debug信息固件必須通過調(diào)試仿真器(ICE)連接啟動。調(diào)試仿真器(ICE)設(shè)備以及配套的調(diào)試軟件價格昂貴。正是因為以上局限,再加上,研發(fā)人員在做固件研發(fā)時,通常并不是每次都需要進行單步調(diào)試,而更多的是做單元測試,即,編碼過程中,使剛剛完成的子函數(shù)或者子程序在一個足夠簡單的環(huán)境里運行,以檢查執(zhí)行結(jié)果與研發(fā)人員的預(yù)期是否一致。本發(fā)明所提供的方案就是在電路板固件中,能夠提供這樣一個簡單的環(huán)境,并且使這個簡單的運行環(huán)境實現(xiàn)成一個通用的環(huán)境操作人員可以通過“上位機命令行”程序執(zhí)行任意的固件函數(shù)、子程序、或者全局變量以檢測其實現(xiàn)的結(jié)果。電路板固件完成最終發(fā)布以后,仍然可通過本發(fā)明所提供的方案,以及固件內(nèi)部本身提供的各種應(yīng)用程序接口,查看固件內(nèi)部各進程,線程,內(nèi)存,設(shè)備,等信息。雖然美國風(fēng)河公司(WindRiver)的Tornado產(chǎn)品也具備上述功能特征,但是 Tornado產(chǎn)品僅能用于風(fēng)河公司(WindRiver)自己的嵌入式操作系統(tǒng)VxWorks。對于本發(fā)明,發(fā)明人所公開的技術(shù)方案是將該功能特征應(yīng)用于所有的嵌入式操作系統(tǒng),包括Linux、ThreadX、等,當(dāng)然也包括風(fēng)河公司(WindRiver)的VxWorks。

發(fā)明內(nèi)容
本發(fā)明的目的在于,實現(xiàn)一種方法,使電路板固件(或者軟件)研發(fā)人員,測試人員,或者電路板產(chǎn)品的最終用戶能夠通過所輸入的命令,實現(xiàn)固件(或者軟件)從指定的代碼地址(通常為C/C++函數(shù)指針)開始執(zhí)行,然后通過輸出的調(diào)試日志信息了解當(dāng)前電路板硬件,固件,進程,內(nèi)存,堆棧等信息狀態(tài)。例如,假設(shè)某一款手機電路板系統(tǒng)中使用了本發(fā)明的實施例,那么手機使用者則可以通過本發(fā)明實施例的“上位機命令行,,程序通過USB 或者WIFI通信接口與之連接,查詢手機當(dāng)前進程的運行狀況,內(nèi)存使用情況,等等。為了實現(xiàn)這種目的,本發(fā)明在目標(biāo)電路板固件中增加一個模塊,在此,發(fā)明人將該模塊命名為“電路板調(diào)試模塊”。同時,安排“上位機命令行”程序與“電路板調(diào)試模塊”通過USB,網(wǎng)絡(luò)等通信接口連接。“上位機命令行”程序為應(yīng)用程序,通常運行在PC機上,或者筆記本電腦上,或者其他電腦設(shè)備上,比如平板電腦?!吧衔粰C命令行”程序通過通信接口接收目標(biāo)電路板產(chǎn)生的調(diào)試日志信息,并輸出到顯示屏上。“上位機命令行”程序負(fù)責(zé)將操作人員所輸入的命令傳送至目標(biāo)電路板的“電路板調(diào)試模塊”。如果對“上位機命令行”程序指定目標(biāo)電路板的 “固件代碼標(biāo)識映射表”數(shù)據(jù),操作人員可將固件源代碼(C/C++)中任意函數(shù)名或者全局變量名作為輸入命令,“電路板調(diào)試模塊”將執(zhí)行該函數(shù)或者輸出全局變量的數(shù)值,函數(shù)的執(zhí)行結(jié)果和所輸出的數(shù)值均以調(diào)試日志信息回傳至“上位機命令行”程序。本發(fā)明的這種方案可以很容易的幫助電路板固件研發(fā)工程師或者測試人員實現(xiàn)調(diào)試或者測試功能的擴展。比如,可以增加定義以下函數(shù)實現(xiàn)相應(yīng)功能擴展定義一個函數(shù)列出系統(tǒng)當(dāng)前所有的內(nèi)存總大小,已使用的大小,空閑的大小,空閑最大塊的大小,內(nèi)存使用的峰值等等。定義一個函數(shù)列出系統(tǒng)當(dāng)前所有駐留內(nèi)存的進程,包括進程名,進程標(biāo)識(Task Identification),進程入口地址,進程優(yōu)先級,進程狀態(tài),CPU時間占用比例等等。定義一個函數(shù)將進程標(biāo)識(Task Identification)或者進程句柄作為參數(shù),列出該進程執(zhí)行的堆棧信息。即從進程當(dāng)前正在執(zhí)行的函數(shù),到該進程的入口函數(shù),列出所有函數(shù)調(diào)用層次關(guān)系。對于固件研發(fā)工程師來講,這是一個非常有用的函數(shù)命令,因為當(dāng)固件有異常發(fā)生,只要系統(tǒng)還沒有徹底崩潰,就可以通過該命令準(zhǔn)確的定位到異常所發(fā)生的代碼行。定義一個函數(shù)并且定義函數(shù)參數(shù)為數(shù)據(jù)地址,數(shù)據(jù)長度,文件名。通過該函數(shù)命令,將目標(biāo)電路板系統(tǒng)指定地址的數(shù)據(jù)以及長度下載到上位機,以指定的文件名保存。定義一個函數(shù)并且定義函數(shù)參數(shù)為數(shù)據(jù)地址,數(shù)據(jù)長度,文件名。通過該函數(shù)命令,將保存于上位機的、指定文件名的數(shù)據(jù)文件上傳到目標(biāo)電路板,保存至指定地址和長度的內(nèi)存中。根據(jù)這個命令函數(shù)的功能,固件工程師很容易做進一步擴展,實現(xiàn)對電路板固件的更新。以上所定義的函數(shù),當(dāng)作為命令執(zhí)行時,需要本發(fā)明內(nèi)容之一——“電路板調(diào)試模塊”的支持。在“電路板調(diào)試模塊”中,調(diào)試日志信息管理子模塊保存最新的日志信息,如果保存日志信息的緩沖區(qū)已滿,但是系統(tǒng)又產(chǎn)生了新的日志信息,那么最新的日志信息就將最舊的日志信息覆蓋掉,并將日志信息的起始位置以及結(jié)束位置移動一定長度的字節(jié)數(shù),該字節(jié)長度也就是被覆蓋掉最舊的日志信息的字節(jié)數(shù)。在“電路板調(diào)試模塊”中,命令注冊子模塊管理所有注冊的保留命令。命令注冊的核心目的是將命令關(guān)鍵詞與命令所執(zhí)行的函數(shù)或者子程序之間建立起對應(yīng)關(guān)系,當(dāng)收到一個命令關(guān)鍵詞,通過命令注冊列表,找到命令執(zhí)行地址,然后指定命令參數(shù),從命令執(zhí)行地址開始執(zhí)行。為了實現(xiàn)操作人員能夠輸入任意的固件源代碼函數(shù)或者全局變量作為命令, 本發(fā)明所注冊的命令須包含權(quán)利要求4,權(quán)利要求5,權(quán)利要求6所描述命令。


在附圖中,所描述的是“電路板調(diào)試模塊”和“上位機命令行”程序之間的關(guān)系,“電路板調(diào)試模塊”內(nèi)部各個子模塊的構(gòu)成,“上位機命令行”程序各個子模塊和用戶界面的構(gòu)成。101 目標(biāo)“電路板調(diào)試模塊”,該模塊置于目標(biāo)電路板固件中。目標(biāo)電路板固件上電啟動后,執(zhí)行該模塊的初始化接口,完成對102、103、104、105各個子模塊的初始化。102 調(diào)試命令注冊管理子模塊。管理命令注冊列表,實現(xiàn)對命令關(guān)鍵詞的注冊和反注冊,使子模塊104能夠根據(jù)命令關(guān)鍵詞查詢到對應(yīng)的命令執(zhí)行的函數(shù)指針地址。103 命令接收與調(diào)試信息傳送子模塊。該子模塊初始化以后,等待107的主動連接。連接成功以后,讀取106通信接口的命令行字符串,通過104子模塊解析命令字符串; 該子模塊將子模塊105所管理的調(diào)試信息輸入傳送至107。104 調(diào)試命令解析子模塊。該子模塊解析子模塊103接收到的命令行字符串,確定命令關(guān)鍵詞,依據(jù)子模塊102的命令注冊列表,根據(jù)命令關(guān)鍵詞確定命令執(zhí)行函數(shù)指針地址。105 調(diào)試信息管理子模塊。該子模塊提供調(diào)試日志信息打印輸出接口程序(如 printf (···))。并將該接口輸入的調(diào)試日志信息字符串寫入日志信息存儲到緩沖區(qū),當(dāng)緩沖區(qū)滿,緩沖區(qū)中最老的日志信息將會被覆蓋。當(dāng)子模塊103與107成功連接,緩沖區(qū)數(shù)據(jù)將會由老至新地被傳輸?shù)?07,同時,已傳輸至107的日志信息將會從循環(huán)緩沖區(qū)里清除,以便最新的日志信息被保存到循環(huán)緩沖區(qū)。106:調(diào)試通信接口。如網(wǎng)絡(luò)接口,RS232串口,USB 口。107 “上位機命令行”程序。一個應(yīng)用程序,通常運行在PC機上,或者筆記本電腦上,或者其他電腦設(shè)備上,比如平板電腦。該程序通過接口 106接收目標(biāo)電路板產(chǎn)生的調(diào)試日志信息,并輸出到顯示屏上。操作人員通過該程序?qū)⑺斎氲拿顐魉椭聊繕?biāo)電路板的 103。108 調(diào)試信息接收子模塊。當(dāng)107與101通過接口 106連接成功以后,子模塊103 將調(diào)試日志信息傳輸至該子模塊,并輸出到顯示屏上。109 調(diào)試命令傳送子模塊。該子模塊讀取操作人員所所輸入命令行字符串,判斷 107是否被指定“固件代碼標(biāo)識映射表”數(shù)據(jù),如果有,則通過子模塊110解析,并將解析后產(chǎn)生新的命令行字符串通過接口 106傳輸至子模塊103 ;如果沒有,則直接將操作人員輸入的命令行字符串傳送至子模塊103。110 “固件代碼標(biāo)識映射表”分析子模塊。該子模塊通過解析子模塊109的命令行字符串,確定命令關(guān)鍵詞,然后依據(jù)命令關(guān)鍵詞結(jié)合“固件代碼標(biāo)識映射表”,確定命令對象是執(zhí)行一個函數(shù),還是讀取固件代碼全局變量,或者修改固件代碼全局變量,然后組成新的標(biāo)準(zhǔn)的命令行字符串返回給子模塊109。111 界面輸入與目標(biāo)電路板101連接/斷開的操作。操作人員可通過控制該操作實現(xiàn)與目標(biāo)電路板101連接/斷開的操作。112 界面輸入指定“固件代碼標(biāo)識映射表” 文件的操作。操作人員可通過控制該操作實現(xiàn)指定目標(biāo)電路板固件所對應(yīng)的“固件代碼標(biāo)識映射表”文件。113 界面輸入/輸出命令行輸入,調(diào)試日志信息輸出。操作人員可以此輸入命令行字符串,查看從目標(biāo)電路板接收到的調(diào)試日志信息。
具體實施例方式如圖1所示,本發(fā)明的實現(xiàn)方案由兩部分組成,分別為置于電路板固件的“電路板調(diào)試模塊” 一101,置于上位機的“上位機命令行程序” 一107。101和107之間通過通信接口 106連接。本發(fā)明的具體實施方法為目標(biāo)電路板上電以后,固件(通常為嵌入式操作系統(tǒng)) 啟動運行,“電路板調(diào)試模塊” 101開始初始化,并分別初始化102、103、104、105各個子模塊。子模塊102的初始化首先準(zhǔn)備命令注冊列表的內(nèi)存空間,然后利用命令注冊應(yīng)用程序接口完成以下命令的注冊(以下命令為構(gòu)建本發(fā)明的基本命令)地址執(zhí)行命令,“call addr,parl,par2,…”:其中,“call”為命令關(guān)鍵詞,“addr”、 “parl”、“par2”,等均為命令“call”的參數(shù),該命令的目的是執(zhí)行函數(shù)地址“addr”,并且執(zhí)行該地址函數(shù)的參數(shù)為“parl”、“par2”。該命令實現(xiàn)的參數(shù)個數(shù)是可變的,但必須包含參數(shù) “addr”。內(nèi)存數(shù)據(jù)讀取命令,“d addr, width, count” 其中,“d”為命令關(guān)鍵詞,“addr”、 “width”、“COimt”均為命令參數(shù)。該命令的執(zhí)行目的是查看地址為“addr”的內(nèi)存數(shù)據(jù),數(shù)據(jù)寬度為“width”,單位為字節(jié)數(shù),1字節(jié),2字節(jié),4字節(jié)等,數(shù)據(jù)個數(shù)為“count”。該命令將讀取的內(nèi)存數(shù)據(jù)以調(diào)試日志信息輸出至上位機程序107。內(nèi)存數(shù)據(jù)寫入命令,“m addr, width, value” 其中,“m”為命令關(guān)鍵詞,“addr”、 “width”、“Value”均為命令參數(shù)。該命令的執(zhí)行目的是將數(shù)據(jù)“value”寫到地址為“addr” 的內(nèi)存,數(shù)據(jù)寬度為“width”,單位為字節(jié)數(shù),1字節(jié),2字節(jié),4字節(jié)等。該命令將寫入內(nèi)存地址的數(shù)據(jù)結(jié)果以調(diào)試日志信息輸出至上位機程序107。在本發(fā)明實施例中,子模塊102還需完成如下應(yīng)用程序接口 注冊調(diào)試命令接口 ;刪除已注冊命令接口 ;輸出所有已注冊命令接口信息;輸出指定的命令的調(diào)用方式信息;子模塊103的初始化創(chuàng)建服務(wù)進程,并等待“上位機命令行”程序107通過通信接口 106的連接,連接成功以后,讀取子模塊105的調(diào)試日志信息數(shù)據(jù),通過接口 106傳送至 107。同時接收從107傳送來的命令字符串,調(diào)用子模塊104定義的命令行字符串解析應(yīng)用接口,確定命令關(guān)鍵詞所對應(yīng)的命令執(zhí)行函數(shù)指針,并從該函數(shù)指針開始執(zhí)行,執(zhí)行結(jié)果以調(diào)試日志信息暫存至子模塊105。子模塊104,所定義的應(yīng)用程序接口對子模塊103接收到的命令行字符串進行解析,執(zhí)行功能如下確定命令行字符串的關(guān)鍵詞,結(jié)合子模塊102的注冊命令列表,根據(jù)命令關(guān)鍵詞找到命令執(zhí)行函數(shù)指針。確定命令行字符串的參數(shù)列表,將字符串形式的參數(shù)轉(zhuǎn)譯成相應(yīng)的十進制整數(shù)、 八進制整數(shù)、十六進制整數(shù)、浮點數(shù)、或者字符串文本。子模塊105初始化完成調(diào)試日志信息循環(huán)緩沖區(qū)內(nèi)存管理確定循環(huán)緩沖區(qū)內(nèi)存起始地址以及長度,循環(huán)緩沖區(qū)內(nèi)存起始地址偏移其長度即為結(jié)束地址;日志信息的起始地址,長度,結(jié)束地址日志信息的起始地址等于其結(jié)束地址,并且長度為0。子模塊105定義了調(diào)試日志信息輸出應(yīng)用接口(printf (const char^szFmt, ···))。固件系統(tǒng)中各個應(yīng)用程序通過調(diào)用日志信息輸出應(yīng)用接口輸出調(diào)試日志信息。該應(yīng)用接口將調(diào)試日志信息字符串保存至日志信息循環(huán)緩沖區(qū)內(nèi)存。在子模塊5中,對于調(diào)試日志信息循環(huán)緩沖區(qū)的管理,采用如下策略在調(diào)試日志信息循環(huán)緩沖區(qū)的內(nèi)存區(qū)域內(nèi),定義保存調(diào)試日志信息的起始地址、 結(jié)束地址、以及調(diào)試日志信息長度(下文將分別簡稱為起始地址、結(jié)束地址、信息長度)。當(dāng)調(diào)試日志信息輸出函數(shù)將日志信息字符串保存至循環(huán)緩沖區(qū)時,將從起始地址寫入字符串,并且累加信息長度。結(jié)束地址為以起始地址為基礎(chǔ),偏移信息長度,如果偏移之后的地址超出了循環(huán)緩沖區(qū)內(nèi)存范圍時,結(jié)束地址即從緩沖區(qū)起始地址偏移超出范圍的值。如果結(jié)束地址達到起始地址時(也就是整個緩沖區(qū)內(nèi)存都被調(diào)試日志信息填滿),則起始地址自動移動到結(jié)束地址的下一個內(nèi)存單元,并使信息長度強制為循環(huán)緩沖區(qū)內(nèi)存的長度。當(dāng)子模塊103讀取循環(huán)緩沖區(qū)里的調(diào)試日志信息并傳送至“上位機命令行”程序 107時,其起始地址將向后偏移被讀取的長度,與結(jié)束地址的處理一樣,當(dāng)起始地址被偏移到緩沖區(qū)內(nèi)存末端時,將自動從緩沖區(qū)起始地址繼續(xù)偏移,同時,信息長度也將做相應(yīng)遞減,遞減值為被讀取的信息長度,直到循環(huán)緩沖區(qū)信息長度為0。圖1所示的107為“上位機命令行程序”,由程序子模塊108,109,110組成。當(dāng)程序107啟動后,各個程序子模塊108,109,110將分別完成初始化。程序107直接為操作人員提供服務(wù),操作人員通過107的界面(111、112、113)進行控制。程序子模塊108通過讀取通信接口 106獲取目標(biāo)電路板傳送的調(diào)試日志信息,并將調(diào)試發(fā)送到界面113輸出。該程序子模塊在操作人員執(zhí)行界面111成功之后開始。程序子模塊109將操作人員通過界面113輸入的命令行(或經(jīng)過程序子模塊110 解析后的命令行)字符串通過通信接口 106目標(biāo)電路板調(diào)試模塊101。該程序子模塊也必須在操作人員執(zhí)行界面111成功,并且通過界面113輸入命令行字符串后開始。程序子模塊110的功能對操作人員所輸入的命令行字符串進行解析。執(zhí)行該程序子模塊功能的前提是操作人員須通過界面112指定“固件代碼標(biāo)識映射表”文件。對操作人員所輸入的命令行字符串進行解析的方法如下確定命令行的命令關(guān)鍵詞,同時進一步確定命令參數(shù),并將所有的參數(shù)保存至參數(shù)列表。在“固件代碼標(biāo)識映射表”數(shù)據(jù)中以命令關(guān)鍵詞查詢固件代碼標(biāo)識,根據(jù)固件代碼標(biāo)識確定其內(nèi)存地址,數(shù)據(jù)長度,以及代碼標(biāo)識屬性(執(zhí)行代碼或者數(shù)據(jù)代碼)。如果代碼標(biāo)識屬性為執(zhí)行代碼,就用固件子模塊102中所定義的call命令執(zhí)行操作人員所輸入的命令。其方法為“call”為命令關(guān)鍵詞,根據(jù)固件代碼標(biāo)識所確定的內(nèi)存地址為第一個參數(shù),并追加操作人員直接輸入的參數(shù)列表,以此組成新的命令行字符串。通過通信接口傳送至目標(biāo)電路板101模塊。如果代碼標(biāo)識屬性為數(shù)據(jù)代碼,則程序子模塊110需要對當(dāng)前輸入的命令行字符串做進一步解析,判斷命令行關(guān)鍵詞之后是否存在“=”符號,并且“=”符號之后緊隨數(shù)字字符串如果是,則表示當(dāng)前命令為固件全局變量修改命令,將用固件子模塊102所定義的 “m”命令執(zhí)行;如果不是,則表示當(dāng)前命令為固件內(nèi)存地址查看命令,將用固件子模塊102 所定義的“d”命令執(zhí)行。
8
本發(fā)明實施的主要策略是利用子模塊102中所定義基礎(chǔ)調(diào)試命令,并結(jié)合電路板固件在被編譯時所產(chǎn)生的“固件代碼標(biāo)識映射表”數(shù)據(jù),使固件源代碼中任意的函數(shù)或者全局變量都能夠被當(dāng)作命令執(zhí)行。
權(quán)利要求
1.一種為電路板固件提供局部運行的工具和方法,目的在于對電路板固件的調(diào)試以及測試。其特征在于,包括調(diào)試日志信息管理,置于“電路板調(diào)試模塊”。調(diào)試命令注冊功能,置于“電路板調(diào)試模塊”。命令接收,解析,執(zhí)行功能,置于“電路板調(diào)試模塊”。注冊命令發(fā)送,置于“上位機命令行”程序。固件C/C++源代碼函數(shù)、全局變量作為命令,并對其解析并發(fā)送,置于“上位機命令行” 程序。
2.根據(jù)權(quán)利要求1,“電路板調(diào)試模塊”對調(diào)試日志(LOG)信息的管理通過循環(huán)緩沖區(qū)存儲調(diào)試日志(LOG)信息。其特征在于“電路板調(diào)試模塊”所提供的調(diào)試日志(LOG)信息輸出接口將日志信息存儲到緩沖區(qū), 當(dāng)緩沖區(qū)滿,緩沖區(qū)中最老的日志信息將會被覆蓋;當(dāng)“上位機命令行”程序與“電路板調(diào)試模塊”成功連接,緩沖區(qū)數(shù)據(jù)將會由老至新地被傳輸?shù)健吧衔粰C命令行”程序,同時,已傳輸至上位機的日志信息將會從循環(huán)緩沖區(qū)里清除,以便最新的日志信息被保存到循環(huán)緩沖區(qū)。
3.根據(jù)權(quán)利要求1,“電路板調(diào)試模塊”的命令注冊功能,實現(xiàn)可供執(zhí)行的命令的注冊, 其特征在于一個完整的命令包含命令關(guān)鍵詞,作為命令標(biāo)識符,可以用下劃線,大小寫英文字母,以及數(shù)字組成的字符串,其中數(shù)字不能作為標(biāo)識符字符串的第一個字符;命令執(zhí)行的起始地址,可以是電路板系統(tǒng)固件的子程序地址,也可以是C/C++函數(shù)指針;命令執(zhí)行的參數(shù),注冊命令可以有一個或者多個參數(shù),也可以沒有參數(shù),指定注冊命令參數(shù)的格式可支持整數(shù),字符串,以及浮點數(shù)。根據(jù)以上信息,“電路板調(diào)試模塊”完成對一個命令的注冊。
4.根據(jù)權(quán)利要求1以及權(quán)利要求3,可注冊一個從指定地址執(zhí)行的命令,其特征在于 該命令的第一個參數(shù)作為開始執(zhí)行的代碼起始地址,從第二個及其之后的(如果需要)所有參數(shù),均為代碼起始地址執(zhí)行的入口參數(shù)。
5.根據(jù)權(quán)利要求1以及權(quán)利要求3,可注冊一個查看指定內(nèi)存地址數(shù)據(jù)的命令,其特征在于將內(nèi)存地址,內(nèi)存數(shù)據(jù)長度(以字節(jié)為單位),數(shù)據(jù)輸出格式,等信息作為命令參數(shù), 根據(jù)權(quán)利要求2,將內(nèi)存數(shù)據(jù)以調(diào)試日志信息輸出到“上位機命令行”程序。數(shù)據(jù)輸出格式可指定為字符串,8比特16進制數(shù)據(jù),16比特16進制數(shù),32比特16進制數(shù)。
6.根據(jù)權(quán)利要求1以及權(quán)利要求3,可注冊一個修改指定內(nèi)存地址數(shù)據(jù)的命令,其特征在于將內(nèi)存地址,被寫入內(nèi)存數(shù)據(jù),以及寫入格式作為參數(shù)。寫入數(shù)據(jù)格式可指定為字符串,8比特,16比特,32比特數(shù)據(jù)。
7.根據(jù)權(quán)利要求1,“電路板調(diào)試模塊”可通過通信端口(如網(wǎng)絡(luò)接口.USB 口,等等) 接收來自“上位機命令行”程序傳送來的命令。并解析,執(zhí)行該命令,其特征在于確定接收到的命令關(guān)鍵詞以及命令參數(shù)。根據(jù)權(quán)利要求3,以命令關(guān)鍵詞為依據(jù),在所有已注冊命令列表中查找對應(yīng)的命令,確定該命令的執(zhí)行起始地址,并將該地址作為函數(shù)指針,將接收到的,并以確定的參數(shù)作為函數(shù)輸入?yún)?shù),執(zhí)行該函數(shù)指針。根據(jù)權(quán)利要求2,函數(shù)執(zhí)行過程中可輸出調(diào)試日志信息,函數(shù)執(zhí)行的返回的結(jié)果值也將以調(diào)試日志信息輸出到“上位機命令行”程序。
8.根據(jù)權(quán)利要求1,“上位機命令行”程序?qū)⒉僮魅藛T所輸入的命令行經(jīng)過命令行解析之后,傳送至“目標(biāo)電路板調(diào)試模塊”。其特征在于操作人員可對當(dāng)前的調(diào)試環(huán)境在“上位機命令行”程序中指定“固件代碼標(biāo)識映射表” 數(shù)據(jù)。如果沒有指定“固件代碼標(biāo)識映射表”,在“上位機命令行”程序所輸入的命令行字符串將直接傳送至“目標(biāo)電路板調(diào)試模塊”?!澳繕?biāo)電路板調(diào)試模塊”將根據(jù)權(quán)利要求7所描述的方法對命令行進行解析并執(zhí)行。對于已經(jīng)指定了“固件代碼標(biāo)識映射表”數(shù)據(jù)的情況, 在“上位機命令行”程序中所輸入的命令行字符串將根據(jù)權(quán)利要求9所定義的方法將命令傳送至“目標(biāo)電路板調(diào)試模塊”。
9.根據(jù)權(quán)利要求1,固件C/C++源代碼函數(shù)或者全局變量可作為命令。其特征在于“上位機命令行”程序啟動以后,操作人員可指定“固件代碼標(biāo)識映射表”數(shù)據(jù),對于操作人員所輸入的命令行字符串,“上位機命令行”程序?qū)ζ溥M行解析以確定命令關(guān)鍵詞,以該命令關(guān)鍵詞字符串為依據(jù),在“固件代碼標(biāo)識映射表”數(shù)據(jù)中找到所對應(yīng)的地址,并確定該地址的數(shù)據(jù)是可執(zhí)行代碼還是全局變量數(shù)據(jù)。如果是可執(zhí)行代碼,用權(quán)利要求4所定義的命令,將該地址作為參數(shù),并追加操作人員所輸入的命令行參數(shù)組成新的命令行,并將新的命令行字符串傳送至“目標(biāo)電路板調(diào)試模塊”;如果是全局變量數(shù)據(jù),用權(quán)利要求5或者權(quán)利要求6所定義的命令,將該地址作為參數(shù),并指定相應(yīng)的數(shù)據(jù)長度和寬度作為附加參數(shù), 組成新的命令行,并將新的命令行字符串傳送至“目標(biāo)電路板調(diào)試模塊”。
10.關(guān)于以上各項權(quán)利要求所述的“固件代碼標(biāo)識映射表”數(shù)據(jù),是指固件或者軟件在編譯鏈接過程中產(chǎn)生的代碼標(biāo)識跟地址之間的對應(yīng)關(guān)系數(shù)據(jù)。例如,在用gcc/g++編譯時, 可指定參數(shù)“-Wl,-Map, mapfile”,其中mapfile即是該目標(biāo)固件或者軟件的“固件代碼標(biāo)識映射表”數(shù)據(jù)。
全文摘要
電路板固件命令行調(diào)試(測試)工具。本發(fā)明實施例涉及用于電路板固件或軟件開發(fā)過程中,通過命令行,使電路板能夠在運行時狀態(tài)下從指定的代碼地址開始執(zhí)行,并以調(diào)試日志(LOG)信息輸出執(zhí)行結(jié)果,實現(xiàn)對目標(biāo)電路板固件/軟件調(diào)試跟蹤以及測試。對于命令關(guān)鍵詞,除了可以使用已注冊命令關(guān)鍵詞以外,還可使用固件/軟件源代碼(C/C++源代碼)中的函數(shù)名以及全局變量名。對于以源代碼中的函數(shù)名或者全局變量名的命令,“上位機命令行”程序結(jié)合指定的“固件代碼標(biāo)識映射表”,找到函數(shù)名或者全局變量名相應(yīng)的執(zhí)行地址,然后將地址作為參數(shù),用已注冊程序呼叫命令或者內(nèi)存查看/修改命令傳送至目標(biāo)電路板的“電路板調(diào)試模塊”。
文檔編號G06F11/36GK102402480SQ20111030709
公開日2012年4月4日 申請日期2011年10月12日 優(yōu)先權(quán)日2011年10月12日
發(fā)明者吳華中 申請人:吳華中
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
芦溪县| 张北县| 巨野县| 姜堰市| 长丰县| 佛教| 象州县| 景宁| 武夷山市| 黄山市| 许昌县| 微山县| 丰都县| 彭阳县| 太仆寺旗| 隆化县| 达日县| 衡水市| 延庆县| 澎湖县| 怀仁县| 平度市| 许昌县| 邯郸市| 台中县| 桃源县| 金华市| 天峨县| 大城县| 汾阳市| 泸西县| 搜索| 东丽区| 永顺县| 阳新县| 巴马| 广宗县| 宿州市| 青田县| 光泽县| 清流县|