本發(fā)明涉及電子設備技術領域,特別涉及一種選擇讀參數的方法及裝置。
背景技術:
目前,手機存儲器常用eMMC(Embedded Multi Media Card,嵌入式多媒體卡)來存儲代碼和文件,不同廠家的eMMC在設計上存在差別,如果CPU采用同一套讀參數對不同廠家的eMMC進行讀訪問往往會出現概率性死機或無法開機等情況。
其中,挑選eMMC讀參數傳統(tǒng)辦法如下:
eMMC4.5規(guī)范中增加了CMD21(第21個命令提示符),此命令功能是tuning(調整)讀參數?;驹頌椋涸趀MMC中保存特定的Pattern(碼型),其包括128個字節(jié),具體內容見圖1所示,其中,101為第1個字節(jié),102為第2個字節(jié),103誒第128個字節(jié)。挑選eMMC讀參數的具體流程如圖2所示,包含步驟201~209,其中,當Host(主機)發(fā)出CMD21命令之后,device(設備)收到CMD21便發(fā)出128字節(jié)數據,Host收到這128字節(jié)后,將其與預存的Pattern進行比對,如果完全一致則認為此讀參數可用,然后Host修改讀參數,當讀參數小于最大設定值時,再發(fā)送CMD21命令,進行下一次讀參數的校驗工作,直至讀參數等于最大設定值。
但是,選擇讀參數的方法為內核代碼中自帶的,在挑選參數時,不一定能夠適應每一個應用處理器廠商和存儲器廠商,在使用中發(fā)現,采用傳統(tǒng)的eMMC讀寫時序挑選方法存在缺陷:會出現所有的讀參數都能通過,但在實 際應用中仍然會出現系統(tǒng)死機的問題,如圖3所示,其中,0、1、2、3、4、5、6分別代表時延為0、1、2、3、4、5、6。
假設應用處理器內部采樣時鐘有6個點采樣點可調,默認采樣時鐘讀delay(時延)=0,可調delay分別為1、2、3、4、5、6,從圖3中可以看出,均能夠正確采樣到有效數據,對于讀操作而言是無法通過實際測量獲得波形的,只能是根據理論參數來推測讀采樣波形,對于芯片內部采樣電路,也可能是圖4所示的采樣示意圖。
當6個delay采樣點都能夠正確采樣到數據時,這就帶來一個問題:當所有采樣delay都正確時,是選擇讀delay=0,選擇讀delay=3,還是選擇讀delay=6?假設選擇讀delay=2,那么對于圖3所示,可以正確采到數據,但是如果是內部采樣時鐘如圖4所示,讀delay=2將落在采樣點邊緣,這會導致概率性采錯數據,假設在常溫下能夠采對數據,但是高溫或低溫下,由于存儲器器件受到高低溫的影響,驅動輸出能力會隨著變化,同時數據的延遲時間也可能會有變化,如果出現圖5、圖6中的情況,讀delay=2會出現采錯數據的情況。
綜上所述,目前采用的方式在挑選讀參數時普遍會出現所有讀參數均正確情況,這將導致無法正確有效的挑選出讀參數,進而會出現系統(tǒng)概率性死機的問題。
技術實現要素:
本發(fā)明解決的問題在于提供一種選擇讀參數的方法及裝置,能夠正確有效地挑選出存儲器的讀參數,可以解決由于讀參數挑選不合理導致的系統(tǒng)死機的問題。
為解決上述技術問題,本發(fā)明的實施方式提供了一種選擇讀參數的方法,包含以下步驟:
降低存儲器與應用處理器的輸出驅動能力;
對所述存儲器進行數據的讀操作,并選出錯誤的讀參數,如果選不出錯誤的讀參數,則繼續(xù)降低所述存儲器與應用處理器的輸出驅動能力,直至選出錯誤的讀參數;其中,所述錯誤的讀參數對應的時鐘信號為第一時鐘信號;
從所述第一時鐘信號所在的采樣周期內,選擇第二時鐘信號對應的采樣點的讀參數;其中,所述第二時鐘信號與所述第一時鐘信號相隔預設時長。
本發(fā)明的實施方式還提供了一種選擇讀參數的裝置,包含:存儲器、應用處理器、控制模塊、讀模塊、第一選擇模塊與第二選擇模塊;
所述控制模塊,用于降低所述存儲器與所述應用處理器的輸出驅動能力;
所述讀模塊,用于對所述存儲器進行數據的讀操作;
所述第一選擇模塊,用于選出錯誤的讀參數,如果選不出錯誤的讀參數,則觸發(fā)所述控制模塊繼續(xù)降低所述存儲器與應用處理器的輸出驅動能力,直至所述第一選擇模塊選出錯誤的讀參數;其中,所述錯誤的讀參數對應的時鐘信號為第一時鐘信號;
所述第二選擇模塊,用于從所述第一時鐘信號所在的采樣周期內,選擇第二時鐘信號對應的采樣點的讀參數;其中,所述第二時鐘信號與所述第一時鐘信號相隔預設時長。
本發(fā)明實施方式相對于現有技術而言,是通過降低存儲器與應用處理器的輸出驅動能力,來制造較差的環(huán)境或者最差的環(huán)境,以保證可以選出錯誤的讀參數,進而,選出合理的讀參數,這樣,能夠正確有效地挑選出存儲器的讀參數,解決由于讀參數挑選不合理導致的系統(tǒng)死機的問題。
另外,在對所述存儲器進行數據的讀操作,并選出錯誤的讀參數的步驟中,可以通過第21條命令(CMD21)選擇所述錯誤的讀參數。
進一步地,在對所述存儲器進行數據的讀操作,并選出錯誤的讀參數的步驟中,如果通過所述CMD21命令選不出所述錯誤的讀參數,則可以從所述存儲器中讀取數據量大于預設閾值的數據,如果讀取的數據中包含的循環(huán)冗余校驗碼CRC出現錯誤,則根據出錯的CRC選出錯誤的讀參數。通過讀取較大數據量的數據,增加了選出錯誤的讀參數的概率。
另外,在對所述存儲器進行數據的讀操作,并選出錯誤的讀參數的步驟中,還可以從所述存儲器中讀取數據量大于預設閾值的數據,如果讀取的數據中包含的循環(huán)冗余校驗碼CRC出現錯誤,則根據出錯的CRC選出錯誤的讀參數。
附圖說明
圖1是根據現有技術中CMD21命令使用的用于tuning讀參數的數據碼型示意圖;
圖2是根據現有技術中讀參數流程示意圖;
圖3是根據現有技術中內部數據采樣示意圖;
圖4是根據現有技術中內部數據采樣示意圖;
圖5是根據現有技術中讀delay=2時邊沿變緩時數據采樣錯誤示意圖;
圖6是根據現有技術中讀delay=2時輸出數據有延遲時數據采樣錯誤示意圖;
圖7是根據本發(fā)明第一實施方式的選擇讀參數的方法流程圖;
圖8是根據本發(fā)明第一實施方式中的通過CMD21命令選擇錯誤側讀參數的方法流程圖;
圖9是根據本發(fā)明第一實施方式中的通過CRC選擇錯誤的讀參數的方 法流程圖;
圖10是根據本發(fā)明第一實施方式中的讀delay=2時輸出數據有延遲時數據采樣錯誤示意圖;
圖11是根據本發(fā)明第二實施方式的選擇讀參數的方法流程圖;
圖12是根據本發(fā)明第三實施方式的選擇讀參數的裝置的原理框圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明的各實施方式進行詳細的闡述。然而,本領域的普通技術人員可以理解,在本發(fā)明各實施方式中,為了使讀者更好地理解本申請而提出了許多技術細節(jié)。但是,即使沒有這些技術細節(jié)和基于以下各實施方式的種種變化和修改,也可以實現本申請各權利要求所要求保護的技術方案。
本發(fā)明的第一實施方式涉及一種選擇讀參數的方法,具體流程如圖7所示,包含如下步驟:
步驟701,通過CMD21(第21條命令)選擇錯誤的讀參數。在本步驟中,通過CMD21選擇錯誤的讀參數,具體如圖8所示,包含以下子步驟:
步驟801,設定讀參數。其中,讀參數的個數由應用處理器決定,系統(tǒng)一級時鐘分頻得到二級時鐘,二級時鐘供給存儲器(eMMC)讀時鐘。讀時鐘的delay個數由分頻比決定,假設二級時鐘由一級時鐘6分頻得到,則delay參數為0、1、2、3、4、5,假設假設二級時鐘由一級時鐘8分頻得到,則delay參數為0、1、2、3、4、5、6、7、8。
步驟802,發(fā)送CMD21。具體地說,是主機向存儲器發(fā)送CMD21。在本實施方式中,存儲器可以是嵌入式多媒體卡(eMMC)。
步驟803,讀取128字節(jié)數據。具體而言,是主機從eMMC讀取128字 節(jié)數據。
步驟804,判斷收到的數據與預定的Pattern(碼型)是否一致。若是,則執(zhí)行步驟805,否則,執(zhí)行步驟807。
步驟805,記錄通過篩選的讀參數。其中,通過篩選的讀參數是正確的讀參數。
步驟806,記錄未通過篩選的讀參數。其中,未通過篩選的讀參數為錯誤的讀參數。
步驟807,讀參數步長加1。
步驟808,判斷讀參數步長是否大于最大設定值。若是,則執(zhí)行步驟702,否則,執(zhí)行步驟802,也就是,當篩選讀參數完畢后進入判斷是否存在錯誤的讀參數的步驟。
步驟702,判斷是否存在錯誤的讀參數。若是,則執(zhí)行步驟703,否則,執(zhí)行步驟704。
步驟703,選出錯誤的讀參數。然后執(zhí)行步驟708。
步驟704,從存儲器中讀取數據量大于預設閾值的數據。其中,預設閾值可以為1024K字節(jié)。也就是,在本步驟中,從存儲器中至少要讀取1024K字節(jié)的數據。由于讀取的數據量比較大,增加了選出錯誤的讀參數的概率,所以,更有助于選出錯誤的讀參數。
具體而言,在本步驟中,如圖9所示,包含如下子步驟:
步驟901,設置讀參數,并發(fā)送讀數據塊命令。在本步驟中,是主機向eMMC發(fā)送讀數據塊命令。
步驟902,讀取數據量大于預設閾值的數據。即從存儲器中至少要讀取1024K字節(jié)的數據。
步驟903,判斷讀取的數據中包含的CRC(循環(huán)冗余校驗碼)是否出現錯誤。若是,則執(zhí)行步驟905,否則,執(zhí)行步驟904。
步驟904,記錄通過篩選的讀參數。其中,通過篩選的讀參數為CRC正確的數據。
步驟904,記錄未通過篩選的讀參數。其中,未通過篩選的讀參數為CRC錯誤的數據。
步驟905,讀參數步長加1。
步驟906,判斷讀參數步長是否大于最大設定值。若是,則執(zhí)行步驟704,否則,執(zhí)行步驟901,直至讀參數大于最大設定值。
步驟705,判斷讀取的數據包含的CRC是否出現錯誤。若是,則執(zhí)行步驟706,否則,則執(zhí)行步驟707。
步驟706,根據出錯的CRC選出錯誤的讀參數。
步驟707,降低存儲器與應用處理器的輸出驅動能力。在本實施方式中,應用處理器為多媒體應用處理器(MAP)。具體地說,存儲器與應用處理器的輸出驅動能力從高至低預先設置為若干個級別,每一次降低存儲器與應用處理器的輸出驅動能力可以僅降低一個級別,若在降低存儲器與應用處理器的輸出驅動能力后仍選不出錯誤的讀參數,則繼續(xù)降低存儲器與應用處理器的輸出驅動能力,直至降低至最低級別的輸出驅動能力。通過降低存儲器與應用處理器的輸出驅動能力,可以制造較差的環(huán)境,增加選出錯誤的讀參數的概率。當存儲器與應用處理器的輸出驅動能力降低至最低級別時,制造的環(huán)境最差,此時,一定可以保證選出錯誤的讀參數。
步驟708,從與錯誤的讀參數對應的第一時鐘信號所在的采樣周期內,選擇第二時鐘信號對應的采樣點的讀參數。其中,錯誤的讀參數對應的時鐘信號為第一時鐘信號,第二時鐘信號與第一時鐘信號相隔預設時長。在本實 施方式中,預設時長可以是二分之一的采樣周期。由于錯誤的讀參數對應的第一時鐘信號在采樣周期的邊緣,所以,在同一采樣周期內,與第一時鐘信號相隔二分之一的采樣周期的時鐘信號對應的采樣點的讀參數是合理有效的。通過半周期反轉確??梢垣@取合理有效的讀參數。
如圖10所示,如果當時延為2時對應的參數(為便于描述,記為參數2)為錯誤的讀參數時,由于參數2的時鐘信號在采樣周期的邊緣,從圖10可知,參數5的時鐘信號落在采樣周期的中間位置,其對應的時鐘信號與參數2的時鐘信號相隔約半個周期,故而參數5可認為是合理有效的讀參數。
步驟709,恢復存儲器與應用處理器的輸出驅動能力。
與現有技術相比,是通過降低存儲器與應用處理器的輸出驅動能力,來制造較差的環(huán)境或者最差的環(huán)境,以保證可以選出錯誤的讀參數,進而,選出合理的讀參數,這樣,能夠正確有效地挑選出存儲器的讀參數,解決由于讀參數挑選不合理導致的系統(tǒng)死機的問題。
本發(fā)明的第二實施方式涉及一種選擇讀參數的方法。第二實施方式在第一實施方式的基礎上作了進一步改進,主要改進之處在于:在本發(fā)明第二實施方式中,僅采用通過從存儲器中讀取數據量大于預設閾值的數據,并通過判斷數據中包含的CRC是否存在錯誤來選取錯誤的讀參數,由于本方式讀取的數據量較大,可以增大選出錯誤讀參數的概率,所以,可以更快速有效地選取出錯誤的讀參數,進而選出正確的讀參數。
具體而言,在本實施方式中,選擇讀參數的方法,如圖11所示,包含步驟1101~1106,其中,步驟1101~1106分別與第一實施方式中的步驟704~709相似,在此不再贅述。
需要說明的是,在實際應用時,還可以將通過CMD21選擇錯誤的讀參數與降低存儲器與應用處理器的輸出驅動能力相結合,選出錯誤的讀參數。
上面各種方法的步驟劃分,只是為了描述清楚,實現時可以合并為一個步驟或者對某些步驟進行拆分,分解為多個步驟,只要包含相同的邏輯關系,都在本專利的保護范圍內;對算法中或者流程中添加無關緊要的修改或者引入無關緊要的設計,但不改變其算法和流程的核心設計都在該專利的保護范圍內。
本發(fā)明第三實施方式涉及一種選擇讀參數的裝置,如圖12所示,包含:存儲器、應用處理器、控制模塊、讀模塊、第一選擇模塊與第二選擇模塊。
控制模塊,用于降低存儲器與應用處理器的輸出驅動能力。
讀模塊,用于對存儲器進行數據的讀操作;讀模塊還用于從存儲器中讀取數據量大于預設閾值的數據;如果讀模塊讀取的數據中包含的循環(huán)冗余校驗碼(CRC)出現錯誤,則觸發(fā)第一選擇模塊根據出錯的CRC選出錯誤的讀參數。
第一選擇模塊,用于選出錯誤的讀參數,如果選不出錯誤的讀參數,則觸發(fā)控制模塊繼續(xù)降低存儲器與應用處理器的輸出驅動能力,直至第一選擇模塊選出錯誤的讀參數;其中,錯誤的讀參數對應的時鐘信號為第一時鐘信號。
第二選擇模塊,用于從第一時鐘信號所在的采樣周期內,選擇第二時鐘信號對應的采樣點的讀參數;其中,第二時鐘信號與第一時鐘信號相隔預設時長。
不難發(fā)現,本實施方式為與第一實施方式相對應的裝置實施例,本實施方式可與第一實施方式互相配合實施。第一實施方式中提到的相關技術細節(jié)在本實施方式中依然有效,為了減少重復,這里不再贅述。相應地,本實施方式中提到的相關技術細節(jié)也可應用在第一實施方式中。
值得一提的是,本實施方式中所涉及到的各模塊均為邏輯模塊,在實際應用中,一個邏輯單元可以是一個物理單元,也可以是一個物理單元的一部 分,還可以以多個物理單元的組合實現。此外,為了突出本發(fā)明的創(chuàng)新部分,本實施方式中并沒有將與解決本發(fā)明所提出的技術問題關系不太密切的單元引入,但這并不表明本實施方式中不存在其它的單元。
本領域的普通技術人員可以理解,上述各實施方式是實現本發(fā)明的具體實施例,而在實際應用中,可以在形式上和細節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。