專利名稱:一種外圍組件互連總線級(jí)壓力測(cè)試方法
技術(shù)領(lǐng)域:
本發(fā)明關(guān)于一種總線壓力測(cè)試方法,尤其關(guān)于一種外圍組件互連總線
(PCIBUS)級(jí)壓力測(cè)試方法。
背景技術(shù):
外圍組件互連總線(PCI BUS)是系統(tǒng)的基本總線之一,外圍組件互連 總線的性能,直接影響到系統(tǒng)的整體性能,因此,對(duì)外圍組件互連總線的測(cè) 試,是系統(tǒng)整體性能測(cè)試的一個(gè)重點(diǎn)。但是,在實(shí)際的測(cè)試中,外圍組件互 連總線的壓力測(cè)試本身受到某些因素的制約,如冗余遍歷、測(cè)試制具的限制 等等,如何全面、有效地測(cè)試外圍組件互連總線成為系統(tǒng)性能測(cè)試的一個(gè)難 點(diǎn)。
傳統(tǒng)的外圍組件互連總線壓力測(cè)試方案的缺陷在于
(1) 傳統(tǒng)的壓力測(cè)試方案大多是針對(duì)主板上的單一設(shè)備,如通用串 行總線(USB)、網(wǎng)絡(luò)適配卡(NIC)等,缺少基于整體外圍組件互連總線 的壓力測(cè)試方案。
(2) 在傳統(tǒng)的測(cè)試方法中,對(duì)于外圍組件互連總線(PCIBUS)的測(cè)試, 使用的都是軟件測(cè)試硬件的測(cè)試方法,比如使用外圍組件互連測(cè)試卡(PCI Test Card),通過上層的軟件操作來實(shí)現(xiàn)對(duì)外圍組件互連測(cè)試卡的操作,根 據(jù)回饋的信息來實(shí)現(xiàn)對(duì)外圍組件互連總線的檢測(cè),此種方法本質(zhì)上是通過軟 件層面來測(cè)試硬件層面,即傳統(tǒng)測(cè)試方法需要有特殊測(cè)試制具的支持,無法 適用于任何機(jī)型,測(cè)試局限性很大。
(3) 傳統(tǒng)測(cè)試方法無法涵蓋到對(duì)每條外圍組件互連總線的測(cè)試,測(cè)試 涵蓋率不夠。
(4) 傳統(tǒng)測(cè)試方法在測(cè)試時(shí)間上過長(zhǎng),例如對(duì)傳輸能力的測(cè)試,甚至 需要長(zhǎng)達(dá)IO分鐘左右的測(cè)試時(shí)間。
(5) 不同操作系統(tǒng)下的測(cè)試方法不統(tǒng)一,程序的兼容性差。
(6) 對(duì)外圍組件互連作直接內(nèi)存存取(Direct Memory Access, DMA)數(shù) 據(jù)傳輸測(cè)試需要在操作系統(tǒng)之上開辟出較大的連續(xù)物理內(nèi)存,目前由于受到 操作系統(tǒng)的限制無法開辟出如此大的連續(xù)物理內(nèi)存,使得目前的DMA傳輸 測(cè)試的覆蓋范圍及測(cè)試壓力遠(yuǎn)遠(yuǎn)達(dá)不到硬件上的測(cè)試要求。
(7) 缺少針對(duì)可延伸固件接口 (Extensible Firmware Interface,簡(jiǎn)稱EFI) 下外圍組件互連設(shè)備的壓力測(cè)試方案。
發(fā)明內(nèi)容
為了解決上述現(xiàn)有技術(shù)中的問題與缺陷,本發(fā)明的目的在于提供一種外 圍組件互連總線(PCI BUS)級(jí)壓力測(cè)試方法,用于外圍組件互連總線的整 體壓力測(cè)試。
本發(fā)明的一種外圍組件互連總線級(jí)壓力測(cè)試方法,包含以下步驟遍歷 系統(tǒng)中所有外圍組件互連總線;獲取系統(tǒng)整體外圍組件互連總線及外圍組件 互連設(shè)備的樹狀結(jié)構(gòu),并從中選擇一個(gè)外圍組件互連總線分支作為測(cè)試對(duì) 象;針對(duì)此測(cè)試對(duì)象進(jìn)行外圍組件互連總線的外圍組件互連功能測(cè)試、輸入 輸出功能測(cè)試及內(nèi)存映射功能測(cè)試;以及判斷系統(tǒng)中是否還有待測(cè)試的外圍 組件互連總線分支,若有,則繼續(xù)選擇一個(gè)外圍組件互連總線分支作為測(cè)試 對(duì)象進(jìn)行所述外圍組件互連總線的外圍組件互連功能測(cè)試、輸入輸出功能測(cè) 試及內(nèi)存映射功能測(cè)試直至所有的待測(cè)試的外圍組件互連總線分支測(cè)試完 成,否則結(jié)束測(cè)試。
本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法中,獲取系統(tǒng)整體外圍組件 互連總線及外圍組件互連設(shè)備的樹狀結(jié)構(gòu),包含以下步驟
(a)遍歷外圍組件互連總線0上的所有外圍組件互連設(shè)備及外圍組件 互連橋,并記錄;(b)選擇一個(gè)外圍組件互連橋,取得此外圍組件互連橋 的外圍組件互連空間,并分析外圍組件互連空間以得到此外圍組件互連橋所 連接的下一級(jí)外圍組件互連總線及此外圍組件互連橋所達(dá)到的最大總線深 度;(c)判斷下一級(jí)外圍組件互連總線是否達(dá)到此外圍組件互連橋的最大 總線深度,若未達(dá)到,則定位到下一級(jí)總線,并遍歷此總線,得到此總線上 的所有外圍組件互連設(shè)備及外圍組件互連橋并記錄,然后執(zhí)行步驟(b); (d)若達(dá)到,則判斷當(dāng)前的外圍組件互連總線上是否還存在其它外圍組件 互連橋,若存在,則執(zhí)行步驟(b);以及(e)若不存在,則判斷當(dāng)前的外
圍組件互連總線是否為外圍組件互連總線0,若是,則儲(chǔ)存遍歷結(jié)果,得到
系統(tǒng)整體外圍組件互連總線及外圍組件互連設(shè)備的樹狀結(jié)構(gòu),否則返回上一
級(jí)外圍組件互連總線,并執(zhí)行步驟(d)。
本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法中,選擇一個(gè)外圍組件互連 總線分支作為測(cè)試對(duì)象進(jìn)行外圍組件互連總線的外圍組件互連功能測(cè)試,包
含以下步驟
遍歷外圍組件互連總線分支下掛接的所有設(shè)備;并驗(yàn)證外圍組件互連總 線分支下掛接的第n個(gè)設(shè)備是否可以正常訪問,若無法正常訪問,報(bào)錯(cuò)并退 出測(cè)試;若可以訪問,則檢測(cè)外圍組件互連總線分支下掛接的第n個(gè)設(shè)備的 標(biāo)準(zhǔn)頭文件(standard header)配置空間是否可以正常訪問,若無法正常訪問, 報(bào)錯(cuò)并退出測(cè)試;若可以訪問,則分析所獲取的標(biāo)準(zhǔn)頭文件配置空間內(nèi)容, 驗(yàn)證外圍組件互連總線分支下掛接的第n個(gè)設(shè)備的每項(xiàng)數(shù)據(jù)信息是否可以成 功獲取,若無法獲取,則報(bào)錯(cuò)并退出測(cè)試;若可以獲取,則檢測(cè)外圍組件互 連總線分支下掛接的第n個(gè)設(shè)備的設(shè)備相關(guān)部件配置空間是否可以正常訪 問,若無法訪問,則報(bào)錯(cuò)并退出測(cè)試;若可以訪問,則判斷外圍組件互連總 線分支下是否掛接有第n+l個(gè)設(shè)備,若不存在第n+l個(gè)設(shè)備,則結(jié)束測(cè)試; 以及若存在第n+l個(gè)設(shè)備,則返回外圍組件互連總線分支下掛接的第n+l 個(gè)設(shè)備繼續(xù)進(jìn)行測(cè)試直至外圍組件互連總線分支下掛接的所有設(shè)備均被測(cè) 試完畢。
本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法中,選擇一個(gè)外圍組件互連 總線分支作為測(cè)試對(duì)象進(jìn)行外圍組件互連總線的輸入輸出功能測(cè)試,包含以 下步驟
檢測(cè)測(cè)試對(duì)象是否支持輸入輸出映射功能,如果支持,則獲取測(cè)試對(duì)象 映射的各個(gè)輸入輸出空間地址;讀取當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸入輸出空 間的數(shù)據(jù)并保存,并且向第n個(gè)輸入輸出空間傳輸數(shù)據(jù),然后讀取第n個(gè)輸 入輸出空間中的數(shù)據(jù);驗(yàn)證傳輸?shù)臄?shù)據(jù)與讀出的數(shù)據(jù)是否一致,若不一致, 報(bào)錯(cuò)并退出測(cè)試,若一致,則將傳輸?shù)臄?shù)據(jù)按照位(bit)取反后傳輸至第n 個(gè)輸入輸出空間,然后讀取第n個(gè)輸入輸出空間中的數(shù)據(jù),并驗(yàn)證傳輸?shù)臄?shù) 據(jù)與讀出的數(shù)據(jù)是否一致,若不一致,則報(bào)錯(cuò)并退出測(cè)試,若一致,則判斷
所需傳輸?shù)臄?shù)據(jù)是否全部傳輸完畢,若還有需要傳輸?shù)臄?shù)據(jù),則繼續(xù)向測(cè)試
對(duì)象映射的第n個(gè)輸入輸出空間進(jìn)行傳輸,若數(shù)據(jù)傳輸完畢,則恢復(fù)當(dāng)前測(cè) 試對(duì)象映射的第n個(gè)輸入輸出空間的數(shù)據(jù);以及判斷測(cè)試對(duì)象是否還存在第 n+l個(gè)輸入輸出空間,如果存在,則返回執(zhí)行讀取當(dāng)前測(cè)試對(duì)象映射的第n + 1個(gè)輸入輸出空間的數(shù)據(jù)并保存的步驟,否則結(jié)束測(cè)試。其中所述的驗(yàn)證 傳輸?shù)臄?shù)據(jù)與讀出的數(shù)據(jù)是否一致是按照數(shù)據(jù)的位(bit)進(jìn)行比較。
本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法中,選擇一外圍組件互連總 線分支作為測(cè)試對(duì)象進(jìn)行外圍組件互連總線的內(nèi)存映射功能測(cè)試,包含以下 步驟
獲取支持內(nèi)存映射的測(cè)試對(duì)象所映射的物理內(nèi)存空間首地址與映射長(zhǎng) 度,并保存測(cè)試對(duì)象內(nèi)存映射區(qū)域的數(shù)據(jù);分配與映射物理內(nèi)存相當(dāng)?shù)南到y(tǒng) 物理內(nèi)存并進(jìn)行測(cè)試數(shù)據(jù)的填充,而后對(duì)測(cè)試對(duì)象映射物理內(nèi)存進(jìn)行初始 化,且以從(slave)方式將分配的系統(tǒng)物理內(nèi)存的數(shù)據(jù)傳輸至測(cè)試對(duì)象映射 物理內(nèi)存;讀取測(cè)試對(duì)象映射物理內(nèi)存的數(shù)據(jù),與分配的系統(tǒng)物理內(nèi)存的數(shù) 據(jù)進(jìn)行比較,若數(shù)據(jù)不相同,則報(bào)錯(cuò)并退出測(cè)試,若數(shù)據(jù)相同,則對(duì)測(cè)試對(duì) 象映射物理內(nèi)存進(jìn)行初始化并將測(cè)試對(duì)象映射物理內(nèi)存用測(cè)試數(shù)據(jù)進(jìn)行填 充;以及初始化分配的系統(tǒng)物理內(nèi)存,以主(master)方式將測(cè)試對(duì)象的映 射物理內(nèi)存的數(shù)據(jù)傳輸至分配的系統(tǒng)物理內(nèi)存,并讀取分配的系統(tǒng)物理內(nèi)存 的數(shù)據(jù),且與測(cè)試對(duì)象的映射物理內(nèi)存的數(shù)據(jù)進(jìn)行比較,若數(shù)據(jù)相同,則結(jié) 束測(cè)試,否則報(bào)錯(cuò)并退出測(cè)試。
此外,本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法可適應(yīng)于不同的操作 系統(tǒng)進(jìn)行測(cè)試,其中操作系統(tǒng)包含DOS操作系統(tǒng)、Linux操作系統(tǒng)、 Windows操作系統(tǒng)以及EFI操作系統(tǒng)。
綜上所述,本發(fā)明的優(yōu)點(diǎn)在于
本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法針對(duì)系統(tǒng)中所有的外圍組 件互連總線提出了統(tǒng)一的壓力測(cè)試方案,彌補(bǔ)了現(xiàn)有技術(shù)對(duì)外圍組件互連總 線級(jí)壓力測(cè)試的空缺,并可應(yīng)用于EFI環(huán)境下的外圍組件互連總線的壓力測(cè) 試,其靈活地利用EFI自身特點(diǎn),使測(cè)試壓力與其它操作系統(tǒng)相比有顯著的 提升。
同時(shí),本發(fā)明可以實(shí)現(xiàn)對(duì)不同的操作系統(tǒng)采用同一種核心測(cè)試算法,例
如對(duì)DOS、 Windows、 Linux、 EFI等操作系統(tǒng)進(jìn)行了綜合全面的考慮,提出 了適用于各操作系統(tǒng)的核心的測(cè)試算法,并能根據(jù)不同操作系統(tǒng)的特點(diǎn)靈活 調(diào)整測(cè)試流程,并且測(cè)試無需依賴任何測(cè)試制具,擺脫了對(duì)測(cè)試制具的要求 限制,并可適用于任何機(jī)型。
此外,本發(fā)明的核心測(cè)試算法從外圍組件互連功能測(cè)試、輸入輸出功能 測(cè)試及內(nèi)存映射功能測(cè)試三個(gè)方面全面考慮,增加了測(cè)試的全面性及完整 性,且測(cè)試策略兼顧測(cè)試壓力及測(cè)試時(shí)間等多個(gè)方面,即可節(jié)省測(cè)試時(shí)間, 又提升了測(cè)試壓力。
圖1為本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法的整體測(cè)試流程圖; 圖2為本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法中獲取系統(tǒng)整體外圍 組件互連總線及外圍組件互連設(shè)備的樹狀結(jié)構(gòu)的方法流程圖3為本發(fā)明中外圍組件互連總線的外圍組件互連功能測(cè)試方法流程
圖4為本發(fā)明中外圍組件互連總線的輸入輸出功能測(cè)試方法流程圖; 圖5為本發(fā)明中外圍組件互連總線的內(nèi)存映射功能測(cè)試方法流程圖。 其中,附圖標(biāo)記說明如下-步驟100 遍歷系統(tǒng)中所有外圍組件互連總線
步驟101 獲取系統(tǒng)整體外圍組件互連設(shè)備的樹狀結(jié)構(gòu),并從中選擇一
個(gè)外圍組件互連總線分支作為測(cè)試對(duì)象
步驟102 針對(duì)測(cè)試對(duì)象進(jìn)行外圍組件總線的外圍組件互連功能測(cè)試 步驟103 針對(duì)測(cè)試對(duì)象進(jìn)行外圍組件總線的輸入輸出功能測(cè)試 步驟104 針對(duì)測(cè)試對(duì)象進(jìn)行外圍組件總線的內(nèi)存映射功能測(cè)試 步驟105 判斷系統(tǒng)中是否還有待測(cè)的外圍組件互連總線分支 步驟120 遍歷外圍組件互連總線O上的所有外圍組件互連設(shè)備及外圍
組件互連橋,并記錄
步驟121 選定其中某一外圍組件互連橋并取得外圍組件互連橋的外
圍組件互連空間
步驟122 分析外圍組件互連空間以得到外圍組件互連橋所連接下一
級(jí)外圍組件互連總線及此外圍組件互連橋所達(dá)到的最大總線深度
步驟123 下一級(jí)總線是否達(dá)到外圍組件互連橋的最大總線深度 步驟124當(dāng)前的外圍組件互連總線上是否還存在其它外圍組件互連橋 步驟125 定位到下一級(jí)總線
步驟126 遍歷此總線得到此總線上的所有外圍組件互連設(shè)備及外圍 組件互連橋并記錄
步驟127當(dāng)前的外圍組件互連總線是否為外圍組件互連總線0 步驟128儲(chǔ)存遍歷結(jié)果,得到樹狀結(jié)構(gòu) 步驟129 返回上一級(jí)外圍組件互連總線
步驟131 獲取測(cè)試對(duì)象并遍歷此外圍組件互連總線分支下掛接的所 有設(shè)備
步驟132 驗(yàn)證外圍組件互連總線分支下掛接的第n個(gè)設(shè)備是否可以正 常訪問
步驟133 檢測(cè)外圍組件互連總線分支下掛接的第n個(gè)設(shè)備的標(biāo)準(zhǔn)頭文
件配置空間是否可以正常訪問
步驟134分析所獲取的標(biāo)準(zhǔn)頭文件配置空間內(nèi)容,驗(yàn)證外圍組件互連
總線分支下掛接的第n個(gè)設(shè)備的每項(xiàng)數(shù)據(jù)信息是否可以成功獲取
步驟135 檢測(cè)外圍組件互連總線分支下掛接的第n個(gè)設(shè)備的設(shè)備相關(guān)
部件配置空間是否可以正常訪問
步驟136該外圍組件互連總線分支下是否掛接有第n+l個(gè)設(shè)備
步驟141 獲取測(cè)試對(duì)象,并檢測(cè)測(cè)試對(duì)象是否支持輸入輸出映射功能
步驟142 獲取測(cè)試對(duì)象映射的各個(gè)輸入輸出空間地址
步驟143 讀取當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸入輸出空間的數(shù)據(jù)并保存
步驟144 向測(cè)試對(duì)象的第n個(gè)輸入輸出空間傳輸數(shù)據(jù)并讀取
步驟145 按位比較傳輸?shù)臄?shù)據(jù)與讀出的數(shù)據(jù)是否一致
步驟146將傳輸?shù)臄?shù)據(jù)按位取反后傳輸至第n個(gè)輸入輸出空間,然后
讀取第n個(gè)輸入輸出空間中的數(shù)據(jù)
步驟147 按位比較傳輸數(shù)據(jù)與讀出數(shù)據(jù)是否一致 步驟148 所需傳輸?shù)臄?shù)據(jù)是否全部傳輸完畢 步驟149 獲取下一個(gè)需要傳輸?shù)臄?shù)據(jù)
步驟150 步驟151 步驟160 步驟161 步驟162 步驟163
內(nèi)存進(jìn)行初始化 步驟164
映射物理內(nèi)存 步驟165
比較
步驟166 步驟167 步驟168 步驟169 系統(tǒng)物理內(nèi)存 170
恢復(fù)當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸入輸出空間中的數(shù)據(jù)
判斷測(cè)試對(duì)象是否還存在第n+l個(gè)輸入輸出空間
獲取測(cè)試對(duì)象并判斷是否支持內(nèi)存映射
得到測(cè)試對(duì)象所映射的物理內(nèi)存
分配與映射物理內(nèi)存相當(dāng)?shù)南到y(tǒng)物理內(nèi)存
對(duì)分配的系統(tǒng)物理內(nèi)存進(jìn)行填充,并對(duì)測(cè)試對(duì)象映射的物理
以從(Slave)方式將系統(tǒng)物理內(nèi)存的數(shù)據(jù)傳輸至測(cè)試對(duì)象
讀取測(cè)試對(duì)象映射物理內(nèi)存并與分配的系統(tǒng)物理內(nèi)存進(jìn)行
對(duì)測(cè)試對(duì)象映射物理內(nèi)存進(jìn)行初始化 將測(cè)試對(duì)象映射物理內(nèi)存用測(cè)試數(shù)據(jù)進(jìn)行填充 對(duì)分配的系統(tǒng)物理內(nèi)存進(jìn)行初始化
以主(Master)方式將測(cè)試對(duì)象的映射物理內(nèi)存數(shù)據(jù)傳輸至 讀取系統(tǒng)物理內(nèi)存并與測(cè)試對(duì)象的映射物理內(nèi)存進(jìn)行比較
具體實(shí)施例方式
以下,將結(jié)合附圖部分對(duì)本發(fā)明的較佳實(shí)施方式作詳細(xì)說明。 請(qǐng)參考圖1,圖中表示了本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法的 整體測(cè)試流程圖。如圖所示,本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法整 體包含如下步驟,首先,遍歷系統(tǒng)中所有的外圍組件互連總線(PCI BUS)
(參見步驟100),獲取系統(tǒng)整體外圍組件互連總線的樹狀結(jié)構(gòu),并從中選 擇一個(gè)外圍組件互連總線分支作為測(cè)試對(duì)象(參見步驟101),針對(duì)選擇的 測(cè)試對(duì)象調(diào)用外圍組件互連總線的外圍組件互連功能測(cè)試方法進(jìn)行功能檢 測(cè)(參見步驟102),其中可判斷此功能檢測(cè)中是否發(fā)現(xiàn)問題(附圖中未示), 如果發(fā)現(xiàn)問題,則報(bào)錯(cuò)并退出測(cè)試,沒有發(fā)現(xiàn)問題,則判斷此測(cè)試對(duì)象是否 支持輸入輸出(1nput/0啤ut,簡(jiǎn)稱IO)映射功能(附圖中未示),不支持, 則可選擇下一測(cè)試對(duì)象,如果支持,則針對(duì)此測(cè)試對(duì)象調(diào)用外圍組件互連總
線的輸入輸出功能測(cè)試方法進(jìn)行功能檢測(cè)(參見步驟103),其中可判斷此 功能檢測(cè)中是否發(fā)現(xiàn)問題(附圖中未示),如果發(fā)現(xiàn)問題,則報(bào)錯(cuò)并退出測(cè)
試,沒有問題,則判斷此測(cè)試對(duì)象是否支持內(nèi)存映射(Memory Map)功能 (附圖中未示),不支持,則可選擇下一測(cè)試對(duì)象,如果支持,則針對(duì)此測(cè) 試對(duì)象調(diào)用外圍組件互連總線的內(nèi)存映射功能測(cè)試方法進(jìn)行功能檢測(cè)(參見 步驟104),其中也可判斷此功能檢測(cè)中是否發(fā)現(xiàn)問題(附圖中未示),如 果發(fā)現(xiàn)問題,則報(bào)錯(cuò)并退出測(cè)試,沒有問題,則判斷系統(tǒng)中是否還有未測(cè)試 到的外圍組件互連總線分支(參見步驟105),如果有,則返回執(zhí)行步驟101, 繼續(xù)選擇一個(gè)外圍組件互連總線分支作為測(cè)試對(duì)象進(jìn)行上述的外圍組件互 連總線的外圍組件互連功能測(cè)試、輸入輸出功能測(cè)試及內(nèi)存映射功能測(cè)試直 至所有的待測(cè)試的外圍組件互連總線分支測(cè)試完成,如果沒有,則結(jié)束整個(gè) 測(cè)試。
現(xiàn)在請(qǐng)參考圖2,此圖為本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法中 獲取系統(tǒng)整體外圍組件互連總線及外圍組件互連設(shè)備的樹狀結(jié)構(gòu)的方法流 程圖,如圖所示,本發(fā)明中獲取系統(tǒng)整體外圍組件互連總線及外圍組件互連 設(shè)備的樹狀結(jié)構(gòu)的方法包含以下步驟遍歷外圍組件互連總線0上的所有外 圍組件互連設(shè)備及外圍組件互連橋,并記錄(參見步驟120);選定其中某 一外圍組件互連橋并取得外圍組件互連橋的外圍組件互連空間(參見步驟
121) ,分析外圍組件互連空間以得到此外圍組件互連橋所連接的下一級(jí)外 圍組件互連總線及此外圍組件互連橋所達(dá)到的最大總線深度(參見步驟
122) ,判斷下一級(jí)外圍組件互連總線是否達(dá)到此外圍組件互連橋的最大總 線深度(參見步驟123);若未達(dá)到最大總線深度,則定位到下一級(jí)總線(參 見步驟125),并遍歷此總線,得到此總線上的所有外圍組件互連設(shè)備及外 圍組件互連橋并記錄(參見步驟126),然后返回并執(zhí)行步驟121;若已達(dá) 到最大總線深度,則判斷當(dāng)前的外圍組件互連總線上是否還存在其它外圍組 件互連橋(參見步驟124),如果存在其它外圍組件互連橋,則執(zhí)行步驟121, 若不存在其它外圍組件互連橋,則判斷當(dāng)前的外圍組件互連總線是否為外圍
組件互連總線0 (參見步驟127),是,則儲(chǔ)存遍歷結(jié)果,得到系統(tǒng)整體外 圍組件互連總線及外圍組件互連設(shè)備的樹狀結(jié)構(gòu)(參見步驟128),否則返 回上一級(jí)外圍組件互連總線(參見步驟129),并執(zhí)行步驟124。
現(xiàn)在請(qǐng)參考圖3,此圖為本發(fā)明中外圍組件互連總線的外圍組件互連功 能測(cè)試方法流程圖,如圖所示,本發(fā)明的外圍組件互連總線的外圍組件互連 功能測(cè)試方法包含以下步驟
獲取測(cè)試對(duì)象(即某一條外圍組件互連總線分支)并遍歷此外圍組件互 連總線分支下所掛接的所有設(shè)備(參見步驟131),驗(yàn)證此被測(cè)外圍組件互
連總線下掛接的第n個(gè)設(shè)備是否可以正常訪問(參見步驟132),若無法正 常訪問,則報(bào)錯(cuò)并退出測(cè)試;若可以正常訪問,則檢測(cè)此被測(cè)外圍組件互連 總線下掛接的第n個(gè)設(shè)備的標(biāo)準(zhǔn)頭文件(standard header)配置空間是否可以 正常訪問(參見步驟133),若無法正常訪問,則報(bào)錯(cuò)并退出測(cè)試;若可以 正常訪問,則分析所獲取的標(biāo)準(zhǔn)頭文件(standardheader)配置空間內(nèi)容,驗(yàn) 證此被測(cè)外圍組件互連總線下掛接的第n個(gè)設(shè)備的各項(xiàng)數(shù)據(jù)信息是否可以成 功獲取(參見步驟134),若無法獲取,則報(bào)錯(cuò)并退出測(cè)試;若可以獲取, 則檢測(cè)此被測(cè)外圍組件互連總線下掛接的第n個(gè)設(shè)備的設(shè)備相關(guān)部件
(Device dependent Part)的配置空間是否可以正常訪問(參見步驟135), 若無法正常訪問,則報(bào)錯(cuò)并退出測(cè)試;若可以正常訪問,則判斷此被測(cè)外圍 組件互連總線下是否還掛接有第n+l個(gè)設(shè)備(參見步驟136),若不存在第 n+l個(gè)設(shè)備,則結(jié)束測(cè)試;若存在第n+l個(gè)設(shè)備,則執(zhí)行步驟132,以對(duì) 第n+l個(gè)設(shè)備繼續(xù)進(jìn)行測(cè)試直至此被測(cè)外圍組件互連總線下掛接的所有設(shè) 備均被檢測(cè)完畢。
現(xiàn)在請(qǐng)參考圖4,此圖為本發(fā)明中外圍組件互連總線的輸入輸出功能測(cè) 試方法流程圖,如圖所示,本發(fā)明的外圍組件互連總線的輸入輸出功能測(cè)試 方法包含以下步驟
首先,獲取測(cè)試對(duì)象(即某一條外圍組件互連總線分支上所連接的待測(cè) 外圍組件互連設(shè)備),并檢測(cè)測(cè)試對(duì)象是否支持輸入輸出映射功能(參見步 驟141),若不支持,則退出測(cè)試;若支持,則獲取測(cè)試對(duì)象映射的各個(gè)輸 入輸出空間地址(參見步驟142),讀取當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸入輸 出空間中的數(shù)據(jù)并保存(參見步驟143),并且向當(dāng)前測(cè)試對(duì)象映射的第n 個(gè)輸入輸出空間傳輸測(cè)試數(shù)據(jù),并讀取當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸入輸出 空間中的數(shù)據(jù)(參見步驟144),按位(bit)比較驗(yàn)證傳輸?shù)臄?shù)據(jù)與讀出的 數(shù)據(jù)是否一致(參見步驟145),若不一致,則恢復(fù)當(dāng)前測(cè)試對(duì)象映射的第
n個(gè)輸入輸出空間中的數(shù)據(jù)(參見步驟150),并報(bào)錯(cuò)且退出測(cè)試;若一致, 則按照位(bit)將傳輸?shù)臏y(cè)試數(shù)據(jù)取反,并向當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸 入輸出空間傳輸取反后的數(shù)據(jù),然后讀取當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸入輸 出空間中的數(shù)據(jù)(參見步驟146),再按位(bit)比較驗(yàn)傳輸?shù)臄?shù)據(jù)與讀出 的數(shù)據(jù)是否一致(參見步驟147),若不一致,則恢復(fù)當(dāng)前測(cè)試對(duì)象映射的 第n個(gè)輸入輸出空間中的數(shù)據(jù)(參見步驟150),并報(bào)錯(cuò)且退出測(cè)試;若一 致,則判斷所需傳輸?shù)臄?shù)據(jù)是否全部傳輸完畢(參見步驟148),若沒有傳 輸完畢,則獲取下一個(gè)需要傳輸?shù)臄?shù)據(jù)(參見步驟149),并執(zhí)行步驟144; 如果數(shù)據(jù)全部傳輸完畢,則恢復(fù)當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸入輸出空間中 的數(shù)據(jù)(參見步驟150),并判斷測(cè)試對(duì)象是否還存在第n+l個(gè)輸入輸出空 間(參見步驟151),若不存在,則結(jié)束測(cè)試;若存在,則執(zhí)行步驟143, 直至所有的輸入輸出空間被測(cè)試完畢。
現(xiàn)在請(qǐng)參考圖5,此圖為本發(fā)明中外圍組件互連總線的內(nèi)存映射功能測(cè) 試方法流程圖,如圖所示,本發(fā)明的外圍組件互連總線的內(nèi)存映射功能測(cè)試 方法包含以下步驟
獲取測(cè)試對(duì)象(即某一條外圍組件互連總線分支上所連接的待測(cè)外圍組 件互連設(shè)備)并判斷測(cè)試對(duì)象是否支持內(nèi)存映射(Memory Map)功能(參 見步驟160),若不支持,則退出測(cè)試;若支持,則獲取此測(cè)試對(duì)象所映射 的物理內(nèi)存空間首地址與映射長(zhǎng)度,并保存此測(cè)試對(duì)象內(nèi)存映射區(qū)域的數(shù)據(jù)
(參見步驟161),分配與映射物理內(nèi)存相當(dāng)?shù)南到y(tǒng)物理內(nèi)存(參見步驟162), 此步驟162中分配的系統(tǒng)物理內(nèi)存的區(qū)塊大小優(yōu)選為與測(cè)試對(duì)象映射的內(nèi)存 空間的大小一致;而后對(duì)系統(tǒng)物理內(nèi)存進(jìn)行測(cè)試數(shù)據(jù)的填充,并對(duì)測(cè)試對(duì)象 映射的物理內(nèi)存進(jìn)行初始化(參見步驟163),且以從(slave)方式將分配 的系統(tǒng)物理內(nèi)存的數(shù)據(jù)傳輸至測(cè)試對(duì)象映射物理內(nèi)存(參見步驟164),讀 取測(cè)試對(duì)象映射物理內(nèi)存的數(shù)據(jù),與分配的系統(tǒng)物理內(nèi)存的數(shù)據(jù)進(jìn)行比較
(參見步驟165),如果數(shù)據(jù)不相同,則報(bào)錯(cuò)并退出測(cè)試;如果數(shù)據(jù)相同, 則對(duì)測(cè)試對(duì)象映射物理內(nèi)存進(jìn)行初始化(參見步驟166),將測(cè)試對(duì)象映射 物理內(nèi)存用測(cè)試數(shù)據(jù)進(jìn)行填充(參見步驟167),并對(duì)分配的系統(tǒng)物理內(nèi)存 進(jìn)行初始化(參見步驟168),以主(master)方式將測(cè)試對(duì)象的映射物理 內(nèi)存的數(shù)據(jù)傳輸至分配的系統(tǒng)物理內(nèi)存(參見步驟169),讀取分配的系統(tǒng)
物理內(nèi)存的數(shù)據(jù),且與測(cè)試對(duì)象的映射物理內(nèi)存的數(shù)據(jù)進(jìn)行比較(參見步驟
170),若數(shù)據(jù)不相同,則報(bào)錯(cuò)并退出測(cè)試;若數(shù)據(jù)相同,則結(jié)束測(cè)試。
本發(fā)明的外圍組件互連總線級(jí)壓力測(cè)試方法可適應(yīng)于不同的操作系統(tǒng) 進(jìn)行測(cè)試,其中操作系統(tǒng)包含DOS操作系統(tǒng),外圍組件互連總線的傳輸能
力測(cè)試需要對(duì)系統(tǒng)分配物理內(nèi)存,而DOS系統(tǒng)中可直接訪問物理內(nèi)存的地 址;Linux操作系統(tǒng),通過增加多線程支持以及增加一個(gè)中間驅(qū)動(dòng)層用于對(duì) 物理內(nèi)存的分配及訪問,進(jìn)而實(shí)現(xiàn)本發(fā)明的測(cè)試方法;Windows操作系統(tǒng), 通過增加多線程支持以及增加兩個(gè)中間驅(qū)動(dòng)層,其中一個(gè)用于對(duì)外圍組件互 連設(shè)備的操作,另一個(gè)用于對(duì)物理內(nèi)存的分配及訪問,進(jìn)而實(shí)現(xiàn)本發(fā)明的測(cè) 試方法;以及EFI操作系統(tǒng),通過直接對(duì)物理內(nèi)存的操作,對(duì)大容量數(shù)據(jù)的 傳輸使用最大限度的連續(xù)物理內(nèi)存;并通過操作系統(tǒng)外圍組件互連總線驅(qū)動(dòng) 程序?qū)ν鈬M件互連總線進(jìn)行測(cè)試,進(jìn)而實(shí)現(xiàn)了本發(fā)明的測(cè)試方法,同時(shí)保 證在EFI系統(tǒng)環(huán)境下對(duì)外圍組件互連總線的測(cè)試壓力達(dá)到最大。
雖然本發(fā)明以前述的較佳實(shí)施方式揭示如上,然而其并非用以限定本發(fā) 明。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)意識(shí)到在不脫離本發(fā)明所附的權(quán)利要求所揭示的 本發(fā)明的范圍和精神的情況下,所做的更動(dòng)與潤(rùn)飾,均屬本發(fā)明的權(quán)利要求 的保護(hù)范圍之內(nèi)。關(guān)于本發(fā)明所界定的保護(hù)范圍請(qǐng)參考所附的權(quán)利要求書。
權(quán)利要求
1、一種外圍組件互連總線級(jí)壓力測(cè)試方法,應(yīng)用于外圍組件互連總線的整體壓力測(cè)試中,該方法包含以下步驟遍歷系統(tǒng)中所有外圍組件互連總線;獲取系統(tǒng)整體外圍組件互連總線及外圍組件互連設(shè)備的樹狀結(jié)構(gòu),并從中選擇一外圍組件互連總線分支作為測(cè)試對(duì)象;針對(duì)該測(cè)試對(duì)象進(jìn)行外圍組件互連總線的外圍組件互連功能測(cè)試、輸入輸出功能測(cè)試及內(nèi)存映射功能測(cè)試;以及判斷系統(tǒng)中是否還有待測(cè)試的外圍組件互連總線分支,若有,則繼續(xù)選擇一外圍組件互連總線分支作為測(cè)試對(duì)象進(jìn)行所述外圍組件互連總線的外圍組件互連功能測(cè)試、輸入輸出功能測(cè)試及內(nèi)存映射功能測(cè)試直至所有的待測(cè)試的外圍組件互連總線分支測(cè)試完成,否則結(jié)束測(cè)試。
2、 如權(quán)利要求1所述的外圍組件互連總線級(jí)壓力測(cè)試方法,其中獲取 該系統(tǒng)整體外圍組件互連總線及外圍組件互連設(shè)備的樹狀結(jié)構(gòu)包含以下步驟(a) 遍歷外圍組件互連總線0上的所有外圍組件互連設(shè)備及外圍組件 互連橋,并記錄;(b) 選擇一外圍組件互連橋,取得該外圍組件互連橋的外圍組件互連 空間,并分析該外圍組件互連空間以得到該外圍組件互連橋所連接的下一級(jí) 外圍組件互連總線及該外圍組件互連橋所達(dá)到的最大總線深度;(c) 判斷該下一級(jí)外圍組件互連總線是否達(dá)到該外圍組件互連橋的最 大總線深度,若未達(dá)到,則定位到該下一級(jí)總線,并遍歷該總線,得到該總 線上的所有外圍組件互連設(shè)備及外圍組件互連橋并記錄,然后執(zhí)行步驟(b);(d) 若達(dá)到,則判斷當(dāng)前的外圍組件互連總線上是否還存在其它外圍 組件互連橋,若存在,則執(zhí)行步驟(b);以及(e) 若不存在,則判斷該當(dāng)前的外圍組件互連總線是否為外圍組件互 連總線0,若是,則儲(chǔ)存遍歷結(jié)果,得到系統(tǒng)整體外圍組件互連總線及外圍 組件互連設(shè)備的樹狀結(jié)構(gòu),否則返回上一級(jí)外圍組件互連總線,并執(zhí)行步驟(d)。
3、 如權(quán)利要求1所述的外圍組件互連總線級(jí)壓力測(cè)試方法,其中選擇 一外圍組件互連總線分支作為測(cè)試對(duì)象進(jìn)行外圍組件互連總線的外圍組件 互連功能測(cè)試,包含以下步驟遍歷該外圍組件互連總線分支下掛接的所有設(shè)備; 驗(yàn)證該外圍組件互連總線分支下掛接的第n個(gè)設(shè)備是否可以正常訪問,若無法正常訪問,報(bào)錯(cuò)并退出測(cè)試;若可以訪問,則檢測(cè)該外圍組件互連總線分支下掛接的第n個(gè)設(shè)備的標(biāo) 準(zhǔn)頭文件配置空間是否可以正常訪問,若無法正常訪問,報(bào)錯(cuò)并退出測(cè)試;若可以訪問,則分析所獲取的標(biāo)準(zhǔn)頭文件配置空間內(nèi)容,驗(yàn)證該外圍組 件互連總線分支下掛接的第n個(gè)設(shè)備的每項(xiàng)數(shù)據(jù)信息是否可以成功獲取,若 無法獲取,則報(bào)錯(cuò)并退出測(cè)試;若可以獲取,則檢測(cè)該外圍組件互連總線分支下掛接的第n個(gè)設(shè)備的設(shè) 備相關(guān)部件配置空間是否可以正常訪問,若無法訪問,則報(bào)錯(cuò)并退出測(cè)試;若可以訪問,則判斷該外圍組件互連總線分支下是否掛接有第n+l個(gè) 設(shè)備,若不存在第n+l個(gè)設(shè)備,則結(jié)束測(cè)試;以及若存在第n+l個(gè)設(shè)備,則返回該外圍組件互連總線分支下掛接的第n +1個(gè)設(shè)備繼續(xù)進(jìn)行測(cè)試直至該外圍組件互連總線分支下掛接的所有設(shè)備均 被測(cè)試完畢。
4、 如權(quán)利要求1所述的外圍組件互連總線級(jí)壓力測(cè)試方法,其中選擇 一外圍組件互連總線分支作為測(cè)試對(duì)象進(jìn)行外圍組件互連總線的輸入輸出 功能測(cè)試,包含以下步驟檢測(cè)該測(cè)試對(duì)象是否支持輸入輸出映射功能,如果支持,則獲取該測(cè)試 對(duì)象映射的各個(gè)輸入輸出空間地址;讀取當(dāng)前測(cè)試對(duì)象映射的第n個(gè)輸入輸出空間的數(shù)據(jù)并保存,并且向該 第n個(gè)輸入輸出空間傳輸數(shù)據(jù),然后讀取該第n個(gè)輸入輸出空間中的數(shù)據(jù);驗(yàn)證該傳輸?shù)臄?shù)據(jù)與該讀出的數(shù)據(jù)是否一致,若不一致,報(bào)錯(cuò)并退出測(cè) 試,若一致,則將該傳輸?shù)臄?shù)據(jù)按照位取反后傳輸至該第n個(gè)輸入輸出空間, 然后讀取該第n個(gè)輸入輸出空間中的數(shù)據(jù),并驗(yàn)證該傳輸?shù)臄?shù)據(jù)與該讀出的 數(shù)據(jù)是否一致,若不一致,則報(bào)錯(cuò)并退出測(cè)試,若一致,則判斷所需傳輸?shù)?數(shù)據(jù)是否全部傳輸完畢,若還有需要傳輸?shù)臄?shù)據(jù),則繼續(xù)向該測(cè)試對(duì)象映射的第n個(gè)輸入輸出空間進(jìn)行傳輸,若數(shù)據(jù)傳輸完畢,則恢復(fù)該當(dāng)前測(cè)試對(duì)象 映射的第n個(gè)輸入輸出空間的數(shù)據(jù);以及判斷該測(cè)試對(duì)象是否還存在第n+l個(gè)輸入輸出空間,如果存在,則返 回執(zhí)行讀取當(dāng)前測(cè)試對(duì)象映射的第n+l個(gè)輸入輸出空間的數(shù)據(jù)并保存的步 驟,否則結(jié)束測(cè)試。
5、 如權(quán)利要求4所述的外圍組件互連總線級(jí)壓力測(cè)試方法,其中所述 的驗(yàn)證該傳輸?shù)臄?shù)據(jù)與該讀出的數(shù)據(jù)是否一致是按照數(shù)據(jù)的位進(jìn)行比較。
6、 如權(quán)利要求1所述的外圍組件互連總線級(jí)壓力測(cè)試方法,其中選擇 一外圍組件互連總線分支作為測(cè)試對(duì)象進(jìn)行外圍組件互連總線的內(nèi)存映射 功能測(cè)試,包含以下步驟獲取支持內(nèi)存映射的測(cè)試對(duì)象所映射的物理內(nèi)存空間首地址與映射長(zhǎng) 度,并保存該測(cè)試對(duì)象內(nèi)存映射區(qū)域的數(shù)據(jù);分配與該映射物理內(nèi)存相當(dāng)?shù)囊幌到y(tǒng)物理內(nèi)存并進(jìn)行測(cè)試數(shù)據(jù)的填充, 而后對(duì)該測(cè)試對(duì)象映射物理內(nèi)存進(jìn)行初始化,且以從方式將分配的該系統(tǒng)物 理內(nèi)存的數(shù)據(jù)傳輸至該測(cè)試對(duì)象映射物理內(nèi)存;讀取該測(cè)試對(duì)象映射物理內(nèi)存的數(shù)據(jù),與分配的該系統(tǒng)物理內(nèi)存的數(shù)據(jù) 進(jìn)行比較,若數(shù)據(jù)不相同,貝服錯(cuò)并退出測(cè)試,若數(shù)據(jù)相同,則對(duì)該測(cè)試對(duì) 象映射物理內(nèi)存進(jìn)行初始化并將該測(cè)試對(duì)象映射物理內(nèi)存用測(cè)試數(shù)據(jù)進(jìn)行 填充;以及初始化該分配的系統(tǒng)物理內(nèi)存,以主方式將該測(cè)試對(duì)象的映射物理內(nèi)存 的數(shù)據(jù)傳輸至該分配的系統(tǒng)物理內(nèi)存,并讀取該分配的系統(tǒng)物理內(nèi)存的數(shù) 據(jù),且與該測(cè)試對(duì)象的映射物理內(nèi)存的數(shù)據(jù)進(jìn)行比較,若數(shù)據(jù)相同,則結(jié)束 測(cè)試,否則報(bào)錯(cuò)并退出測(cè)試。
7、 如權(quán)利要求6所述的外圍組件互連總線級(jí)壓力測(cè)試方法,其中分配 的該系統(tǒng)物理內(nèi)存的區(qū)塊大小優(yōu)選為與該測(cè)試對(duì)象映射的內(nèi)存空間的大小 一致。
8、 如權(quán)利要求1所述的外圍組件互連總線級(jí)壓力測(cè)試方法,適應(yīng)于不 同的操作系統(tǒng)進(jìn)行測(cè)試,其中該操作系統(tǒng)包含DOS操作系統(tǒng)、Linux操作 系統(tǒng)、Windows操作系統(tǒng)及可延伸固件接口操作系統(tǒng)。
全文摘要
本發(fā)明提供一種外圍組件互連總線級(jí)壓力測(cè)試方法,應(yīng)用于外圍組件互連(PCI)總線(BUS)的整體壓力測(cè)試中。此測(cè)試方法包含以下步驟遍歷系統(tǒng)中所有PCI BUS;獲取系統(tǒng)整體PCI BUS及PCI設(shè)備的樹狀結(jié)構(gòu),并從中選擇一個(gè)PCI BUS分支作為測(cè)試對(duì)象;針對(duì)此測(cè)試對(duì)象進(jìn)行外圍組件互連總線的外圍組件互連功能測(cè)試、輸入輸出功能測(cè)試及內(nèi)存映射功能測(cè)試;以及從系統(tǒng)中剩余的待測(cè)試的PCI BUS分支中選擇一個(gè)PCI BUS分支作為測(cè)試對(duì)象進(jìn)行上述的外圍組件互連總線的相關(guān)測(cè)試,直至所有的待測(cè)試的PCI BUS分支測(cè)試完成。
文檔編號(hào)G06F11/267GK101354667SQ20071013709
公開日2009年1月28日 申請(qǐng)日期2007年7月24日 優(yōu)先權(quán)日2007年7月24日
發(fā)明者濤 劉, 劉文涵, 段秋月, 陳玄同 申請(qǐng)人:英業(yè)達(dá)股份有限公司