国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種多核系統(tǒng)調(diào)試方法和多核系統(tǒng)的制作方法

      文檔序號:6584823閱讀:231來源:國知局
      專利名稱:一種多核系統(tǒng)調(diào)試方法和多核系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種多核系統(tǒng)調(diào)試方法和多核系統(tǒng)。
      背景技術(shù)
      多核技術(shù)的發(fā)展,多核多映像的運(yùn)行模式已經(jīng)使用很廣泛。在多核應(yīng)用的 AMP (Asymmetric Multi-Processing,非對稱多處理)模式上,如果想對多核系統(tǒng)進(jìn)行調(diào)試, 一般通過JTAG(Joint TestAction Group,聯(lián)合測試工作組)調(diào)試器進(jìn)行調(diào)試。在進(jìn)行調(diào) 試的過程中,需要調(diào)試的硬件芯片上會有相應(yīng)的調(diào)試管腳,通過調(diào)試管腳與JTAG調(diào)試器進(jìn) 行相連。當(dāng)對多核系統(tǒng)進(jìn)行調(diào)試時(shí),如果想對其中的某個(gè)從核(VCPU)里的某些字段進(jìn)行調(diào) 試,則可以通過與JTAG調(diào)試器配套的調(diào)試軟件來對系統(tǒng)進(jìn)行調(diào)試,例如,通過在軟件中設(shè) 置斷點(diǎn)查看程序運(yùn)行狀態(tài),從而一步步完成對多核系統(tǒng)的調(diào)試。發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下缺點(diǎn)由于JTAG調(diào)試器需要單獨(dú)購買并且調(diào)試人員需要熟悉調(diào)試軟件的操作方法,因 此,增加了硬件成本和人力成本;同時(shí),在多核系統(tǒng)的硬件設(shè)計(jì)過程中,還要為調(diào)試器設(shè)計(jì) 專門的調(diào)試管腳,增加了硬件設(shè)計(jì)的復(fù)雜度。

      發(fā)明內(nèi)容
      本發(fā)明實(shí)施例提供一種多核系統(tǒng)調(diào)試方法和多核系統(tǒng),用于不通過JTAG調(diào)試器 對多核系統(tǒng)進(jìn)行調(diào)試。其中,一種多核系統(tǒng)調(diào)試方法包括如下步驟解析調(diào)試命令,獲取調(diào)試命令信息;根據(jù)所述調(diào)試命令信息使得需要調(diào)試的核獲取調(diào)試字符串;使得所述需要調(diào)試的核根據(jù)所述調(diào)試字符串運(yùn)行調(diào)試程序;或者根據(jù)所述調(diào)試字 符串查詢符號表,并根據(jù)所述符號表中相應(yīng)的字段信息運(yùn)行調(diào)試程序。其中,一種多核系統(tǒng)包括所述第一核系統(tǒng)還包括加載單元,第一通知單元;所述加載單元用于將所述調(diào)試字符串加載到共享存儲區(qū);所述第一通知單元用于通過中斷方式或消息通知方式告知所述獲取單元已將所 述調(diào)試字符串放到所述共享存儲區(qū);所述獲取單元通過中斷方式去所述共享存儲區(qū)獲取所述調(diào)試字符串,或者通過接 收消息通知后去所述共享存儲區(qū)獲取所述調(diào)試字符串,或者通過輪詢方式定時(shí)訪問所述共 享存儲區(qū)獲取所述調(diào)試字符串。上述技術(shù)方案中具有如下的優(yōu)點(diǎn)通過解析調(diào)試命令,并獲取調(diào)試字符串,并根據(jù)調(diào)試字符串在符號表中查找相應(yīng) 的字段,來運(yùn)行調(diào)試程序,可以不需要JTAG調(diào)試器,從而降低了成本以及系統(tǒng)硬件設(shè)計(jì)的 復(fù)雜度。


      為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述 中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些 實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附 圖獲得其他的附圖。圖1為本發(fā)明方法實(shí)施例一種多核系統(tǒng)調(diào)試方法流程示意圖;圖2為本發(fā)明另一方法實(shí)施例一種多核系統(tǒng)調(diào)試方法流程示意圖;圖3為本發(fā)明另一方法實(shí)施例一種多核系統(tǒng)調(diào)試方法流程示意圖;圖4為本發(fā)明實(shí)施例一種多核系統(tǒng)結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例另一種多核系統(tǒng)結(jié)構(gòu)示意圖。
      具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下將通過具體實(shí)施例和相 關(guān)附圖,對本發(fā)明作進(jìn)一步詳細(xì)說明。實(shí)施例一本發(fā)明方法實(shí)施例一提供了一種多核系統(tǒng)調(diào)試方法,包括如下步驟S101、解析調(diào)試命令,獲取調(diào)試命令信息;解析解調(diào)命令可以由主核,或者某一從核來執(zhí)行,且解析調(diào)試命令的核可以和需 要調(diào)試的核為同一核,這種情況為多核調(diào)試的一種特殊情況,可以看成是對某個(gè)單核系統(tǒng) 進(jìn)行調(diào)試,本發(fā)明實(shí)施例在此并不限定;調(diào)試命令由用戶自定義編寫,在系統(tǒng)編譯過程中與其他系統(tǒng)文件一起編譯生成, 此時(shí),解析時(shí)可以采用相應(yīng)的命令解析器(如aiell)來完成;通過解析調(diào)試命令,獲取調(diào)試 命令信息,如對哪個(gè)核進(jìn)行調(diào)試,調(diào)試類型(運(yùn)行函數(shù)或者查看變量等),以及調(diào)試對象(如 對哪個(gè)函數(shù)或變量進(jìn)行調(diào)試)等。S102、根據(jù)所述調(diào)試命令信息使得需要調(diào)試的核獲取調(diào)試字符串;根據(jù)調(diào)試命令信息,已經(jīng)知道需要對哪個(gè)核進(jìn)行調(diào)試,因此,需要讓調(diào)試的核獲取 調(diào)試字符串;調(diào)試字符串中至少包括一部分調(diào)試命令信息,如包括調(diào)試對象,或者包括需要 調(diào)試核的核號和調(diào)試對象等。調(diào)試字符串的格式并不限定,但一般包括幾個(gè)字段,中間用自定義的分隔符隔開 (如用空格、逗號、分號等隔開),后續(xù)可以通過從符號表中查找相應(yīng)的調(diào)試字符串中相應(yīng) 的字段信息來調(diào)試運(yùn)行程序。讓需要調(diào)試的核獲取調(diào)試字符串可以通過多種方法進(jìn)行,例如可以通過開辟一塊共享存儲區(qū),當(dāng)需要傳遞調(diào)試字符串時(shí),先把調(diào)試字符串放到 該共享存儲區(qū),然后通過中斷方式通知需要調(diào)試的核共享存儲區(qū)中有相應(yīng)的調(diào)試字符串, 需要調(diào)試的核通過中斷程序到共享存儲區(qū)獲取調(diào)試字符串;或者,可以通過開辟一塊當(dāng)需要傳遞調(diào)試字符串時(shí),先把調(diào)試字符串放到該共享存儲 區(qū),然后通過消息通信機(jī)制通知需要調(diào)試共享存儲區(qū)中有相應(yīng)的調(diào)試字符串,需要調(diào)試的核知道后到共享存儲區(qū)獲取調(diào)試字符串;當(dāng)采用消息通信機(jī)制時(shí),也可以直接在消息體中把相應(yīng)的調(diào)試字符串發(fā)送給需要 調(diào)試的核,當(dāng)需要調(diào)試的核收到消息后可以從消息體中獲取調(diào)試字符串?;蛘?,可以將調(diào)試字符串放共享存儲區(qū),需要調(diào)試的核使用輪詢的方式定時(shí)訪問共享存 儲區(qū),從而獲取調(diào)試字符串;或者也可以使用其他方式讓需要調(diào)試的核獲取調(diào)試字符串,在此并不限定。需要說明的是,當(dāng)解析調(diào)試命令的核和需要調(diào)試的核可以為同一個(gè)核,此時(shí),可以 不通過以上通知方式,解析調(diào)試命令的核直接將字符串發(fā)送給需要調(diào)試的核即可。S103、使得所述需要調(diào)試的核根據(jù)所述調(diào)試字符串運(yùn)行調(diào)試程序;或者根據(jù)所述 調(diào)試字符串查詢符號表,并根據(jù)所述符號表中相應(yīng)的字段信息運(yùn)行調(diào)試程序。對于某一些調(diào)試字符串(例如給出具體變量地址的調(diào)試字符串),需要調(diào)試的核 可以直接根據(jù)這些調(diào)試字符串運(yùn)行調(diào)試程序;對于另一些調(diào)試字符串,需要查詢符號表后再運(yùn)行調(diào)試程序。這里的符號表中包 括程序運(yùn)行所需的函數(shù)、變量等信息,包括函數(shù)名和/或變量名,函數(shù)地址和/或變量地址; 其中,函數(shù)名可以為調(diào)試字符串里的一個(gè)字段信息,如果想調(diào)試運(yùn)行某個(gè)函數(shù),可以根據(jù)調(diào) 試字符串里的函數(shù)名這個(gè)字段在符號表里找到相應(yīng)的函數(shù)名,并得到該函數(shù)的地址,從而 調(diào)試運(yùn)行該函數(shù)。調(diào)試結(jié)果可以通過各種通信接口輸出,當(dāng)多個(gè)核共用一個(gè)通信接口時(shí),通過擁有 控制權(quán)的核進(jìn)行代理打印輸出;或者,將所述通信接口的控制權(quán)轉(zhuǎn)移給需要進(jìn)行打印輸出 的核。實(shí)際應(yīng)用中,通常使用串口進(jìn)行打印輸出,多核系統(tǒng)在硬件設(shè)計(jì)的過程中由于管 腳的限制,一般只留一個(gè)串口,因此,通過串口進(jìn)行數(shù)據(jù)輸出時(shí),多個(gè)核需要共用該串口進(jìn) 行數(shù)據(jù)輸出,同時(shí),在某一時(shí)刻,只能由其中一個(gè)核擁有該串口的控制權(quán),其他核如果想要 進(jìn)行串口數(shù)據(jù)輸出,可以讓這個(gè)擁有串口控制權(quán)的核來代理打印輸出,或者將這個(gè)核的控 制權(quán)轉(zhuǎn)移給需要打印的核來完成串口數(shù)據(jù)輸出。本發(fā)明實(shí)施例通過解析調(diào)試命令,并獲取調(diào)試字符串,并根據(jù)調(diào)試字符串在符號 表中查找相應(yīng)的字段,來運(yùn)行調(diào)試程序,可以不需要JTAG調(diào)試器,從而降低了成本以及系 統(tǒng)硬件設(shè)計(jì)的復(fù)雜度。實(shí)施例二本發(fā)明實(shí)施例在基于實(shí)施例一的基礎(chǔ)上,提供了一種多核系統(tǒng)調(diào)試方法,參見圖 2,包括如下步驟S201、主核解析調(diào)試命令,獲取調(diào)試命令信息;這里以主核接收調(diào)試命令為例來進(jìn)行說明,實(shí)際應(yīng)用中,也可以由某一個(gè)從核來 完成,只能該核能夠解析調(diào)試命令即可;調(diào)試命令由命令解析器來完成,例如Shell命令解 析器;由于系統(tǒng)啟動時(shí)默認(rèn)先啟動主核,在主核上進(jìn)行命令解析的應(yīng)用情況比較常見,因 此,這里以主核為例來對調(diào)試命令進(jìn)行解析。調(diào)試命令并不固定,可由用戶進(jìn)行自定義,例如,本發(fā)明實(shí)施例中的一種實(shí)現(xiàn)形式 為
      <命令名稱 >,< 要調(diào)試的核號 >,< 調(diào)試字符串>具體的,命令名稱為命令解析器能夠解析的命令,在軟件代碼層面,可以將該命令 看成是一個(gè)函數(shù),該函數(shù)的參數(shù)可以對應(yīng)于輸命令時(shí)的參數(shù)(如上面的要要調(diào)試的核號, 調(diào)試字符串等)。該函數(shù)與操作系統(tǒng)一起進(jìn)行編譯,因此,編譯完后的系統(tǒng)可以通過命令解 析器來對該函數(shù)進(jìn)行解析。以上述格式為例,要調(diào)試的核號填具體的數(shù)字,如0 (代表主核)、1 (從核1)、2 (從 核2)等;調(diào)試字符串包括幾個(gè)字符,如某個(gè)函數(shù)名或變量名,以及函數(shù)的參數(shù)等。例如,一個(gè)具體的調(diào)試命令輸入形式可以為MCS, 2, “ Add 1 2"假設(shè)該命令表示使用MCS命令來調(diào)試運(yùn)行從核2中的一個(gè)Add函數(shù)(MCS為自定 義的名字,也可以使用AA、BB等其他自定義名字,但需要能夠被命令解析器解析),兩個(gè)參 數(shù)分別為1和2,其中,調(diào)試字符串里的Add、l、2之間有一個(gè)空格,來將Add、l、2三個(gè)字段, 空格也可以使用逗號,分號,句號,或者其他字符來隔開。需要說明的是,上述調(diào)試命令的具體輸入格式并不固定,根據(jù)對命令的不同定義 (即命令對應(yīng)的函數(shù)采用不同的實(shí)現(xiàn)方式),想要表示上述調(diào)試命令的輸入形式也可以使 用類似MCS,“ 2Add 12〃 ;或MCS,“ Add 1 2",2 ;或MCS, “ Add 12 2〃 ;或MCS, ‘‘ 1 2 Add 2";等形式;即各個(gè)命令參數(shù)(相當(dāng)于〈要調(diào)試的核號〉和〈調(diào)試字符串 >)位置并不固定,且 調(diào)試字符串里也可以加上要調(diào)試的核號,只要調(diào)試命令可以解析即可。此外,如果僅僅想查看某個(gè)變量值,則命令可以采用如下形式MC, “ 1234〃 ;或 MC,“ * 地址〃;或 MC,“ &變量名〃;或 MC,“ * 指針名〃 等方式來對變量進(jìn)行查看;其中,MC也為自定義的一個(gè)命令名,實(shí)際使用中用戶也完全可以使用ABC、DEF等 命令名;命令中雙引號里字符串信息可以為用數(shù)字表示的地址,或者用符號‘‘*”表示取地 址的內(nèi)容,或者用符號“&”表示取變量的地址,或者用符號“*”表示取用指針名表示的地址寸。采用上述這些符號是因?yàn)槠涿L(fēng)格與C語言中的保持一致,使得可讀性更強(qiáng); 在實(shí)際使用中,完成可以使用諸如MC,“ read 1234"等方式進(jìn)行表示,只要該命令能夠 被命令解析器進(jìn)行解析,如命令解析器解析該命令時(shí),讀取到read字符串后知道這個(gè)命令 用于讀地址為0xl234(或10進(jìn)制的1234,可自定義)的變量內(nèi)容。通過對調(diào)試命令解析,主核可以獲取相關(guān)的調(diào)試命令信息,如需要對哪個(gè)核進(jìn)行 調(diào)試,調(diào)試類型(如運(yùn)行函數(shù),或者查看變量等),以及具體的調(diào)試對象(如某個(gè)函數(shù),某個(gè) 變量)等。S202、主核根據(jù)調(diào)試命令信息將調(diào)試字符串放入共享存儲區(qū);共享存儲區(qū)為所有核都能訪問的一塊存儲區(qū),其具體實(shí)現(xiàn)形式不限,如可以是系統(tǒng)內(nèi)存,或外部存儲器等。為了對存儲區(qū)的管理更加方便,還可以將共享存儲區(qū)分為幾塊,如從核1的共享 存儲區(qū),從核2的共享存儲區(qū),等等。主核解析完命令后將調(diào)試字符串放入該共享存儲區(qū),例如,將調(diào)試字符串"Add 1 2"放入共享存儲區(qū)。S203、主核通知從核去共享存儲區(qū)獲取調(diào)試字符串;通知的方式可以采用中斷或發(fā)送消息的方式;當(dāng)采用中斷方式時(shí),主核通過觸發(fā)一個(gè)硬件中斷(如通過相應(yīng)函數(shù)改寫中斷寄存 器的值),讓需要調(diào)試的從核調(diào)用執(zhí)行中斷處理函數(shù),在中斷處理函數(shù)中去共享存儲區(qū)獲取 調(diào)試字符串;當(dāng)采用發(fā)送消息的方式時(shí)(如FMN消息或者POW消息),通過發(fā)送消息的函數(shù)發(fā)送 消息,通知從核去共享存儲區(qū)獲取調(diào)試字符串。S204、從核收到主核通知后,去共享存儲區(qū)獲取調(diào)試字符串;獲取調(diào)試字符串后,可以將該調(diào)試串保存起來,如保存到某個(gè)變量。這里需要說明的是,上述步驟S202、S203、S204最終要實(shí)現(xiàn)的目的是讓從核獲取 調(diào)試字符串,除了用上述方法外,也可以采用其他方法,例如可以將調(diào)試字符串放在共享存儲區(qū),從核使用輪詢的方式定時(shí)訪問該共享存儲 區(qū),從而獲取調(diào)試字符串;當(dāng)采用消息通信機(jī)制時(shí),也可以直接在消息體中把相應(yīng)的調(diào)試字符串發(fā)送給需要 調(diào)試的從核,當(dāng)需要調(diào)試的從核收到消息后可以從消息體中獲取調(diào)試字符串?;蛘撸褂闷渌绞阶審暮双@取調(diào)試字符串。S205A、從核根據(jù)調(diào)試字符串運(yùn)行調(diào)試程序;后續(xù)執(zhí)行步驟S207 ;如果主核解析調(diào)試命令后,解析出來的調(diào)試字符串為諸如〃 1234〃,“ ^pointer abc"之類用于表示某些地址的信息,則從核可以直接通過這些調(diào)試字符串來運(yùn)行調(diào)試程 序(如讀該地址的內(nèi)容,修改該地址的內(nèi)容等)。S205B、根據(jù)調(diào)試字符串去符號表中查找相應(yīng)的字段;此步驟為與S205A并列的分支,即對于一些調(diào)試命令可以執(zhí)行步驟S205A,對于另 一些調(diào)試命令,需要執(zhí)行步驟S205B以及后續(xù)其他步驟,后續(xù)步驟中結(jié)尾有“B”的表示該步 驟基于步驟S205B進(jìn)行的;有些命令主核解析后并不能直接運(yùn)行調(diào)試程序,此時(shí)需要去符號表中查找與調(diào)試 字符串對應(yīng)的字段。這里的符號表中為從核代碼運(yùn)行所需的函數(shù)、變量的一個(gè)集合表,可以 將符號表看成代碼運(yùn)行的一個(gè)索引信息表,可以通過這些信息來運(yùn)行調(diào)試程序。符號表的生成方法及最終格式并不唯一,可以根據(jù)不同操作系統(tǒng)來具體實(shí)現(xiàn),例 如,以VxWorks操作系統(tǒng)為例,符號表的生成方法可以包括如下步驟1)將從核的代碼編譯成目標(biāo)文件(如aa. ο文件);2)使用tcl腳本編譯器運(yùn)行tclsh*. tcl命令,把目標(biāo)文件aa. ο生成一個(gè)符號表 文件,如 symTbl. c ;這里的*. tcl為一個(gè)腳本文件(符號“*”表示文件名),其功能是將目標(biāo)文件生 成符號表文件。具體的,可以先將目標(biāo)文件進(jìn)行反匯編,提取里面的函數(shù)名,函數(shù)地址,變量名,變量地址等信息,然后對這些信息按某種特定的形式進(jìn)行輸出到符號表文件。需要說明的是,生成符號表的方式并不唯一,如果有其他方式也可以提取相關(guān)函 數(shù)名,函數(shù)地址,變量名,變量地址等信息,也可以通過這種方式將這些信息輸出到符號表 文件;符號表文件最終的輸出格式也不限定,只要從核可以讀取即可。一個(gè)具體的符號表文件可以包括以下信息SYMBOL standTbl[781]={Il......{{NULL},“ Add",(char*)0x12345678,0,0,SYM_GL0BAL|SYM_TEXT},//
      一個(gè)加法函數(shù)
      TEXT},

      BSS},
      {{NULL},“ Subtract “,(char*)0x3211678,0,0,SYM_GL0BAL|SYM_ 個(gè)減法函數(shù)
      {{NULL}, “ Varl“ , (char*)&Varl,0x00000004,0,0, SYM_GL0BAL|SYM_
      }
      其中,standTbl是
      個(gè)結(jié)構(gòu)體數(shù)據(jù),里面包含多個(gè)以{{NULL},"Add 〃, (char*)0x12345678,0,0,SYM_GL0BAL SYM_TEXT}為例,該條記錄中包括雙引號里的函數(shù)名(如Add)以及函數(shù)名后面的函數(shù)地址(如 (char*)0xl2345678),此外,還可以添加函數(shù)或變量的屬性字段,或其他需要知道的屬性 (如變量占用空間大小,自定義的其他值)。同理,{{NULL}," Varl “,(char*) &Varl,0x00000004,0,0,SYM_GLOBALSYM_BSS}, 記錄了一個(gè)變量的信息;該變量名為Varl,變量地址為(char*)&Varl,其他參數(shù)為附加的一些信息,可以 根據(jù)實(shí)際需求進(jìn)行添加。當(dāng)從核獲取調(diào)試字符串時(shí),可以根據(jù)調(diào)試字符串去符號表中查找相應(yīng)的字段,如 輸入命令為MCS,2,丨‘Add 1 2〃,表示需要執(zhí)行Add函數(shù),則解析完之后的主核知道要讓 從核2來運(yùn)行調(diào)試Add函數(shù),兩個(gè)參數(shù)為1和2;然后主核讓從核獲取調(diào)試字符串〃 Add 1 2"(具體方式可參考步驟S202到S204);從核獲取"Addl2"后,先根據(jù)在符號表中查找 到 Add 的相關(guān)信息,如{{NULL},“ Add",(char*)0x12345678,0,0,SYM_GL0BAL SYM_ TEXT},這一條信息。S206B、根據(jù)查找到的字段運(yùn)行調(diào)試程序;通過在符號表中查找到相關(guān)字段,如找到函數(shù)名,然后根據(jù)函數(shù)名找到函數(shù) 地址,即可以執(zhí)行該函數(shù);例如,繼續(xù)以步驟S205B中的Add函數(shù)為例,可以先找到 {{NULL},“ Add",(char*) 0x12345678,0,0,SYM_GL0BAL | SYM_TEXT},這一條信息,然后找 到Add函數(shù)后面對應(yīng)的地址為(char*) 0x12345678,找到函數(shù)地址后即可以執(zhí)行該函數(shù),參 數(shù)可以使用調(diào)試字符里的1和2,如果函數(shù)沒有參數(shù),則可以不使用參數(shù)。同理,想要查看或修改某變量時(shí),也可以采用上述類似的方法先找到變量名,然后找到變量的地址,從而實(shí)現(xiàn)對變量的查看或修改。S206、將調(diào)試結(jié)果通過串口進(jìn)行輸出;串口是一種比較常見的數(shù)據(jù)通信方式,因此,本發(fā)明實(shí)施例中使用串口對調(diào)試結(jié) 果進(jìn)行輸出。由于多核系統(tǒng)在硬件設(shè)計(jì)的過程中受管腳的限制,一般只留一個(gè)串口,因此,通過 串口進(jìn)行數(shù)據(jù)輸出時(shí),多個(gè)核需要共用該串口進(jìn)行數(shù)據(jù)輸出,同時(shí),在某一時(shí)刻,只能由其 中一個(gè)核擁有該串口的控制權(quán),其他核如果想要進(jìn)行串口數(shù)據(jù)輸出,可以讓這個(gè)擁有串口 控制權(quán)的核來代理打印輸出,或者將這個(gè)核的控制權(quán)轉(zhuǎn)移給需要打印的核來完成串口數(shù)據(jù) 輸出。需要說明的是,如果不使用串口,也可以使用其他接口(如USB、I2C等)實(shí)現(xiàn)調(diào)試 結(jié)果的輸出,在些并不限定,當(dāng)多個(gè)核共同使用某一接口時(shí),也可以采用代理打印或轉(zhuǎn)移控 制權(quán)的方法來對調(diào)試結(jié)果進(jìn)行輸出。參見圖3,為本發(fā)明實(shí)施例多核系統(tǒng)的一個(gè)調(diào)試流程示意圖,該流程以主核接收調(diào) 試命令,對從核2查看變量abc為例來進(jìn)行說明,包括如下步驟S211、主核接收并解析調(diào)試命令MC,2,“ abc “,獲取調(diào)試命令信息;S212、主核將調(diào)試字符串〃 abc"放入共享存儲區(qū);S213、主核通過發(fā)送消息告知從核2共享存儲區(qū)已經(jīng)有調(diào)試字符串;S214、從核從共享存儲區(qū)獲取調(diào)試字符串;S215、從核根據(jù)獲取的調(diào)試字符串去符號表查找相應(yīng)的字段;S216、根據(jù)查找到的相應(yīng)字段找到變量地址并查看變量值;S217、將得到的值發(fā)給主核(假設(shè)調(diào)試串口控制權(quán)為主核,采用由主核代理打印 的方式);S218、主核將得到的值打印輸出。本發(fā)明實(shí)施例通過解析調(diào)試命令,并獲取調(diào)試字符串,并根據(jù)調(diào)試字符串在符號 表中查找相應(yīng)的字段,來運(yùn)行調(diào)試程序,可以不需要JTAG調(diào)試器,從而降低了成本以及系 統(tǒng)硬件設(shè)計(jì)的復(fù)雜度。實(shí)施例三本發(fā)明實(shí)施例提供了一種多核系統(tǒng),包括第一核系統(tǒng)31,第二核系統(tǒng)32 ;所述第一核系統(tǒng)31包括命令解析單元311,用于解析調(diào)試命令,獲取調(diào)試命令信息;
      所述第二核系統(tǒng)32包括獲取單元321,用于根據(jù)所述調(diào)試命令信息獲取調(diào)試字符串;調(diào)試單元322,用于根據(jù)所述調(diào)試字符串運(yùn)行調(diào)試程序;或者根據(jù)所述調(diào)試字符 串查詢符號表,并根據(jù)所述符號表中相應(yīng)的字段信息運(yùn)行調(diào)試程序。上述第一核系統(tǒng)和第二核系統(tǒng)在實(shí)際應(yīng)用中可以是不同的核系統(tǒng),也可以是相同 的核系統(tǒng),當(dāng)兩者相同時(shí),可以將其看成一種特殊的應(yīng)用情景,或者可以將其看成一種單 核。其中,命令解析單元包括命令解析器,用于完成對調(diào)試命令的解析;調(diào)試命令信息包括需要調(diào)試核的核號,調(diào)試類型(如運(yùn)行函數(shù)或查看變量等),調(diào)試對象(某個(gè)函數(shù)或 變量);上述調(diào)試字符串中至少包括一部分調(diào)試命令信息,如包括調(diào)試對象,或者包括需 要調(diào)試核的核號和調(diào)試對象等。上述調(diào)試字符串可以看成是調(diào)試命令的某個(gè)參數(shù),調(diào)試命令的具體實(shí)現(xiàn)形式并不 固定,在編譯階段和系統(tǒng)其他文件一起編譯,且可以被命令解析器解析。其中,第二核系統(tǒng)獲取調(diào)試字符串的方法有多種,參見圖4,當(dāng)所述第一核系統(tǒng)和 所述第二核系統(tǒng)為不同核系統(tǒng)時(shí),所述第一核系統(tǒng)還包括加載單元312,第一通知單元313 ;所述加載單元用于將所述調(diào)試字符串加載到共享存儲區(qū);所述第一通知單元用于通過中斷方式或消息通知方式告知所述獲取單元已將所 述調(diào)試字符串放到所述共享存儲區(qū);所述獲取單元通過中斷方式去所述共享存儲區(qū)獲取所述調(diào)試字符串,或者通過接 收消息通知后去所述共享存儲區(qū)獲取所述調(diào)試字符串,或者通過輪詢方式定時(shí)訪問所述共 享存儲區(qū)獲取所述調(diào)試字符串。此外,第二核系統(tǒng)也可以通過消息通知方式直接接收第一核系統(tǒng)發(fā)送的帶有調(diào)試 字符串的消息參見圖5,當(dāng)所述第一核系統(tǒng)和所述第二核系統(tǒng)為不同核系統(tǒng)或同一核系統(tǒng)時(shí),所 述第一核系統(tǒng)還包括第二通知單元314,當(dāng)所述第一核系統(tǒng)和所述第二核系統(tǒng)為不同核系 統(tǒng)時(shí),所述第二通知單元用于通過消息通知方式將所述調(diào)試字符串封裝到消息中,發(fā)送給 所述獲取單元;當(dāng)所述第一核系統(tǒng)和所述第二核系統(tǒng)為同一核系統(tǒng)時(shí),將所述調(diào)試字符串 直接發(fā)送給所述獲取單元。所述獲取單元根據(jù)收到的消息獲取所述調(diào)試字符串。所述調(diào)試單元在獲取調(diào)試字符串后,對于一部分調(diào)試字符串信息,可以直接運(yùn)行 調(diào)試程序,例如,如果想查看某個(gè)地址的內(nèi)容,調(diào)試字符串為一些地址信息,則可以通過調(diào) 試字符串信息直接運(yùn)行調(diào)試程序查看該地址值。對于另一部分調(diào)試字符串,需要查找符號表來運(yùn)行調(diào)試程序,符號表在調(diào)試之前 生成,其中包含有多個(gè)字段信息,包括所述調(diào)試對象的名稱以及對應(yīng)的地址信息;第二核系 統(tǒng)的調(diào)試單元先查找調(diào)試字符串中的某個(gè)字段在符號表中的對應(yīng)的字段位置,然后根據(jù)該 字段找到其對應(yīng)的地址,從而根據(jù)該地址運(yùn)行調(diào)試程序。具體方法可以參見實(shí)施例二中的 相關(guān)步驟。所述第二核系統(tǒng)還包括輸出單元323,用于將調(diào)試結(jié)果輸出給擁有通信接口控制 權(quán)的核系統(tǒng)進(jìn)行打??;可以通過自己擁有通信接口控制權(quán)或者利用其他核系統(tǒng)進(jìn)行代理打 印輸出。本發(fā)明實(shí)施例通過解析調(diào)試命令,并獲取調(diào)試字符串,并根據(jù)調(diào)試字符串在符號 表中查找相應(yīng)的字段,來運(yùn)行調(diào)試程序,可以不需要JTAG調(diào)試器,從而降低了成本以及系 統(tǒng)硬件設(shè)計(jì)的復(fù)雜度。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以 通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁 碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機(jī)存儲記憶體(Random Access Memory, RAM)等。 上列較佳實(shí)施例,對本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng) 理解的是,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種多核系統(tǒng)調(diào)試方法,其特征在于,包括如下步驟 解析調(diào)試命令,獲取調(diào)試命令信息;根據(jù)所述調(diào)試命令信息使得需要調(diào)試的核獲取調(diào)試字符串;使得所述需要調(diào)試的核根據(jù)所述調(diào)試字符串運(yùn)行調(diào)試程序;或者根據(jù)所述調(diào)試字符串 查詢符號表,并根據(jù)所述符號表中相應(yīng)的字段信息運(yùn)行調(diào)試程序。
      2.如權(quán)利要求1所述的多核系統(tǒng)調(diào)試方法,其特征在于 通過命令解析器完成所述調(diào)試命令的解析;所述調(diào)試命令信息包括需要調(diào)試的核的核號,調(diào)試類型,調(diào)試對象; 所述調(diào)試字符串至少包括一部分調(diào)試命令信息。
      3.如權(quán)利要求1所述的多核系統(tǒng)調(diào)試方法,其特征在于所述根據(jù)所述調(diào)試命令信息使得需要調(diào)試的核獲取調(diào)試字符串的步驟包括 當(dāng)所述需要調(diào)試的核與解析調(diào)試命令的核為同一核時(shí),將所述調(diào)試字符串發(fā)送給所述 需要調(diào)試的核;當(dāng)所述需要調(diào)試的核與解析調(diào)試命令的核不是同一核時(shí),將所述調(diào)試字符串放到共享 存儲區(qū),通過中斷方式或者消息通知方式告知所述需要調(diào)試的核已將所述調(diào)試字符串放到 共享存儲區(qū),使得所述需要調(diào)試的核通過中斷函數(shù)或收到消息后去所述共享存儲區(qū)獲取所 述調(diào)試字符串;或者,將所述調(diào)試字符串放到共享存儲區(qū),所述需要調(diào)試的核通過輪詢方式訪問所述共享存 儲區(qū),獲取所述調(diào)試字符串;或者通過消息通知方式將所述調(diào)試字符串封裝到消息中,使得所述需要調(diào)試的核根據(jù)收到 的消息獲取所述調(diào)試字符串。
      4.如權(quán)利要求2所述的多核系統(tǒng)調(diào)試方法,其特征在于所述符號表中的字段信息包括所述調(diào)試對象的名稱以及對應(yīng)的地址信息;使得所述需 要調(diào)試的核根據(jù)所述地址信息運(yùn)行調(diào)試程序。
      5.如權(quán)利要求1所述的多核系統(tǒng)調(diào)試方法,其特征在于,還包括 將調(diào)試的結(jié)果通過通信接口進(jìn)行打印輸出;當(dāng)多個(gè)核共用一個(gè)通信接口時(shí),通過擁有控制權(quán)的核進(jìn)行代理打印輸出;或者,將所述 通信接口的控制權(quán)轉(zhuǎn)移給需要進(jìn)行打印輸出的核。
      6.一種多核系統(tǒng),其特征在于,包括 第一核系統(tǒng),第二核系統(tǒng);所述第一核系統(tǒng)包括命令解析單元,用于解析調(diào)試命令,獲取調(diào)試命令信息; 所述第二核系統(tǒng)包括獲取單元,用于根據(jù)所述調(diào)試命令信息獲取調(diào)試字符串;調(diào)試單元,用于根據(jù)所述調(diào)試字符串運(yùn)行調(diào)試程序;或者根據(jù)所述調(diào)試字符串查詢符 號表,并根據(jù)所述符號表中相應(yīng)的字段信息運(yùn)行調(diào)試程序。
      7.如權(quán)利要求6所述的多核系統(tǒng),其特征在于所述命令解析單元包括命令解析器,用于完成所述調(diào)試命令的解析; 所述調(diào)試命令信息包括需要調(diào)試的核的核號,調(diào)試類型,調(diào)試對象;所述調(diào)試字符串至少包括一部分調(diào)試命令信息。
      8.如權(quán)利要求6所述的多核系統(tǒng),其特征在于當(dāng)所述第一核系統(tǒng)和所述第二核系統(tǒng)為不同核系統(tǒng)時(shí),所述第一核系統(tǒng)還包括加載 單元,第一通知單元;所述加載單元用于將所述調(diào)試字符串加載到共享存儲區(qū);所述第一通知單元用于通過中斷方式或消息通知方式告知所述獲取單元已將所述調(diào) 試字符串放到所述共享存儲區(qū);所述獲取單元通過中斷方式去所述共享存儲區(qū)獲取所述調(diào)試字符串,或者通過接收消 息通知后去所述共享存儲區(qū)獲取所述調(diào)試字符串,或者通過輪詢方式定時(shí)訪問所述共享存 儲區(qū)獲取所述調(diào)試字符串;或者,當(dāng)所述第一核系統(tǒng)和所述第二核系統(tǒng)為不同核系統(tǒng)或同一核系統(tǒng)時(shí),所述第一 核系統(tǒng)還包括第二通知單元,用于當(dāng)所述第一核系統(tǒng)和所述第二核系統(tǒng)為不同核系統(tǒng)時(shí), 通過消息通知方式將所述調(diào)試字符串封裝到消息中,發(fā)送給所述獲取單元;或者當(dāng)所述第 一核系統(tǒng)和所述第二核系統(tǒng)為同一核系統(tǒng)時(shí),將所述調(diào)試字符串直接發(fā)送給所述獲取單元。
      9.如權(quán)利要求6所述的多核系統(tǒng),其特征在于所述符號表中的字段信息包括所述調(diào)試對象的名稱以及對應(yīng)的地址信息;使得所述需 要調(diào)試的核根據(jù)所述地址信息運(yùn)行調(diào)試程序。
      10.如權(quán)利要求6所述的多核系統(tǒng),其特征在于 所述第二核系統(tǒng)還包括輸出單元,用于將調(diào)試結(jié)果輸出給擁有通信接口控制權(quán)的核系統(tǒng)進(jìn)行打印。
      全文摘要
      本發(fā)明實(shí)施例公開了一種多核系統(tǒng)調(diào)試方法和多核系統(tǒng),其中,所述多核系統(tǒng)調(diào)試方法包括解析調(diào)試命令,獲取調(diào)試命令信息;根據(jù)所述調(diào)試命令信息使得需要調(diào)試的核獲取調(diào)試字符串;使得所述需要調(diào)試的核根據(jù)所述調(diào)試字符串運(yùn)行調(diào)試程序;或者根據(jù)所述調(diào)試字符串查詢符號表,并根據(jù)所述符號表中相應(yīng)的字段信息運(yùn)行調(diào)試程序。本發(fā)明實(shí)施例通過解析調(diào)試命令,并獲取調(diào)試字符串,并根據(jù)調(diào)試字符串在符號表中查找相應(yīng)的字段,來運(yùn)行調(diào)試程序,可以不需要JTAG調(diào)試器,從而降低了成本以及系統(tǒng)硬件設(shè)計(jì)的復(fù)雜度。
      文檔編號G06F11/36GK102117241SQ200910238850
      公開日2011年7月6日 申請日期2009年12月30日 優(yōu)先權(quán)日2009年12月30日
      發(fā)明者魏海峰 申請人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1