一種eMMC內(nèi)嵌式存儲器的檢測方法和裝置制造方法
【專利摘要】本發(fā)明實施例公開了一種eMMC內(nèi)嵌式存儲器的檢測方法和裝置,涉及電子電路領(lǐng)域,用以對eMMC的I/O端口的通斷進行檢測。本發(fā)明中,通過CLK端口輸入與設(shè)置的時鐘頻率相同頻率的時鐘信號;通過CMD端口向eMMC發(fā)送第一指令,以指示eMMC通過CMD端口進行反饋,根據(jù)接收到的反饋信息,確定CMD端口和CLK端口的通斷;在確定CMD端口和CLK端口均為使用正常的端口后,擦除eMMC中的至少一個最小數(shù)據(jù)塊,通過CMD端口向eMMC發(fā)送第二指令,用以向已擦除的數(shù)據(jù)塊所對應(yīng)的存儲空間中寫入預(yù)設(shè)數(shù)值;通過數(shù)據(jù)端口讀取存儲空間所存儲的數(shù)值,比較寫入數(shù)值和讀出數(shù)值,確定每個數(shù)據(jù)端口的通斷;從而實現(xiàn)了上述功能。
【專利說明】-種eMMC內(nèi)嵌式存儲器的檢測方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及電子電路領(lǐng)域,尤其涉及一種eMMC內(nèi)嵌式存儲器的檢測方法和裝置。
【背景技術(shù)】
[0002] eMMC (Embedded Multi Media Card,內(nèi)嵌式存儲器)是一種主要針對于手機或平 板電腦的內(nèi)嵌式存儲器。eMMC由MMC(Multimedia Card,多媒體卡)接口、快閃存儲器設(shè)備 及主控制器組成,并采用BGA(Ball Grid Array Package,球柵陣列封裝)技術(shù)封裝。采用 BGA技術(shù)封裝的eMMC的I/0(input/output,輸入輸出端口)端口以圓形或柱狀焊點按陣列 形式分布在封裝下面,可以增加 eMMC的集成度。
[0003] 現(xiàn)有技術(shù)中,對電子元器件進行硬件檢測時,通常使用萬用表表筆直接接觸電子 元器件的I/O端口(引腳),才能對該I/O端口的通斷進行檢測;還可以使用示波器探頭直 接接觸電子元器件的I/O端口(引腳),才能對該I/O端口的通斷或輸出信號進行檢測。
[0004] 隨著手機或平板電腦等智能設(shè)備的功能越來越多,其主板的集成度也越來越高, 主板的PCB(Printed Circuit Board,印刷電路板)往往采用多層布線。當(dāng)采用多層布線 時,集成在主板上的eMMC的I/O端口往往不被暴露在主板表面而是隱藏eMMC的芯片體下 面,可見,當(dāng)需要檢測該eMMC時,使用萬用表表筆或示波器探頭無法接觸到eMMC的I/O端 口,因此,采用現(xiàn)有技術(shù)中的硬件檢測方法無法對eMMC進行檢測。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例提供一種eMMC內(nèi)嵌式存儲器的檢測方法和裝置,用以對eMMC的1/ 〇端口的通斷進行檢測。
[0006] 一種eMMC內(nèi)嵌式存儲器的檢測方法,所述eMMC至少具有命令CMD端口、時鐘CLK 端口和八個數(shù)據(jù)端口,該方法包括:
[0007] 設(shè)置所述eMMC的時鐘頻率,并通過所述CLK端口輸入與設(shè)置的時鐘頻率相同頻率 的時鐘信號;
[0008] 通過所述CMD端口向所述eMMC發(fā)送第一指令,以指示所述eMMC根據(jù)所述第一指 令所指示的內(nèi)容通過所述CMD端口進行反饋,根據(jù)接收到的反饋信息,確定所述CMD端口和 所述CLK端口的通斷;
[0009] 在確定所述CMD端口和所述CLK端口均為使用正常的端口后,擦除所述eMMC中的 至少一個最小數(shù)據(jù)塊,通過所述CMD端口向所述eMMC發(fā)送第二指令,用以向所述已擦除的 數(shù)據(jù)塊所對應(yīng)的存儲空間中寫入預(yù)設(shè)數(shù)值;通過所述數(shù)據(jù)端口讀取所述存儲空間所存儲的 數(shù)值,比較所述寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù)值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷。
[0010] 一種eMMC內(nèi)嵌式存儲器的檢測裝置,所述eMMC至少具有命令CMD端口、時鐘CLK 端口和八個數(shù)據(jù)端口,該裝置包括:
[0011] 初始化單元,用于設(shè)置所述eMMC的時鐘頻率,并通過所述CLK端口輸入與設(shè)置的 時鐘頻率相同頻率的時鐘信號;
[0012] 端口檢測單元,用于通過所述CMD端口向所述eMMC發(fā)送第一指令,以指示所述 eMMC根據(jù)所述第一指令所指示的內(nèi)容通過所述CMD端口進行反饋,根據(jù)接收到的反饋信 息,確定所述CMD端口和所述CLK端口的通斷;在確定所述CMD端口和所述CLK端口均為使 用正常的端口后,擦除所述eMMC中的至少一個最小數(shù)據(jù)塊,通過所述CMD端口向所述eMMC 發(fā)送第二指令,用以向所述已擦除的數(shù)據(jù)塊所對應(yīng)的存儲空間中寫入預(yù)設(shè)數(shù)值;通過所述 數(shù)據(jù)端口讀取所述存儲空間所存儲的數(shù)值,比較所述寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù)值,根 據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷。
[0013] 從上述方案可以看出,本發(fā)明實施例提供一種eMMC的檢測方法,首先向eMMC發(fā)送 時鐘信號和第一指令,監(jiān)測該eMMC所反饋的信息,根據(jù)反饋信息判斷該eMMC的CMD端口 和CLK端口的通斷,從而實現(xiàn)了對eMMC的CMD端口和CLK端口的通斷的檢測;擦除eMMC所 存儲的任一最小數(shù)據(jù)塊,向擦除的數(shù)據(jù)塊中寫入預(yù)設(shè)數(shù)值,然后讀取該數(shù)據(jù)塊中所存儲的 數(shù)值,比較寫入的數(shù)值和讀取出的數(shù)值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷,由于eMMC 的端口在布線或焊接時可能發(fā)生短路或斷路的現(xiàn)象,若發(fā)生了短路或斷路的現(xiàn)象時,則寫 入的數(shù)據(jù)與讀取出的數(shù)據(jù)一定不相同,本發(fā)明實施例可以根據(jù)不相同的數(shù)據(jù)或數(shù)值,判斷 每一個數(shù)據(jù)端口的通斷,從而實現(xiàn)了對eMMC的數(shù)據(jù)端口的檢測??梢?,本發(fā)明實施例可以 檢測的端口至少包括:CMD端口、CLK端口和每個數(shù)據(jù)端口,由于上述端口為eMMC主要使用 的I/O端口,因此通過本發(fā)明實施例可以實現(xiàn)對eMMC的I/O端口的通斷進行檢測的目的。
【專利附圖】
【附圖說明】
[0014] 為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使 用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本 領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其 他的附圖。
[0015] 圖1為現(xiàn)有技術(shù)中的典型的智能設(shè)備CPU最小系統(tǒng)的結(jié)構(gòu)不意圖;
[0016] 圖2為現(xiàn)有技術(shù)中ROM程序的執(zhí)行流程的示意圖;
[0017] 圖3為現(xiàn)有技術(shù)中eMMC的內(nèi)部結(jié)構(gòu)示意圖;
[0018] 圖4為本發(fā)明實施例提供的eMMC的檢測方法的流程示意圖;
[0019] 圖5為本發(fā)明實施例中的將eMMC的數(shù)據(jù)寬度設(shè)置為8bit時進行eMMC檢測的流 程不意圖;
[0020] 圖6為本發(fā)明實施例中數(shù)據(jù)端口進行傳輸?shù)母袷降氖疽鈭D;
[0021] 圖7為本發(fā)明實施例提供的eMMC的檢測裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0022] 為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進 一步地詳細描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施 例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的 所有其它實施例,都屬于本發(fā)明保護的范圍。
[0023] 本發(fā)明實施例可適用于各種集成電路芯片,尤其適用于采用BGA技術(shù)封裝的eMMC 芯片。圖1示出了一種現(xiàn)有技術(shù)中的典型的智能設(shè)備CPU最小系統(tǒng)的結(jié)構(gòu)示意圖,如圖1 所示,CPU (Central Processing Unit,中央處理器)最小系統(tǒng)由 CPU、eMMC 和 DDR (Double Data Rate,雙倍速率同步動態(tài)隨機存儲器)三部分組成。設(shè)備未上電前,程序代碼存儲在 eMMC中,這些代碼可以包括:boot代碼(啟動代碼)、kernel代碼(內(nèi)核代碼)、ramdisk(虛 擬內(nèi)存盤代碼)、user data(用戶數(shù)據(jù)代碼)等部分。通常的,在CPU內(nèi)部(SOC(System on Chip,系統(tǒng)級芯片)處)會集成一片小容量的R0M(Read_0nly Memory,只讀內(nèi)存)和 RAM (Random Access Memory,隨機存取存儲器)區(qū)域。其中,ROM中存儲的是由CPU芯片廠商 在出廠時固化的啟動代碼(在本發(fā)明實施例中簡稱ROM程序),R0M程序的作用包括:一、完 成上電檢測,并初始化CPU ;二、從外部非易失性存儲器上拷貝boot代碼到內(nèi)部RAM運行; 三、通過 UART (Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)、 USB (Universal Serial Bus,通用串行總線)、I2C (Inter - Integrated Circuit,兩線式 串行總線)、RS232等通信接口與外界(通常是外界PC)通信,接收指令并執(zhí)行響應(yīng)的操作。 圖2示出了現(xiàn)有技術(shù)中ROM程序的執(zhí)行流程的示意圖,如圖2所示,該過程可以包括:
[0024] 步驟S01 :設(shè)備上電,并進行上電自檢及初始化操作;
[0025] 步驟S02 :檢測UART或USB或I2C接口上是否有數(shù)據(jù),若是,則執(zhí)行步驟S03 ;若 否,則執(zhí)行步驟S04;
[0026] 步驟S03 :進入指令模式,并通過UART或USB或I2C與外界PC進行信令交互,并 結(jié)束流程;
[0027] 步驟S04 :從eMMC拷貝boot代碼到內(nèi)部RAM運行,并結(jié)束流程。
[0028] 本發(fā)明實施例可以應(yīng)用于上述步驟S03的進程中,在外界PC上UART或USB或I2C 接口向eMMC發(fā)送相關(guān)檢測指令序列,與eMMC進行指定的信令交互,從而實現(xiàn)eMMC的信號 的檢測。
[0029] 圖3示出了現(xiàn)有技術(shù)中eMMC的內(nèi)部結(jié)構(gòu)示意圖,如圖3所示,除了 \^或\^(雙極 器件電源電壓)、VDD或VDDI (單級器件電源電壓)、VSS或VSSQ (地或負極電源)、RST_n (復(fù)位) 等1/0端口之外,eMMC主要的1/0端口包括:CMD (命令)端口、CLK (時鐘)端口、DATA0? DATA7第一?第八數(shù)據(jù)端口。其中,CMD端口主要用來傳輸MMC協(xié)議指令;CLK端口用來提 供傳輸時鐘信號;數(shù)據(jù)端口用來傳輸數(shù)據(jù)信號。eMMC內(nèi)部主要由MMC controller(MMC控 制器)和NAND Flash(非易失閃存)兩部分組成。其中,MMC控制器主要負責(zé)使用MMC接 口協(xié)議與外部器件通信,還負責(zé)管理內(nèi)部的NAND Flash,eMMC所有的數(shù)據(jù)傳輸和模式設(shè)置 等操作均是通過CMD端口上傳輸?shù)闹噶顚崿F(xiàn)的。
[0030] 本發(fā)明實施例提供了 一種用于檢測eMMC的CMD端口、CLK端口以及DATA0?DATA7 端口的方法。圖4示出了本發(fā)明實施例提供的eMMC的檢測方法的流程示意圖,如圖4所示, 該方法包括:
[0031] 步驟41 :設(shè)置eMMC的時鐘頻率,并通過CLK端口輸入與設(shè)置的時鐘頻率相同頻率 的時鐘信號。
[0032] 可選的,在步驟41之前,還可以對eMMC進行初始化處理。一般來說,可以在eMMC 初始化之后設(shè)置eMMC的時鐘頻率,或者,在eMMC運行一段時間后,設(shè)置eMMC的時鐘頻率。 這樣,本發(fā)明實施例可以在設(shè)備初始化時檢測eMMC的各1/0端口的通斷,還可以在設(shè)備運 行一段時間后檢測eMMC的各1/0端口的通斷;由于后續(xù)步驟中的獲取eMMC的標(biāo)識信息以 及寫入、讀取數(shù)據(jù)均基于設(shè)置的時鐘頻率,因此,可以在初始化后或任意時間設(shè)置eMMC的 時鐘頻率,本發(fā)明實施例只要按照步驟41設(shè)置了時鐘頻率,就可以在任意時間對eMMC各1/ 0端口的通斷進行檢測。
[0033] 步驟42 :通過CMD端口向eMMC發(fā)送第一指令,以指示eMMC根據(jù)第一指令所指示 的內(nèi)容通過CMD端口進行反饋,根據(jù)接收到的反饋信息,確定CMD端口和CLK端口的通斷。
[0034] 可選的,在上述步驟42中,第一指令用于指示eMMC從eMMC標(biāo)識信息所對應(yīng)的寄 存器中獲取eMMC標(biāo)識信息;eMMC根據(jù)第一指令所指示的內(nèi)容通過CMD端口進行反饋,具體 包括:eMMC根據(jù)第一指令所指示的內(nèi)容,讀取對應(yīng)的寄存器所存儲的eMMC標(biāo)識信息,并將 讀取到的eMMC標(biāo)識信息作為反饋信息通過CMD端口進行反饋。
[0035] 可選的,在上述步驟42中,確定CMD端口和CLK端口的通斷,具體包括:若接收到 eMMC通過CMD端口輸出eMMC標(biāo)識信息,則將CMD端口和CLK端口均確定為使用正常的端 口;否則,將CMD端口和CLK端口中至少一個端口確定為故障端口。
[0036] 步驟43 :在確定所述CMD端口和所述CLK端口均為使用正常的端口后,擦除eMMC 中的至少一個最小數(shù)據(jù)塊,通過CMD端口向eMMC發(fā)送第二指令,用以向已擦除的數(shù)據(jù)塊所 對應(yīng)的存儲空間中寫入預(yù)設(shè)數(shù)值;通過數(shù)據(jù)端口讀取存儲空間所存儲的數(shù)值,比較寫入的 預(yù)設(shè)數(shù)值和讀取出的數(shù)值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷。
[0037] 具體實現(xiàn)時,只有當(dāng)eMMC的CLK端口輸入了與設(shè)置的時鐘頻率對應(yīng)的時鐘信號, 該eMMC才能在該時鐘頻率下正常工作,因此可以說CLK端口是eMMC芯片的基礎(chǔ);另外,由 于CMD端口用于輸入或輸出eMMC的指令信息,例如,如果需要檢測數(shù)據(jù)端口,首先需要通過 CMD端口輸入擦除指令和寫入指令,可見,CMD端口也是eMMC芯片的基礎(chǔ)。因此,在本發(fā)明 實施例中,可以優(yōu)先執(zhí)行步驟42,然后繼續(xù)執(zhí)行步驟43,這樣能夠保證每一個檢測步驟的 有效性。
[0038] 可選的,在上述步驟41之前還包括:設(shè)置eMMC的數(shù)據(jù)寬度;八個數(shù)據(jù)端口從最低 位到最高位依次為:第一數(shù)據(jù)端口?第八數(shù)據(jù)端口;
[0039] 本發(fā)明實施例可以包括如下三個具體方案。
[0040] 方案一:
[0041] 當(dāng)預(yù)先設(shè)置eMMC的數(shù)據(jù)寬度為8bit時,通過CMD端口向eMMC發(fā)送第二指令,具 體包括:
[0042] 通過CMD端口向eMMC發(fā)送第二指令,用以向已擦除的數(shù)據(jù)塊所對應(yīng)的存儲空間中 寫入數(shù)據(jù)寬度為8bit的數(shù)值;
[0043] 通過數(shù)據(jù)端口讀取存儲空間所存儲的數(shù)值,比較寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù) 值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷,具體包括:通過第一數(shù)據(jù)端口?第八數(shù)據(jù)端口 讀取存儲空間所存儲的二進制數(shù)值;針對于每個數(shù)據(jù)端口,分別比較寫入的二進制數(shù)值和 讀取出的二進制數(shù)據(jù),根據(jù)比較結(jié)果確定第一數(shù)據(jù)端口?第八數(shù)據(jù)端口的通斷。
[0044] 方案二:
[0045] 當(dāng)預(yù)先設(shè)置eMMC的數(shù)據(jù)寬度為4bit時,通過CMD端口向eMMC發(fā)送第二指令,具 體包括:
[0046] 通過CMD端口向eMMC發(fā)送第二指令,用以向已擦除的數(shù)據(jù)塊所對應(yīng)的存儲空間中 寫入數(shù)據(jù)寬度為4bit的數(shù)值;通過數(shù)據(jù)端口讀取存儲空間所存儲的數(shù)值,比較寫入的預(yù)設(shè) 數(shù)值和讀取出的數(shù)值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷,具體包括:
[0047] 通過第一數(shù)據(jù)端口?第四數(shù)據(jù)端口讀取存儲空間所存儲的二進制數(shù)值;針對于每 個數(shù)據(jù)端口,分別比較寫入的二進制數(shù)值和讀取出的二進制數(shù)據(jù),根據(jù)比較結(jié)果確定第一 數(shù)據(jù)端口?第四數(shù)據(jù)端口的通斷。
[0048] 方案三:
[0049] 當(dāng)預(yù)先設(shè)置eMMC的數(shù)據(jù)寬度為lbit時,通過CMD端口向eMMC發(fā)送第二指令,具 體包括:通過CMD端口向eMMC發(fā)送第二指令,用以向已擦除的數(shù)據(jù)塊所對應(yīng)的存儲空間中 寫入數(shù)據(jù)寬度為lbit的數(shù)值;
[0050] 通過數(shù)據(jù)端口讀取存儲空間所存儲的數(shù)值,比較寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù) 值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷,具體包括:通過第一數(shù)據(jù)端口讀取存儲空間所 存儲的二進制數(shù)值;分別比較寫入的二進制數(shù)值和讀取出的二進制數(shù)據(jù),根據(jù)比較結(jié)果確 定eMMC的時序,并確定第一數(shù)據(jù)端口的通斷。
[0051] 可選的,在上述步驟中,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷,具體包括:
[0052] 對于任意一個數(shù)據(jù)端口,若寫入的二進制數(shù)值和讀取出的二進制數(shù)值相同,則將 該數(shù)據(jù)端口確定為使用正常的數(shù)據(jù)端口;否則,將該數(shù)據(jù)端口確定為斷路端口;
[0053] 對于任意兩個相鄰的數(shù)據(jù)端口,當(dāng)寫入其中一個數(shù)據(jù)端口的二進制數(shù)值與寫入另 一個數(shù)據(jù)端口的二進制數(shù)值不同時,分別比較寫入的二進制數(shù)值與讀取出的二進制數(shù)值是 否相同,若相同,則將兩個相鄰的數(shù)據(jù)端口均確定為使用正常的數(shù)據(jù)端口,若不同,則兩個 相鄰的數(shù)據(jù)端口中至少一個端口確定為短路的數(shù)據(jù)端口。
[0054] 下面通過具體的實施例以數(shù)據(jù)寬度為8bit的eMMC為例進行具體描述。
[0055] 在本發(fā)明實施例中,可以通過安裝在外界PC上的軟件或安裝在外界智能設(shè)備上 的軟件對eMMC進行檢測。PC或智能設(shè)備通過USB、I2C、RS232端口與eMMC進行通信,使用 約定的通信協(xié)議進行命令傳輸和數(shù)據(jù)交互。ROM程序接收到PC或智能設(shè)備發(fā)送的用于指示 eMMC執(zhí)行指定操作的命令(在本發(fā)明實施例中簡稱eMMC指令)后,指示eMMC進行相應(yīng)的 操作。在本發(fā)明實施例中,用于檢測eMMC的算法可以保存在外界PC上或智能設(shè)備上,用于 與eMMC進行通信的協(xié)議也可以保存在外界PC上或智能設(shè)備上。其中,用于檢測eMMC的算 法可以保存在外界PC上或智能設(shè)備上的檢測算法的核心思想是模擬真實的eMMC的操作流 程,具體包括:初始化流程,工作模式設(shè)置流程,數(shù)據(jù)讀、寫、擦除流程等。
[0056] 圖5示出了本發(fā)明實施例中的將eMMC的數(shù)據(jù)寬度設(shè)置為8bit時進行eMMC檢測 的流程示意圖;如圖5所示,本發(fā)明實施例以通過外界PC進行eMMC檢測為例,該方法包括 :
[0057] 步驟51 :在初始化時,通過外界PC初始化CPU,并設(shè)置CPU內(nèi)部的eMMC控制器。
[0058] 步驟52 :通過外界PC設(shè)置eMMC的工作模式。
[0059] 具體實現(xiàn)時,通過外界PC設(shè)置eMMC的時鐘頻率、數(shù)據(jù)寬度,將eMMC的數(shù)據(jù)寬度設(shè) 置為8bit。
[0060] 步驟53 :通過外界PC向eMMC發(fā)送CMD0指令,用于指示eMMC進行芯片復(fù)位操作。
[0061] 步驟54 :通過外界PC向eMMC發(fā)送CMD1指令,用于獲取eMMC內(nèi)部存儲的0D寄存 器內(nèi)容,若未獲取到,則執(zhí)行步驟55 ;若獲取到,則執(zhí)行步驟56。
[0062] 步驟55 :認為CMD端口和CLK端口是故障端口,并結(jié)束檢測流程。
[0063] 具體實現(xiàn)時,0D寄存器所存儲的是eMMC芯片的廠商ID、產(chǎn)品ID等信息。外界PC 需要通過CMD端口向eMMC發(fā)送CMD1指令,因此,通過步驟54可以檢測eMMC的CMD端口的 通斷;另一方面,由于eMMC必須在設(shè)置的時鐘頻率下才能正常工作,因此,通過步驟54也可 以檢測eMMC的CLK端口的通斷。當(dāng)外界PC接收到eMMC返回0D寄存器中保存的eMMC芯片 的廠商ID、產(chǎn)品ID等信息后,可以確定該eMMC的CMD端口和CLK端口是可以正常使用的, 若外界PC未接收到eMMC返回0D寄存器中保存的eMMC芯片的廠商ID、產(chǎn)品ID等信息,則 直接認為該eMMC的CMD端口和CLK端口是故障端口,并結(jié)束檢測流程。
[0064] 步驟56 :在確定所述CMD端口和所述CLK端口均為使用正常的端口后,通過外界 PC擦除任一最小數(shù)據(jù)塊(block)。
[0065] 具體實現(xiàn)時,塊(block)是eMMC內(nèi)部NAND Flash中最小的讀、寫、擦除單位(通 常來講一個最小block的大小是512字節(jié))。在本發(fā)明實施例中,外界PC需要擦除任一一 個block,需要向eMMC發(fā)送擦除指令,其中,CMD35指令用于指示eMMC進行擦除時的起始地 址,CMD36指令用于指示eMMC進行擦除時的終止地址,CMD38指令用于指示eMMC進行擦除 操作。
[0066] 需要說明的是,本發(fā)明實施例中的最小的讀、寫、擦除單位是根據(jù)不同類型的閃存 確定的。例如,當(dāng)eMMC使用其他類型的閃存,如NOR Flash時,最小數(shù)據(jù)塊可能不是512字 節(jié)。
[0067] 步驟57 :通過外界PC向eMMC中寫入數(shù)據(jù)0xFF0055aa。
[0068] 具體實現(xiàn)時,外界PC發(fā)送CMD25指令,并寫入一個數(shù)據(jù)長度恰好為512字節(jié)的數(shù) 據(jù)。舉例來說,可以連續(xù)向eMMC中重復(fù)多次寫入0xFF0055aa的數(shù)據(jù)直至已寫入的數(shù)據(jù)長 度為512字節(jié)時停止寫入。
[0069] 具體實現(xiàn)時,在設(shè)置的數(shù)據(jù)寬度為8bit的情況時,該數(shù)據(jù)在數(shù)據(jù)端口(DATA信號 線)進行傳輸。圖6示出了數(shù)據(jù)端口進行傳輸?shù)母袷降氖疽鈭D;在設(shè)置的數(shù)據(jù)寬度為8bit 的情況時,寫入的數(shù)據(jù)0xFF0055aa在數(shù)據(jù)端口上進行傳輸?shù)母袷饺鐖D6所示,可見,數(shù)據(jù) 0xFF0055aa的最高位在DATA7 (第八數(shù)據(jù)端口)上傳輸,最低位在DATA0 (第一數(shù)據(jù)端口) 上傳輸。
[0070] 步驟58 :通過外界PC向eMMC發(fā)送讀取指令,用于讀取最小數(shù)據(jù)塊中所存儲的數(shù) 據(jù)。
[0071] 具體實現(xiàn)時,通過外界PC向eMMC發(fā)送CMD17指令,用于讀取通過步驟57寫入的 數(shù)據(jù),在本發(fā)明實施例中,該數(shù)據(jù)即為0xFF0055aa。
[0072] 步驟59 :將寫入的數(shù)據(jù)0xFF0055aa與讀取出的數(shù)據(jù)進行比較,根據(jù)比較結(jié)果確定 各數(shù)據(jù)端口的通斷。
[0073] 具體實現(xiàn)時,繼續(xù)參見圖6,從圖6中可以看出,當(dāng)寫入數(shù)據(jù)為OxFF時,讀取到的 字節(jié)中不為1的數(shù)據(jù)端口即代表該數(shù)據(jù)端口為斷路;當(dāng)寫入數(shù)據(jù)為0x00時,讀取到的字節(jié) 中不為〇的數(shù)據(jù)端口即代表該數(shù)據(jù)端口為斷路;進一步的,當(dāng)寫入數(shù)據(jù)為0x55時,由于該數(shù) 據(jù)對應(yīng)的二進制數(shù)值為0101 0101,因此可以判斷DATA0?DATA7八個數(shù)據(jù)端口是否存在 短路現(xiàn)象,若讀取出的二進制數(shù)據(jù)不為0101 0101,則連續(xù)為0或連續(xù)為1的數(shù)據(jù)端口均存 在短路現(xiàn)象;當(dāng)寫入數(shù)據(jù)為〇xaa時,由于該數(shù)據(jù)對應(yīng)的二進制數(shù)值為1010 1010,因此也可 以判斷DATA0?DATA7八個數(shù)據(jù)端口是否存在短路現(xiàn)象,若讀取出的二進制數(shù)據(jù)不為1010 1010則連續(xù)為0或連續(xù)為1的數(shù)據(jù)端口均存在短路現(xiàn)象。
[0074] 需要說明的是,在實際應(yīng)用中,對于eMMC的任一數(shù)據(jù)端口,如果寫入的二進制數(shù) 值是1,而讀取出的二進制數(shù)值是0時,該數(shù)據(jù)端口可能為斷路,該數(shù)據(jù)端口也可能與地短 路。為了區(qū)分該數(shù)據(jù)端口是斷路還是與地短路的情況,本發(fā)明實施例還可以利用外界PC向 eMMC發(fā)送指定命令,用于使能(開啟)該數(shù)據(jù)端口的弱上拉功能,此時,可以繼續(xù)寫入二進 制數(shù)值為1的數(shù)據(jù),若讀取出的二進制數(shù)值是〇,則確定該數(shù)據(jù)端口與地短路;若讀取出的 二進制數(shù)值是1,則確定該數(shù)據(jù)端口斷路。
[0075] 從上述方案可以看出,本發(fā)明實施例提供一種eMMC的檢測方法,首先向eMMC發(fā)送 時鐘信號和第一指令,監(jiān)測該eMMC所反饋的信息,根據(jù)反饋信息判斷該eMMC的CMD端口 和CLK端口的通斷,從而實現(xiàn)了對eMMC的CMD端口和CLK端口的通斷的檢測;擦除eMMC所 存儲的任一最小數(shù)據(jù)塊,向擦除的數(shù)據(jù)塊中寫入預(yù)設(shè)數(shù)值,然后讀取該數(shù)據(jù)塊中所存儲的 數(shù)值,比較寫入的數(shù)值和讀取出的數(shù)值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷,由于eMMC 的端口在布線或焊接時可能發(fā)生短路或斷路的現(xiàn)象,若發(fā)生了短路或斷路的現(xiàn)象時,則寫 入的數(shù)據(jù)與讀取出的數(shù)據(jù)一定不相同,本發(fā)明實施例可以根據(jù)寫入的數(shù)值不同,逐一判斷 每一個數(shù)據(jù)端口的通斷,例如:當(dāng)寫入的二進制數(shù)值為1111 1111或〇〇〇〇 〇〇〇〇或類似的數(shù) 值時,判斷8個數(shù)據(jù)端口的通斷;當(dāng)寫入的二進制數(shù)值為1010 1010或0101 0101或類似的 數(shù)值時,判斷8個數(shù)據(jù)端口是否發(fā)生短路,從而實現(xiàn)了對eMMC的數(shù)據(jù)端口的檢測??梢?,本 發(fā)明實施例可以檢測的端口至少包括:CMD端口、CLK端口和每個數(shù)據(jù)端口,由于上述端口 為eMMC主要使用的I/O端口,因此通過本發(fā)明實施例可以實現(xiàn)對eMMC的每個I/O端口進 行檢測的目的。
[0076] 基于相同的技術(shù)構(gòu)思,本發(fā)明實施例提供了一種eMMC內(nèi)嵌式存儲器的檢測裝置, 圖7示出了本發(fā)明實施例提供的eMMC內(nèi)嵌式存儲器的檢測裝置的結(jié)構(gòu)示意圖;如圖7所 示,該裝置包括:
[0077] 初始化單元71,用于設(shè)置所述eMMC的時鐘頻率,并通過所述CLK端口輸入與設(shè)置 的時鐘頻率相同頻率的時鐘信號;
[0078] 端口檢測單元72,用于通過所述CMD端口向所述eMMC發(fā)送第一指令,以指示所述 eMMC根據(jù)所述第一指令所指示的內(nèi)容通過所述CMD端口進行反饋,根據(jù)接收到的反饋信 息,確定所述CMD端口和所述CLK端口的通斷;在確定所述CMD端口和所述CLK端口均為使 用正常的端口后,擦除所述eMMC中的至少一個最小數(shù)據(jù)塊,通過所述CMD端口向所述eMMC 發(fā)送第二指令,用以向所述已擦除的數(shù)據(jù)塊所對應(yīng)的存儲空間中寫入預(yù)設(shè)數(shù)值;通過所述 數(shù)據(jù)端口讀取所述存儲空間所存儲的數(shù)值,比較所述寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù)值,根 據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷。
[0079] 可選的,所述第一指令用于指示所述eMMC從eMMC標(biāo)識信息所對應(yīng)的寄存器中獲 取eMMC標(biāo)識信息;所述端口檢測單元72具體用于:所述eMMC根據(jù)所述第一指令所指示的 內(nèi)容,讀取對應(yīng)的寄存器所存儲的eMMC標(biāo)識信息,并將讀取到的eMMC標(biāo)識信息作為反饋信 息通過所述CMD端口進行反饋。
[0080] 可選的,所述端口檢測單元72具體用于:若接收到所述eMMC通過所述CMD端口 輸出eMMC標(biāo)識信息,則將所述CMD端口和所述CLK端口均確定為使用正常的端口;否則,將 所述CMD端口和所述CLK端口中至少一個端口確定為故障端口。
[0081] 可選的,所述八個數(shù)據(jù)端口從最低位到最高位依次為:第一數(shù)據(jù)端口?第八數(shù)據(jù) 端口;所述初始化單元71還用于:在所述通過所述CMD端口向所述eMMC發(fā)送第一指令之 前,設(shè)置所述eMMC的數(shù)據(jù)寬度;所述端口檢測單元72具體用于:通過與設(shè)置的數(shù)據(jù)寬度對 應(yīng)的數(shù)據(jù)端口讀取所述存儲空間所存儲的二進制數(shù)值,比較所述寫入的預(yù)設(shè)數(shù)值和讀取出 的數(shù)值,根據(jù)比較結(jié)果確定所述eMMC的時序并確定與設(shè)置的數(shù)據(jù)寬度對應(yīng)的數(shù)據(jù)端口的 通斷。
[0082] 可選的,所述端口檢測單元72具體用于:對于任意一個數(shù)據(jù)端口,若寫入的二進 制數(shù)值和讀取出的二進制數(shù)值相同,則將該數(shù)據(jù)端口確定為使用正常的數(shù)據(jù)端口;否則,將 該數(shù)據(jù)端口確定為斷路端口;對于任意兩個相鄰的數(shù)據(jù)端口,當(dāng)寫入其中一個數(shù)據(jù)端口的 二進制數(shù)值與寫入另一個數(shù)據(jù)端口的二進制數(shù)值不同時,分別比較寫入的二進制數(shù)值與讀 取出的二進制數(shù)值是否相同,若相同,則將所述兩個相鄰的數(shù)據(jù)端口均確定為使用正常的 數(shù)據(jù)端口,若不同,則所述兩個相鄰的數(shù)據(jù)端口中至少一個端口確定為短路的數(shù)據(jù)端口。
[0083] 本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程 圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一 流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算 機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理 器,使得通過該計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令可實現(xiàn)流程圖中的 一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0084] 這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特 定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指 令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或 多個方框中指定的功能。
[0085] 這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計 算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或 其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖的一個流程或多個流程和/或方框 圖的一個方框或多個方框中指定的功能的步驟。
[0086] 盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造 性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu) 選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0087] 顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1. 一種eMMC內(nèi)嵌式存儲器的檢測方法,所述eMMC至少具有命令CMD端口、時鐘CLK端 口和八個數(shù)據(jù)端口,其特征在于,該方法包括: 設(shè)置所述eMMC的時鐘頻率,并通過所述CLK端口輸入與設(shè)置的時鐘頻率相同頻率的時 鐘信號; 通過所述CMD端口向所述eMMC發(fā)送第一指令,以指示所述eMMC根據(jù)所述第一指令所 指示的內(nèi)容通過所述CMD端口進行反饋,根據(jù)接收到的反饋信息,確定所述CMD端口和所述 CLK端口的通斷; 在確定所述CMD端口和所述CLK端口均為使用正常的端口后,擦除所述eMMC中的至 少一個最小數(shù)據(jù)塊,通過所述CMD端口向所述eMMC發(fā)送第二指令,用以向所述已擦除的數(shù) 據(jù)塊所對應(yīng)的存儲空間中寫入預(yù)設(shè)數(shù)值;通過所述數(shù)據(jù)端口讀取所述存儲空間所存儲的數(shù) 值,比較所述寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù)值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷。
2. 如權(quán)利要求1所述的方法,其特征在于,所述第一指令用于指示所述eMMC從eMMC標(biāo) 識信息所對應(yīng)的寄存器中獲取eMMC標(biāo)識信息; 所述eMMC根據(jù)所述第一指令所指示的內(nèi)容通過所述CMD端口進行反饋,具體包括: 所述eMMC根據(jù)所述第一指令所指示的內(nèi)容,讀取對應(yīng)的寄存器所存儲的eMMC標(biāo)識信 息,并將讀取到的eMMC標(biāo)識信息作為反饋信息通過所述CMD端口進行反饋。
3. 如權(quán)利要求2所述的方法,其特征在于,所述確定所述CMD端口和所述CLK端口的通 斷,具體包括: 若接收到所述eMMC通過所述CMD端口輸出eMMC標(biāo)識信息,則將所述CMD端口和所述 CLK端口均確定為使用正常的端口;否則,將所述CMD端口和所述CLK端口中至少一個端口 確定為故障端口。
4. 如權(quán)利要求1所述的方法,其特征在于,所述八個數(shù)據(jù)端口從最低位到最高位依次 為:第一數(shù)據(jù)端口?第八數(shù)據(jù)端口; 在所述通過所述CMD端口向所述eMMC發(fā)送第一指令之前,還包括: 設(shè)置所述eMMC的數(shù)據(jù)寬度; 所述通過所述數(shù)據(jù)端口讀取所述存儲空間所存儲的數(shù)值,比較所述寫入的預(yù)設(shè)數(shù)值和 讀取出的數(shù)值,根據(jù)比較結(jié)果確定每個數(shù)據(jù)端口的通斷,具體包括: 通過與設(shè)置的數(shù)據(jù)寬度對應(yīng)的數(shù)據(jù)端口讀取所述存儲空間所存儲的二進制數(shù)值,比較 所述寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù)值,根據(jù)比較結(jié)果確定所述eMMC的時序并確定與設(shè)置 的數(shù)據(jù)寬度對應(yīng)的數(shù)據(jù)端口的通斷。
5. 如權(quán)利要求1-4中任一項所述的方法,其特征在于,所述根據(jù)比較結(jié)果確定每個數(shù) 據(jù)端口的通斷,具體包括: 對于任意一個數(shù)據(jù)端口,若寫入的二進制數(shù)值和讀取出的二進制數(shù)值相同,則將該數(shù) 據(jù)端口確定為使用正常的數(shù)據(jù)端口;否則,將該數(shù)據(jù)端口確定為斷路端口; 對于任意兩個相鄰的數(shù)據(jù)端口,當(dāng)寫入其中一個數(shù)據(jù)端口的二進制數(shù)值與寫入另一個 數(shù)據(jù)端口的二進制數(shù)值不同時,分別比較寫入的二進制數(shù)值與讀取出的二進制數(shù)值是否相 同,若相同,則將所述兩個相鄰的數(shù)據(jù)端口均確定為使用正常的數(shù)據(jù)端口,若不同,則所述 兩個相鄰的數(shù)據(jù)端口中至少一個端口確定為短路的數(shù)據(jù)端口。
6. -種eMMC內(nèi)嵌式存儲器的檢測裝置,其特征在于,該裝置包括: 初始化單元,用于設(shè)置所述eMMC的時鐘頻率,并通過所述CLK端口輸入與設(shè)置的時鐘 頻率相同頻率的時鐘信號; 端口檢測單元,用于通過所述CMD端口向所述eMMC發(fā)送第一指令,以指示所述eMMC根 據(jù)所述第一指令所指示的內(nèi)容通過所述CMD端口進行反饋,根據(jù)接收到的反饋信息,確定 所述CMD端口和所述CLK端口的通斷;在確定所述CMD端口和所述CLK端口均為使用正常 的端口后,擦除所述eMMC中的至少一個最小數(shù)據(jù)塊,通過所述CMD端口向所述eMMC發(fā)送第 二指令,用以向所述已擦除的數(shù)據(jù)塊所對應(yīng)的存儲空間中寫入預(yù)設(shè)數(shù)值;通過所述數(shù)據(jù)端 口讀取所述存儲空間所存儲的數(shù)值,比較所述寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù)值,根據(jù)比較 結(jié)果確定每個數(shù)據(jù)端口的通斷。
7. 如權(quán)利要求6所述的裝置,其特征在于,所述第一指令用于指示所述eMMC從eMMC標(biāo) 識信息所對應(yīng)的寄存器中獲取eMMC標(biāo)識信息; 所述端口檢測單元具體用于: 所述eMMC根據(jù)所述第一指令所指示的內(nèi)容,讀取對應(yīng)的寄存器所存儲的eMMC標(biāo)識信 息,并將讀取到的eMMC標(biāo)識信息作為反饋信息通過所述CMD端口進行反饋。
8. 如權(quán)利要求7所述的裝置,其特征在于,所述端口檢測單元具體用于: 若接收到所述eMMC通過所述CMD端口輸出eMMC標(biāo)識信息,則將所述CMD端口和所述 CLK端口均確定為使用正常的端口;否則,將所述CMD端口和所述CLK端口中至少一個端口 確定為故障端口。
9. 如權(quán)利要求6所述的裝置,其特征在于,所述八個數(shù)據(jù)端口從最低位到最高位依次 為:第一數(shù)據(jù)端口?第八數(shù)據(jù)端口; 所述初始化單元還用于:在所述通過所述CMD端口向所述eMMC發(fā)送第一指令之前,設(shè) 置所述eMMC的數(shù)據(jù)寬度; 所述端口檢測單元具體用于:通過與設(shè)置的數(shù)據(jù)寬度對應(yīng)的數(shù)據(jù)端口讀取所述存儲 空間所存儲的二進制數(shù)值,比較所述寫入的預(yù)設(shè)數(shù)值和讀取出的數(shù)值,根據(jù)比較結(jié)果確定 所述eMMC的時序并確定與設(shè)置的數(shù)據(jù)寬度對應(yīng)的數(shù)據(jù)端口的通斷。
10. 如權(quán)利要求6-9中任一項所述的裝置,其特征在于,所述端口檢測單元具體用于: 對于任意一個數(shù)據(jù)端口,若寫入的二進制數(shù)值和讀取出的二進制數(shù)值相同,則將該數(shù) 據(jù)端口確定為使用正常的數(shù)據(jù)端口;否則,將該數(shù)據(jù)端口確定為斷路端口; 對于任意兩個相鄰的數(shù)據(jù)端口,當(dāng)寫入其中一個數(shù)據(jù)端口的二進制數(shù)值與寫入另一個 數(shù)據(jù)端口的二進制數(shù)值不同時,分別比較寫入的二進制數(shù)值與讀取出的二進制數(shù)值是否相 同,若相同,則將所述兩個相鄰的數(shù)據(jù)端口均確定為使用正常的數(shù)據(jù)端口,若不同,則所述 兩個相鄰的數(shù)據(jù)端口中至少一個端口確定為短路的數(shù)據(jù)端口。
【文檔編號】G11C29/56GK104217768SQ201410448288
【公開日】2014年12月17日 申請日期:2014年9月4日 優(yōu)先權(quán)日:2014年9月4日
【發(fā)明者】初德進 申請人:青島海信電器股份有限公司