本發(fā)明涉及計算機
技術(shù)領(lǐng)域:
,尤其涉及一種內(nèi)存監(jiān)控方法、內(nèi)存訪問控制器及SoC系統(tǒng)。
背景技術(shù):
:在系統(tǒng)級芯片(SystemonChip,SoC)系統(tǒng)中,存在多個不同的模塊,比如多個硬件專用邏輯、各種外設(shè)(IntelligentPeripheral,IP)、中央處理器(CentralProcessingUnit,CPU)中運行的多種應(yīng)用程序等。各個模塊可以共享內(nèi)存。由于SoC系統(tǒng)組成的復(fù)雜性,會發(fā)生內(nèi)存訪問越界的問題,即某模塊訪問了其不該訪問的內(nèi)存地址,導(dǎo)致該模塊無法正常運行,甚至導(dǎo)致SoC系統(tǒng)崩潰。目前,一般是在SoC系統(tǒng)初始化或釋放內(nèi)存的時候在某個內(nèi)存地址設(shè)置特征值(如:0xaa),當(dāng)監(jiān)測到某個內(nèi)存地址的特征值被修改,則確定有模塊越界訪問了該內(nèi)存地址。但這種方式通常只能判斷內(nèi)存地址是否被越界訪問,無法確定是哪個模塊越界訪問了內(nèi)存。需要逐一排查可能訪問該內(nèi)存地址的每個模塊,來定位是哪個模塊越界訪問了該內(nèi)存地址,定位故障問題的周期長、效率較低。技術(shù)實現(xiàn)要素:本發(fā)明實施提供一種內(nèi)存監(jiān)控方法、內(nèi)存訪問控制器及SoC系統(tǒng),能夠準(zhǔn)確監(jiān)控到內(nèi)存的訪問情況,出現(xiàn)內(nèi)存訪問異常時,可以快速、準(zhǔn)確地定位到非法訪問內(nèi)存的模塊。為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:第一方面,公開了一種內(nèi)存監(jiān)控方法,包括:內(nèi)存訪問控制器獲取內(nèi)存訪問模塊發(fā)送的內(nèi)存訪問命令,該命令攜帶包括待訪問的內(nèi)存地址的地址信息、本次訪問的讀寫屬性以及該內(nèi)存訪問模塊的標(biāo)識和讀寫屬性,所謂讀寫屬性即該內(nèi)存訪問模塊對待訪問內(nèi)存執(zhí)行讀操作還是寫操作;接著,確定待訪問的內(nèi)存地址對應(yīng)的合法訪問條件,該合法訪問條件包括允許訪問該待訪問的內(nèi)存地址的至少一個模塊的標(biāo)識和至少一個模塊對待訪問的內(nèi)存地址所擁有的讀或?qū)憴?quán)限;接著隨后,判斷內(nèi)存訪問模塊的標(biāo)識是否屬于所述至少一個模塊的標(biāo)識和所述讀寫屬性是否符合所述讀或?qū)憴?quán)限,即判斷發(fā)起內(nèi)存訪問請求的內(nèi)存訪問模塊是否可以訪問待訪問的內(nèi)存地址,以及是否可以對待訪問的內(nèi)存地址執(zhí)行寫操作或讀操作;最后,在所述內(nèi)存訪問模塊的標(biāo)識不屬于所述至少一個模塊的標(biāo)識和/或所述讀寫屬性不符合所述讀或?qū)憴?quán)限時,也就是內(nèi)存訪問模塊非法訪問時,記錄所述待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性。本發(fā)明提供的內(nèi)存監(jiān)控方法,當(dāng)有模塊申請訪問內(nèi)存時,內(nèi)存訪問控制器監(jiān)控其內(nèi)存訪問命令,并確定待訪問內(nèi)存地址的合法訪問條件,該合法訪問條件攜帶允許訪問該待訪問的內(nèi)存地址的至少一個模塊的標(biāo)識和至少一個模塊對待訪問的內(nèi)存地址所擁有的讀或?qū)憴?quán)限。進而判斷該內(nèi)存訪問模塊是否可以訪問待訪問的內(nèi)存地址,以及是否可以對待訪問的內(nèi)存地址執(zhí)行寫操作或操作。若內(nèi)存訪問模塊的訪問不合法(即內(nèi)存訪問模塊的標(biāo)識不屬于合法訪問條件中的至少一個模塊的標(biāo)識,和/或內(nèi)存訪問請求中的讀寫屬性不符合合法訪問條件中的讀或?qū)憴?quán)限),則記錄內(nèi)存訪問模塊的訪問信息,即待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性之間的對應(yīng)關(guān)系。如此,當(dāng)設(shè)備的內(nèi)存被非法訪問,導(dǎo)致設(shè)備系統(tǒng)異常后,設(shè)備中運行的檢測軟件可以根據(jù)監(jiān)控模塊記錄的本次訪問的信息快速、準(zhǔn)確的確定出內(nèi)存非法訪問的真正原因。結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,獲取與所述待訪問的內(nèi)存地址對應(yīng)的合法訪問條件具體包括:根據(jù)所述待訪問的內(nèi)存地址查詢合法訪問信息表,確定所述待訪問的內(nèi)存地址對應(yīng)的所述合法訪問條件;所述合法訪問信息表記錄有被監(jiān)控的內(nèi)存地址的標(biāo)識以及每一個所述被監(jiān)控的內(nèi)存地址所對應(yīng)的合法訪問條件。這里,可以根據(jù)預(yù)先生成的合法訪問信息表,獲取到帶訪問的內(nèi)存地址對應(yīng)的合法訪問條件,即允許訪問該待訪問的內(nèi)存地址的至少一個模塊的標(biāo)識和所述至少一個模塊對該待訪問的內(nèi)存地址所擁有的讀或?qū)憴?quán)限。進而可以根據(jù)該合法訪問條件判斷內(nèi)存訪問模塊對該待訪問的內(nèi)存地址的訪問是否合法。結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,在獲取內(nèi)存訪問模塊發(fā)送的內(nèi)存訪問命令之前,內(nèi)存訪問控制器還需確定被監(jiān)控的內(nèi)存地址,以及每一個被監(jiān)控的內(nèi)存地址的合法訪問條件,其中,被監(jiān)控的內(nèi)存地址的合法訪問條件包括可訪問被監(jiān)控的內(nèi)存地址的模塊的標(biāo)識、以及各個模塊對被監(jiān)控的內(nèi)存地址所擁有的讀或?qū)憴?quán)限。最終根據(jù)每一個被監(jiān)控的內(nèi)存地址,以及每一個被監(jiān)控的內(nèi)存地址的合法訪問條件生成上述合法訪問信息表。如此,當(dāng)有模塊發(fā)起內(nèi)存訪問時,內(nèi)存訪問控制器就可以根據(jù)預(yù)配置的訪問信息表確定本次訪問是否合法。一旦確認(rèn)是非法訪問,則可記錄本次訪問的信息,以便根據(jù)記錄的信息確認(rèn)究竟是哪個模塊非法訪問了內(nèi)存而導(dǎo)致的系統(tǒng)異常。結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,內(nèi)存訪問控制器獲取與所述待訪問的內(nèi)存地址對應(yīng)的合法訪問條件之前,還可以確定所述待訪問的內(nèi)存地址為被監(jiān)控的內(nèi)存地址,具體地,可以根據(jù)待訪問的內(nèi)存地址的信息確定待訪問內(nèi)存地址為被監(jiān)控的內(nèi)存地址。內(nèi)存訪問控制器只會為被監(jiān)控的內(nèi)存地址生成合法訪問條件,因此只有待訪問內(nèi)存地址是被監(jiān)控的內(nèi)存地址,才能在合法訪問信息表中查詢到與其對應(yīng)的合法訪問條件。結(jié)合第一方面,在第一方面的第四種可能的實現(xiàn)方式中,若判斷所述內(nèi)存訪問模塊的標(biāo)識屬于所述至少一個模塊的標(biāo)識,且所述讀寫屬性符合所述讀或?qū)憴?quán)限,則確定所述內(nèi)存訪問模塊的訪問合法。也就說,只有當(dāng)內(nèi)存訪問模塊被允許使用待訪問的內(nèi)存地址,且內(nèi)存訪問模塊的讀寫屬性是其對待訪問的內(nèi)存地址。結(jié)合第一方面或第一方面的第一或第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,內(nèi)存訪問控制器記錄所述待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性之后,該方法還包括:向中央處理器CPU上報中斷信息,以便所述CPU運行所述中斷信息對應(yīng)的中斷處理軟件對所述中斷信息進行處理;所述中斷信息攜帶所述待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性。如此,當(dāng)出現(xiàn)內(nèi)存非法訪問時,CPU接收內(nèi)存訪問控制器上報的中斷信息后,指示該中斷信息對應(yīng)的軟件查詢內(nèi)存訪問控制器本地記錄的訪問信息就可以確定是哪個模塊非法訪問了哪個內(nèi)存地址。第二方面,公開了一種內(nèi)存訪問控制器,包括:獲取模塊,用于獲取內(nèi)存訪問模塊發(fā)送的內(nèi)存訪問命令,內(nèi)存訪問命令包括待訪問的內(nèi)存地址、內(nèi)存訪問模塊的標(biāo)識和讀寫屬性,讀寫屬性用于指示內(nèi)存訪問模塊對待訪問的內(nèi)存地址執(zhí)行讀操作或?qū)懖僮?;獲取模塊還用于,獲取與待訪問的內(nèi)存地址對應(yīng)的合法訪問條件,合法訪問條件包括至少一個模塊的標(biāo)識和至少一個模塊對待訪問的內(nèi)存地址所擁有的讀或?qū)憴?quán)限;判斷模塊,用于判斷獲取模塊獲取的內(nèi)存訪問模塊的標(biāo)識是否屬于至少一個模塊的標(biāo)識和讀寫屬性是否符合讀或?qū)憴?quán)限;記錄模塊,用于在判斷模塊確定內(nèi)存訪問模塊的標(biāo)識不屬于至少一個模塊的標(biāo)識和/或讀寫屬性不符合讀或?qū)憴?quán)限時,記錄待訪問的內(nèi)存地址、內(nèi)存訪問模塊的標(biāo)識以及讀寫屬性。本發(fā)明提供的內(nèi)存訪問控制器,當(dāng)有模塊申請訪問內(nèi)存時,監(jiān)控其內(nèi)存訪問命令,并確定待訪問內(nèi)存地址的合法訪問條件,該合法訪問條件攜帶允許訪問該待訪問的內(nèi)存地址的至少一個模塊的標(biāo)識和至少一個模塊對待訪問的內(nèi)存地址所擁有的讀或?qū)憴?quán)限。進而判斷該內(nèi)存訪問模塊是否可以訪問待訪問的內(nèi)存地址,以及是否可以對待訪問的內(nèi)存地址執(zhí)行寫操作或操作。若內(nèi)存訪問模塊的訪問不合法(即內(nèi)存訪問模塊的標(biāo)識不屬于合法訪問條件中的至少一個模塊的標(biāo)識,和/或內(nèi)存訪問請求中的讀寫屬性不符合合法訪問條件中的讀或?qū)憴?quán)限),則記錄內(nèi)存訪問模塊的訪問信息,即待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性之間的對應(yīng)關(guān)系。如此,當(dāng)設(shè)備的內(nèi)存被非法訪問,導(dǎo)致設(shè)備系統(tǒng)異常后,設(shè)備中運行的檢測軟件可以根據(jù)監(jiān)控模塊記錄的本次訪問的信息快速、準(zhǔn)確的確定出內(nèi)存非法訪問的真正原因。結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,獲取模塊具體用于,根據(jù)待訪問的內(nèi)存地址查詢合法訪問信息表,確定待訪問的內(nèi)存地址對應(yīng)的合法訪問條件;合法訪問信息表記錄有被監(jiān)控的內(nèi)存地址的標(biāo)識以及每一個被監(jiān)控的內(nèi)存地址所對應(yīng)的合法訪問條件。結(jié)合第二方面的第一種可能的實現(xiàn)方式中,在第二方面的第二種可能的實現(xiàn)方式中,還包括第一確定模塊、生成模塊,第一確定模塊用于,在獲取模塊獲取內(nèi)存訪問模塊發(fā)送的內(nèi)存訪問命令之前,確定被監(jiān)控的內(nèi)存地址,以及每一個被監(jiān)控的內(nèi)存地址的合法訪問條件;生成模塊用于,根據(jù)每一個被監(jiān)控的內(nèi)存地址的合法訪問條件生成合法訪問信息表。結(jié)合第二方面的第二種可能的實現(xiàn)方式中,在第二方面的第三種可能的實現(xiàn)方式中,第一確定模塊還用于,在獲取模塊獲取與待訪問的內(nèi)存地址對應(yīng)的合法訪問條件之前,確定待訪問的內(nèi)存地址為被監(jiān)控的內(nèi)存地址。結(jié)合第二方面,在第二方面的第四種可能的實現(xiàn)方式中,判斷模塊還用于,若判斷內(nèi)存訪問模塊的標(biāo)識屬于至少一個模塊的標(biāo)識,且讀寫屬性符合讀或?qū)憴?quán)限,則確定內(nèi)存訪問模塊的訪問合法。結(jié)合第二方面或第二方面的第一或第三種可能的實現(xiàn)方式中,在第二方面的第五種可能的實現(xiàn)方式中,還包括發(fā)送模塊,發(fā)送模塊用于,在記錄模塊記錄待訪問的內(nèi)存地址、內(nèi)存訪問模塊的標(biāo)識以及讀寫屬性之后,向中央處理器CPU上報中斷信息,以便CPU運行中斷信息對應(yīng)的中斷處理軟件對中斷信息進行處理;中斷信息攜帶待訪問的內(nèi)存地址、內(nèi)存訪問模塊的標(biāo)識以及讀寫屬性。第三方面,公開了一種SoC系統(tǒng),該SoC系統(tǒng)包括至少一個內(nèi)存訪問模塊、內(nèi)存訪問控制器和存儲器,內(nèi)存訪問控制器用于控制至少一個內(nèi)存訪問模塊訪問存儲器中的數(shù)據(jù)。內(nèi)存訪問控制器用于,獲取至少一個內(nèi)存訪問模塊的內(nèi)存訪問命令,判斷內(nèi)存訪問命令訪問存儲器中內(nèi)存地址是否合法,并且在確定內(nèi)存訪問命令訪問存儲器中內(nèi)存地址不合法時,記錄內(nèi)存訪問命令攜帶的待訪問的內(nèi)存地址、內(nèi)存訪問模塊的標(biāo)識和讀寫屬性。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例提供的SoC系統(tǒng)的架構(gòu)圖;圖2為本發(fā)明實施例提供的內(nèi)存監(jiān)控方法的流程示意圖;圖3為本發(fā)明實施例提供的內(nèi)存監(jiān)控方法的另一流程示意圖;圖4為本發(fā)明實施例提供的內(nèi)存訪問控制器的結(jié)構(gòu)框圖;圖5為本發(fā)明實施例提供的內(nèi)存訪問控制器的另一結(jié)構(gòu)框圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。目前的SoC系統(tǒng)中經(jīng)常會發(fā)生內(nèi)存越界、內(nèi)存被錯誤訪問等問題?,F(xiàn)有技術(shù)通常只能判斷某個內(nèi)存地址是否被修改,無法定位到究竟是哪個模塊越界訪問了內(nèi)存地址。需要人工根據(jù)已有經(jīng)驗對可能訪問該內(nèi)存地址的模塊進行逐一排查,來確定是哪個模塊越界訪問了內(nèi)存,如此,導(dǎo)致定位故障問題的周期較長、效率較低?;诖?,本發(fā)明的原理在于,監(jiān)控SoC系統(tǒng)內(nèi)所有模塊訪問DDR(DoubleDataRate,雙倍速率)內(nèi)存的命令,對每一條訪問內(nèi)存的命令,自動進行合法性檢查,并在訪問不合法時記錄模塊的標(biāo)識、訪問的內(nèi)存地址以及模塊的標(biāo)識。這樣,在出現(xiàn)由于內(nèi)存被越界訪問而導(dǎo)致的異常時,可以根據(jù)本地存儲的上述信息快速、準(zhǔn)確地定位出越界訪問該內(nèi)存地址的模塊,如此,可以大大縮短了故障定位的時間,提高了故障定位的效率。本發(fā)明提供一種SoC系統(tǒng),在SoC芯片片內(nèi)集成一個專用的硬件監(jiān)控模塊,用于監(jiān)控SoC內(nèi)所有模塊訪問DDR內(nèi)存的命令。具體地,參考圖1,本發(fā)明提供的SoC系統(tǒng)包括:CPU、內(nèi)存訪問模塊0~內(nèi)存訪問模塊n、內(nèi)存訪問控制器以及存儲器。其中,內(nèi)存訪問模塊可以是音視頻處理模塊、圖形模塊、外設(shè)模塊、通訊模塊等,內(nèi)存訪問控制器可以是DDR控制器。具體實現(xiàn)中,CPU、內(nèi)存訪問模塊0~內(nèi)存訪問模塊n均可以通過內(nèi)存訪問DDR控制模塊器訪問DDR內(nèi)存空間存儲器中的數(shù)據(jù)。通常,存儲器的DDR內(nèi)存空間被劃分為多個內(nèi)存地址:buffer(內(nèi)存地址)0~buffern,指定了各個每個內(nèi)存訪問模塊指定有各自可以訪問的內(nèi)存地址。若是內(nèi)存訪問模塊訪問了不該其訪問的內(nèi)存地址,則視為內(nèi)存越界非法訪問。參考圖1,本發(fā)明實施例提供的SoC系統(tǒng)中的內(nèi)存訪問控制器包括監(jiān)控模塊,該監(jiān)控模塊用于獲取內(nèi)存訪問模塊的內(nèi)存訪問命令,并判斷所述內(nèi)存訪問命令訪問所述存儲器中內(nèi)存地址是否合法。在確定所述內(nèi)存訪問命令訪問所述存儲器中內(nèi)存地址不合法時,記錄所述內(nèi)存訪問命令攜帶的待訪問的內(nèi)存地址、內(nèi)存訪問模塊的標(biāo)識和讀寫屬性。也可以在此之后,向CPU上報中斷信息,該中斷信息攜帶內(nèi)存訪問模塊待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性。CPU可以在接收該中斷信息后運行該中斷信息對應(yīng)的中斷處理軟件對該中斷信息進行處理,如:讀取記錄的待訪問的內(nèi)存地址、內(nèi)存訪問模塊的標(biāo)識和讀寫屬性。所述監(jiān)控模塊具體用于,獲取內(nèi)存訪問模塊發(fā)送的內(nèi)存訪問命令,其中,該內(nèi)存訪問命令包括待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識和讀寫屬性,所述讀寫屬性用于指示所述內(nèi)存訪問模塊對所述待訪問的內(nèi)存地址執(zhí)行讀操作或?qū)懖僮鳌F浯?,獲取與所述待訪問的內(nèi)存地址對應(yīng)的合法訪問條件,進而判斷所述內(nèi)存訪問模塊的標(biāo)識是否屬于該內(nèi)存地址對應(yīng)的合法訪問條件中的至少一個模塊的標(biāo)識;并判斷所述讀寫屬性是否符合該內(nèi)存地址對應(yīng)的合法訪問條件中的讀或?qū)憴?quán)限。在所述內(nèi)存訪問模塊的標(biāo)識不屬于所述至少一個模塊的標(biāo)識和/或所述讀寫屬性不符合所述讀或?qū)憴?quán)限時,也就是在該內(nèi)存訪問模塊的訪問不合法時,記錄所述待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性。如此,可以根據(jù)記錄的信息快速地進行故障定位。本發(fā)明實施例提供的SoC系統(tǒng)中,內(nèi)置于內(nèi)存訪問控制器的監(jiān)控模塊可以對DDR內(nèi)存空間進行監(jiān)控。具體地,如圖2所示:首先,監(jiān)控模塊確定被監(jiān)控的內(nèi)存地址,并指定每一個內(nèi)存地址的合法訪問條件,生成合法訪問信息表。具體地,合法訪問信息表可以如下表1所示。該合法訪問信息表中記錄了內(nèi)存地址和合法訪問條件之間的對應(yīng)關(guān)系,該合法訪問條件包括但不限于模塊標(biāo)識和讀寫權(quán)限。其中,該模塊標(biāo)識用于指示合法訪問條件對應(yīng)的內(nèi)存地址的模塊信息,該讀寫權(quán)限用于指示模塊標(biāo)識對應(yīng)的模塊對內(nèi)存地址的操作權(quán)限,比如讀權(quán)限,寫權(quán)限,或同時具備讀權(quán)限和寫權(quán)限。示例的,內(nèi)存地址addr1對應(yīng)的合法訪問條件包括:模塊1、模塊2,以及模塊1和模塊2對內(nèi)存地址addr1具有讀權(quán)限,即模塊1、模塊2可以訪問內(nèi)存地址addr1的數(shù)據(jù)但不能向內(nèi)存地址addr1寫入數(shù)據(jù)。表1具體實現(xiàn)中,監(jiān)控模塊對各個模塊的內(nèi)存訪問命令進行監(jiān)控,獲取內(nèi)存訪問模塊的內(nèi)存訪問命令。具體實現(xiàn)中,參考圖1,CPU、模塊0、模塊1、模塊2、模塊n等模塊、內(nèi)存訪問控制模塊、監(jiān)控模塊之間通過總線進行交互。監(jiān)控模塊也是通過總線獲取到的內(nèi)存訪問模塊的內(nèi)存訪問命令,內(nèi)存訪問命令可以是Bus_cmd_addr命令。訪問模塊可以是上述CPU、模塊0、模塊1、模塊2、模塊n等模塊中任意一個,該訪問模塊發(fā)送內(nèi)存訪問命令,該內(nèi)存訪問命令中包含待訪問的內(nèi)存地址、該訪問模塊的標(biāo)識和讀寫屬性。其中,待訪問的內(nèi)存地址用于指示該訪問模塊請求訪問的內(nèi)存地址信息,該讀寫屬性用于指示該訪問模塊對該內(nèi)存地址的數(shù)據(jù)進行讀操作或?qū)懖僮?。進一步地,監(jiān)控模塊根據(jù)內(nèi)存訪問模塊的內(nèi)存訪問命令判斷本次訪問是否合法,即該內(nèi)存訪問模塊是否越界訪問內(nèi)存。具體地,監(jiān)控模塊首先根據(jù)內(nèi)存訪問命令攜帶的待訪問的內(nèi)存地址判斷待訪問的內(nèi)存地址是否為被監(jiān)控的內(nèi)存地址。若確定待訪問的內(nèi)存地址是被監(jiān)控的內(nèi)存地址,則查詢上述表1確定待訪問的內(nèi)存地址對應(yīng)的合法訪問條件,包括可以訪問所述待訪問的內(nèi)存地址的模塊的標(biāo)識(如:ID),以及可以訪問所述待訪問的內(nèi)存地址的模塊對該待訪問的內(nèi)存地址所擁有的讀或?qū)憴?quán)限。進而將內(nèi)存訪問命令攜帶的內(nèi)存訪問模塊的ID與合法訪問條件中的模塊ID作對比,將本次訪問的讀寫屬性與合法訪問條件中的讀或?qū)憴?quán)限對比,判斷本次訪問是否合法。具體可以是,判斷內(nèi)存訪問模塊的ID是否屬于合法訪問條件中的模塊的標(biāo)識,若屬于,則進一步判斷該內(nèi)存訪問模塊的內(nèi)存訪問命令中的讀寫屬性與待訪問的內(nèi)存地址對應(yīng)的合法訪問條件中的該內(nèi)存訪問模塊所擁有的讀或?qū)憴?quán)限是否匹配,若匹配則判斷該內(nèi)存訪問模塊本次訪問合法。若內(nèi)存訪問模塊的ID不屬于合法訪問條件中的模塊的標(biāo)識則判斷該內(nèi)存訪問模塊本次訪問不合法。若該內(nèi)存訪問模塊的內(nèi)存訪問命令中的讀寫屬性與待訪問的內(nèi)存地址對應(yīng)的合法訪問條件中的該內(nèi)存訪問模塊所擁有的讀或?qū)憴?quán)限不匹配,則判斷該內(nèi)存訪問模塊本次訪問不合法。最后,監(jiān)控模塊若確定該內(nèi)存訪問模塊本次訪問不合法,則記錄本次訪問的訪問信息。具體實現(xiàn)中,記錄所述待訪問的內(nèi)存地址、該內(nèi)存訪問模塊的標(biāo)識以及本次訪問的讀寫屬性。當(dāng)上述流程判斷內(nèi)存地址被非法訪問,監(jiān)控模塊還可以向CPU上報中斷信息,該中斷信息攜帶所述待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性。進而CPU接收該中斷信息后可以運行所述中斷信息對應(yīng)的中斷處理軟件對所述中斷信息進行處理。如:中斷處理軟件查詢記錄的訪問信息確定導(dǎo)致異常的原因是“該內(nèi)存訪問模塊非法訪問了待訪問的內(nèi)存地址”。本發(fā)明實施例還提供一種內(nèi)存監(jiān)控方法,執(zhí)行主體可以為圖1所示的SoC系統(tǒng)中的內(nèi)存訪問控制器,如圖3所示,所述方法包括以下步驟:101、獲取內(nèi)存訪問模塊的內(nèi)存訪問命令,所述內(nèi)存訪問命令包括待訪問內(nèi)存的地址、所述內(nèi)存訪問模塊的標(biāo)識以及讀寫屬性。其中,所述讀寫屬性用于指示所述內(nèi)存訪問模塊對所述待訪問的內(nèi)存地址執(zhí)行讀操作或?qū)懖僮?。具體實現(xiàn)中,監(jiān)控模塊通過與內(nèi)存訪問模塊之間的總線獲取到內(nèi)存訪問模塊的內(nèi)存訪問命令。該內(nèi)存訪問模塊即發(fā)起本次訪問的模塊,其通過內(nèi)存訪問命令發(fā)起內(nèi)存訪問。這里的“內(nèi)存訪問命令”即所述內(nèi)存訪問模塊為了訪問DDR內(nèi)存而發(fā)起的Bus_cmd_addr命令。102、獲取與所述待訪問的內(nèi)存地址對應(yīng)的合法訪問條件,所述合法訪問條件包括至少一個模塊的標(biāo)識和所述至少一個模塊對所述待訪問的內(nèi)存地址所擁有的讀或?qū)憴?quán)限。具體實現(xiàn)中,在步驟101之前,監(jiān)控模塊首先確定被監(jiān)控的內(nèi)存地址以及每一個被監(jiān)控的內(nèi)存地址的合法訪問條件,即允許每一個被監(jiān)控的內(nèi)存地址的模塊以及每一模塊所擁有的讀或?qū)憴?quán)限。進而根據(jù)被監(jiān)控的內(nèi)存地址以及每一個被監(jiān)控的內(nèi)存地址的合法訪問條件生成合法訪問信息表。這里,監(jiān)控模塊根據(jù)所述待訪問的內(nèi)存地址查詢合法訪問信息表,確定所述待訪問的內(nèi)存地址對應(yīng)的所述合法訪問條件。其中,所謂被監(jiān)控的內(nèi)存地址,即圖1所示的內(nèi)置于DDR控制模塊的監(jiān)控模塊預(yù)先設(shè)置的內(nèi)存監(jiān)控范圍,該監(jiān)控模塊可以對處于該范圍內(nèi)的內(nèi)存地址的進行訪問權(quán)限控制。另外,被監(jiān)控的內(nèi)存地址的標(biāo)識可以是內(nèi)存地址的地址范圍。當(dāng)然,在步驟102之前,監(jiān)控模塊還可以參照預(yù)先確定的被監(jiān)控的內(nèi)存地址以及待訪問的內(nèi)存地址,判斷待訪問的內(nèi)存地址是否為被監(jiān)控的內(nèi)存地址。若是,則進行步驟102。103、判斷所述內(nèi)存訪問模塊的標(biāo)識是否屬于所述至少一個模塊的標(biāo)識和所述讀寫屬性是否符合所述讀或?qū)憴?quán)限。也就是說,將所述內(nèi)存訪問命令中的讀寫屬性、所述內(nèi)存訪問模塊的標(biāo)識與所述待訪問內(nèi)存地址對應(yīng)的合法訪問條件作對比,判斷所述本次訪問是否合法。104、在所述內(nèi)存訪問模塊的標(biāo)識不屬于所述至少一個模塊的標(biāo)識和/或所述讀寫屬性不符合所述讀或?qū)憴?quán)限時,記錄所述待訪問的內(nèi)存地址、所述內(nèi)存訪問模塊的標(biāo)識以及所述讀寫屬性。也就是說,若確定該內(nèi)存訪問模塊本次訪問不合法,則記錄本次訪問的信息,以便根據(jù)記錄的信息確定越界訪問內(nèi)存的模塊。示例的,監(jiān)控模塊記錄的信息如表2所示:表2內(nèi)存地址訪問合法性模塊標(biāo)識Addr1非法訪問模塊0具體實現(xiàn)中,若所述內(nèi)存訪問模塊的標(biāo)識不屬于待訪問的內(nèi)存地址的合法訪問條件中的模塊的標(biāo)識,則確定所述內(nèi)存訪問模塊的本次訪問非法。若所述內(nèi)存訪問模塊的標(biāo)識屬于待訪問的內(nèi)存地址的合法訪問條件中的模塊的標(biāo)識,則判斷所述內(nèi)存訪問命令的讀寫屬性是否符合合法訪問條件中的讀或?qū)憴?quán)限,若符合則所述內(nèi)存訪問模塊的本次訪問合法。否則,則確定所述內(nèi)存訪問模塊的本次訪問非法。本發(fā)明實施例提供的內(nèi)存監(jiān)控方法,預(yù)先生成合法訪問信息表,記錄被監(jiān)控的內(nèi)存地址的標(biāo)識以及每一個被監(jiān)控的內(nèi)存地址對應(yīng)的合法訪問條件。當(dāng)有模塊申請訪問內(nèi)存時,監(jiān)控模塊監(jiān)控其內(nèi)存訪問命令,根據(jù)訪問命令攜帶的待訪問內(nèi)存地址的地址信息確定待訪問的內(nèi)存地址的合法訪問條件。進而對比內(nèi)存訪問命令攜帶的本次訪問的讀寫屬性以及內(nèi)存訪問模塊的標(biāo)識與待訪問內(nèi)存地址的合法訪問條件,確定本次訪問是否合法。若本次訪問不合法,則記錄本次訪問的信息,即待訪問的內(nèi)存地址、內(nèi)存訪問模塊的標(biāo)識以及本次訪問的讀寫屬性之間的對應(yīng)關(guān)系。如此,在內(nèi)存越界訪問導(dǎo)致SoC出現(xiàn)異常后,可以根據(jù)監(jiān)控模塊記錄的內(nèi)存訪問的信息快速、準(zhǔn)確的確定出內(nèi)存非法訪問的模塊。上述主要從內(nèi)存訪問控制器的監(jiān)控模塊的工作過程的角度對本發(fā)明實施例提供的方案進行了介紹??梢岳斫獾氖?,內(nèi)存訪問控制器為了實現(xiàn)上述功能,其包含了執(zhí)行各個功能相應(yīng)的硬件結(jié)構(gòu)和/或軟件模塊。本領(lǐng)域技術(shù)人員應(yīng)該很容易意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,本發(fā)明能夠以硬件或硬件和計算機軟件的結(jié)合形式來實現(xiàn)。某個功能究竟以硬件還是計算機軟件驅(qū)動硬件的方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。本發(fā)明實施例可以根據(jù)上述方法示例對內(nèi)存訪問控制器進行功能模塊的劃分,例如,可以對應(yīng)各個功能劃分各個功能模塊,也可以將兩個或兩個以上的功能集成在一個處理模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。需要說明的是,本發(fā)明實施例中對模塊的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式。在采用對應(yīng)各個功能劃分各個功能模塊的情況下,圖4示出了上述實施例中所涉及的內(nèi)存訪問控制器的一種可能的結(jié)構(gòu)示意圖,內(nèi)存訪問控制器包括:獲取模塊201,判斷模塊202,記錄模塊203。獲取模塊201用于支持內(nèi)存訪問控制器20執(zhí)行圖3中的過程101以及步驟102;判斷模塊202用于支持內(nèi)存訪問控制器執(zhí)行圖3中的過程103;記錄模塊203用于支持內(nèi)存訪問控制器執(zhí)行圖3中的過程104。其中,上述方法實施例涉及的各步驟的所有相關(guān)內(nèi)容均可以援引到對應(yīng)功能模塊的功能描述,在此不再贅述。在采用集成的單元的情況下,圖5示出了上述實施例中所涉及的內(nèi)存訪問控制器的一種可能的結(jié)構(gòu)示意圖。內(nèi)存訪問控制器可以包括:處理模塊301、通信模塊302和存儲模塊303。處理模塊301用于對內(nèi)存訪問控制器的動作進行控制管理,例如,處理模塊301用于支持內(nèi)存訪問控制器執(zhí)行圖3中的過程101至104,和/或用于本文所描述的技術(shù)的其它過程。通信模塊302用于內(nèi)存訪問控制器與其他模塊間的通信。存儲模塊303,用于存儲內(nèi)存訪問控制器的程序代碼和數(shù)據(jù)。結(jié)合本發(fā)明公開內(nèi)容所描述的方法或者算法的步驟可以硬件的方式來實現(xiàn),也可以是由處理器執(zhí)行軟件指令的方式來實現(xiàn)。軟件指令可以由相應(yīng)的軟件模塊組成,軟件模塊可以被存放于RAM、閃存、ROM、可擦除可編程只讀存儲器(ErasableProgrammableROM,EPROM)、電可擦可編程只讀存儲器(ElectricallyEPROM,EEPROM)、寄存器、硬盤、移動硬盤、只讀光盤(CD-ROM)或者本領(lǐng)域熟知的任何其它形式的存儲介質(zhì)中。一種示例性的存儲介質(zhì)耦合至處理器,從而使處理器能夠從該存儲介質(zhì)讀取信息,且可向該存儲介質(zhì)寫入信息。當(dāng)然,存儲介質(zhì)也可以是處理器的組成部分。處理器和存儲介質(zhì)可以位于ASIC中。另外,該ASIC可以位于核心網(wǎng)接口設(shè)備中。當(dāng)然,處理器和存儲介質(zhì)也可以作為分立組件存在于核心網(wǎng)接口設(shè)備中。通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是一個物理模塊或多個物理模塊,即可以位于一個地方,或者也可以分布到多個不同地方??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一個內(nèi)存訪問控制器(可以是單片機,芯片等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,RandomAccessMemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準(zhǔn)。當(dāng)前第1頁1 2 3