專利名稱:Sd卡發(fā)布卡片上電狀態(tài)位的方法及硬件電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及半導(dǎo)體快閃記憶器領(lǐng)域,特別是涉及一種SD(SecureDigital Memory Card安全數(shù)碼)卡初始化認(rèn)證過程中發(fā)布卡片上電狀態(tài)位的方法。本發(fā)明還涉及一種用于 實(shí)現(xiàn)所述方法的硬件電路。
背景技術(shù):
SD卡是一種基于半導(dǎo)體非易失性閃速存儲(chǔ)器(flash)的新一代記憶設(shè)備,它被廣 泛應(yīng)用于便攜式裝置上,例如手機(jī)、數(shù)碼相機(jī)、數(shù)碼攝像機(jī)、個(gè)人數(shù)碼助理(PDA)和多媒體 播放器等。SD卡由日本的松下、東芝及美國的SanDisk公司于1999年8月共同開發(fā)研制, 具有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以及很好的安全性等優(yōu)點(diǎn)。SD卡通訊系統(tǒng)的拓?fù)浣Y(jié)構(gòu)為主從式,SD卡作為從設(shè)備,受控于SD主機(jī)。SD卡通 訊過程中的數(shù)據(jù)流有三種含義命令、應(yīng)答和數(shù)據(jù)。SD主機(jī)通過命令告知SD卡行為,SD卡 通過應(yīng)答將自身狀態(tài)告知SD主機(jī),SD主機(jī)通過數(shù)據(jù)線與SD卡進(jìn)行數(shù)據(jù)交互。SD卡工作在SD模式時(shí),內(nèi)部狀態(tài)機(jī)有10種狀態(tài),它們分別是inactive State (不活動(dòng)狀態(tài))、Idle State (空閑狀態(tài))、Ready State (準(zhǔn)備好狀態(tài))、 Identification State ( i只另Ij狀態(tài))、Stand-by State (待命狀態(tài))、Transfer State (傳 輸狀態(tài))、Sending-data State (發(fā)送數(shù)據(jù)狀態(tài))、Receive-data State (接收數(shù)據(jù)狀態(tài))、 Programming State (編程狀態(tài))、Disconnect State (斷開狀態(tài))。在軟硬件配合的SD卡 架構(gòu)中,狀態(tài)機(jī)由軟件切換。按照SD協(xié)議,這些狀態(tài)與幾十個(gè)命令相對(duì)應(yīng),某一個(gè)狀態(tài)下, 只有約定的命令才是有效的;對(duì)于某一個(gè)命令,也只有SD卡處于一個(gè)或者幾個(gè)約定狀態(tài)時(shí) 才是有效的。對(duì)于無效的命令,SD卡不作應(yīng)答。SD卡在工作時(shí),上電后SD主機(jī)首先對(duì)SD卡進(jìn)行初始化認(rèn)證。在初始化認(rèn)證過程 中,SD主機(jī)會(huì)向SD卡發(fā)送ACMD41命令,然后SD卡將內(nèi)部OCR寄存器的內(nèi)容通過應(yīng)答反 饋給SD主機(jī)。OCR(Operatic)n ConditionRegister操作條件寄存器)寄存器的位寬為32 位;其中,最高位0CR[31]為卡片上電狀態(tài)位(Card power up status bit),該位為0,表 示SD卡還沒有完成上電工作,該位為1,表示SD卡已完成上電工作,該位上電默認(rèn)值為0。 SD主機(jī)發(fā)送完ACMD41命令后,如果返回應(yīng)答中的卡片上電狀態(tài)位為0,SD主機(jī)會(huì)重復(fù)發(fā)送 ACMD41,直到返回應(yīng)答中的卡片上電狀態(tài)位為1,SD主機(jī)才會(huì)發(fā)送其它命令。在初始化認(rèn)證 過程中,ACMD41命令對(duì)應(yīng)的SD卡狀態(tài)是Idle State (空閑狀態(tài)),該命令通過后,SD主機(jī) 與SD卡的狀態(tài)機(jī)均切換到Ready State (準(zhǔn)備好狀態(tài))。目前,SD卡有兩種設(shè)計(jì)實(shí)現(xiàn)架構(gòu),分別是硬件架構(gòu)和軟硬件配合架構(gòu)。在軟硬件 配合的架構(gòu)中,已知的SD卡發(fā)布卡片上電狀態(tài)位的方式是軟件在處理ACMD41時(shí),與硬件 沒有信息交互,僅根據(jù)程序的執(zhí)行情況設(shè)置卡片上電狀態(tài)位0CR[31],當(dāng)上電程序執(zhí)行完畢 后,軟件將0CR[31]設(shè)置為1,并將SD卡的狀態(tài)機(jī)切換至Ready State ;否則,0CR[31]仍為 0,SD卡的狀態(tài)機(jī)仍為Idle State0這樣的做法存在如下風(fēng)險(xiǎn)由于應(yīng)答的發(fā)送是串行的 (0CR[31]最先發(fā)送,0CR
最后發(fā)送),很可能是硬件將0CR[31](值為0)送出后,軟件才將0CR[31]置1,隨后便將SD卡的狀態(tài)機(jī)切換至Ready State ;而SD主機(jī)見到的0CR[31] 值為0,接下來還要再發(fā)送ACMD41,此時(shí)SD卡的狀態(tài)機(jī)已切換至Ready State, SD卡會(huì)將 ACMD41判斷為非法命令,SD卡不作應(yīng)答,從而導(dǎo)致初始化認(rèn)證過程失敗。目前的方案只是存在風(fēng)險(xiǎn),不一定都會(huì)出問題,這是因?yàn)榘凑誗D協(xié)議,從收到 ACMD41命令到SD卡返回OCR[31],間隔13個(gè)SD clock(時(shí)鐘周期)。SD協(xié)議中規(guī)定,SD 卡初始化認(rèn)證過程中,SD主機(jī)提供的SD clock最快頻率為400k ;而SD卡的CPU工作頻率 往往較高(例如100M),軟件執(zhí)行速度較快,在處理ACMD41時(shí),SD卡將0CR[31]發(fā)送出去之 前,軟件一般能夠完成對(duì)0CR[31]的設(shè)置,所以沒有出現(xiàn)上述問題。但是,目前市場上的SD 主機(jī)并不都是嚴(yán)格按照SD協(xié)議來設(shè)計(jì)的,有的SD主機(jī)在初始化認(rèn)證過程中的頻率要遠(yuǎn)高 于400k,如果CPU的工作頻率又不太高,軟件執(zhí)行速度不夠快,那么上述風(fēng)險(xiǎn)發(fā)生的概率將 大大增加。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種SD卡發(fā)布卡片上電狀態(tài)位的方法,能夠使 卡片上電狀態(tài)位正確發(fā)布,SD卡狀態(tài)機(jī)正確切換,初始化認(rèn)證過程正常完成;為此,本發(fā)明 還要提供一種用于實(shí)現(xiàn)所述方法的硬件電路。為解決上述技術(shù)問題,本發(fā)明的SD卡發(fā)布卡片上電狀態(tài)位的方法是采用如下技 術(shù)方案實(shí)現(xiàn)的設(shè)置一位寄存器,硬件電路收到SD主機(jī)發(fā)布的ACMD41命令后,將SD卡的卡 片上電狀態(tài)位0CR[31]鎖存到該寄存器,硬件電路通過應(yīng)答發(fā)布的卡片上電狀態(tài)位是該寄 存器的值;軟件在處理ACMD41時(shí),根據(jù)程序的執(zhí)行情況設(shè)置卡片上電狀態(tài)位0CR[31],當(dāng)上 電程序執(zhí)行完畢后,軟件將0CR[31]設(shè)置為1,然后查詢該寄存器的值,如果為1,則將SD卡 的狀態(tài)機(jī)切換至Ready Mate,如果為0,SD卡的狀態(tài)機(jī)仍為Idle State0所述用于實(shí)現(xiàn)所述方法的硬件電路的技術(shù)方案參見具體實(shí)施方式
部分的描述。本發(fā)明在SD卡初始化認(rèn)證過程中采用軟硬件配合的方法,硬件接收到命令后,對(duì) 卡片上電狀態(tài)位通過寄存器進(jìn)行鎖存后再發(fā)布,軟件在切換SD卡狀態(tài)機(jī)之前查詢被鎖存 的寄存器;這樣就消除了因卡片上電狀態(tài)位發(fā)布延遲而導(dǎo)致的初始化認(rèn)證過程失敗的風(fēng) 險(xiǎn)。不管SD主機(jī)在初始化認(rèn)證過程中是否嚴(yán)格按照SD協(xié)議設(shè)置頻率,也不必關(guān)心軟件執(zhí) 行速度是否足夠快,均能夠使卡片上電狀態(tài)位正確發(fā)布,SD卡狀態(tài)機(jī)正確切換,初始化認(rèn)證 過程正常完成。有利于增強(qiáng)SD卡產(chǎn)品的兼容性、工作的穩(wěn)定性,減少對(duì)軟件執(zhí)行速度的依 賴性。
下面結(jié)合附圖與具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明附圖是在本發(fā)明的方法中采用的硬件電路一實(shí)施例結(jié)構(gòu)框圖。
具體實(shí)施例方式在本發(fā)明的方法中采用的硬件電路一實(shí)施例結(jié)構(gòu)框圖如圖所示,包括命令接收電路,負(fù)責(zé)接收來自SD主機(jī)發(fā)布的命令。第二同步電路,與所述命令接收電路連接,負(fù)責(zé)將外部SD時(shí)鐘域的信號(hào)同步到內(nèi)部時(shí)鐘域。鎖存控制電路,與第二同步電路及鎖存寄存器連接,接收OCR寄存器的卡片上電 狀態(tài)位0CR[31]信號(hào),并將卡片上電狀態(tài)位0CR[31]信號(hào)傳送到鎖存寄存器。鎖存寄存器,與鎖存控制電路、第一同步電路連接,用于鎖存卡片上電狀態(tài)位 OCR[31]。第一同步電路,與鎖存寄存器、應(yīng)答發(fā)送控制電路連接,負(fù)責(zé)將內(nèi)部時(shí)鐘域的信號(hào) 同步到外部SD時(shí)鐘域。應(yīng)答發(fā)送控制電路,將命令的應(yīng)答返回給SD主機(jī)。寄存器訪問電路,用于軟件對(duì)所述鎖存寄存器的讀寫操作。跨時(shí)鐘域信號(hào)由第一同步電路和第二同步電路處理。結(jié)合附圖所示,命令接收電路收到來自SD主機(jī)的ACMD41命令后,鎖存控制電路將 卡片上電狀態(tài)位0CR[31]鎖存到鎖存寄存器。應(yīng)答發(fā)送控制電路發(fā)布的卡片上電狀態(tài)位 0CR[31]是鎖存寄存器的值。軟件在處理ACMD41命令時(shí),根據(jù)程序的執(zhí)行情況設(shè)置卡片上 電狀態(tài)位0CR[31];當(dāng)上電程序執(zhí)行完畢后,軟件將卡片上電狀態(tài)位0CR[31]設(shè)置為1,然后 查詢鎖存寄存器的值,如果為1,說明硬件電路發(fā)布給SD主機(jī)的卡片上電狀態(tài)位0CR[31]為 1,軟件將SD卡的狀態(tài)機(jī)切換至Ready State ;如果為0,說明硬件電路發(fā)布給SD主機(jī)韻卡 片上電狀態(tài)位OCR[31]為0,SD卡的狀態(tài)機(jī)仍為Idle State。以上通過具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,但這些并非構(gòu)成對(duì)本發(fā)明的 限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進(jìn),這些也 應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種SD卡發(fā)布卡片上電狀態(tài)位的方法,其特征在于設(shè)置一位寄存器,硬件電路收 到SD主機(jī)發(fā)布的ACMD41命令后,將SD卡的卡片上電狀態(tài)位0CR[31]鎖存到該寄存器,硬 件電路通過應(yīng)答發(fā)布的卡片上電狀態(tài)位是該寄存器的值;軟件在處理ACMD41命令時(shí),根據(jù) 程序的執(zhí)行情況設(shè)置卡片上電狀態(tài)位0CR[31],當(dāng)上電程序執(zhí)行完畢后,軟件將0CR[31]設(shè) 置為1,然后查詢該寄存器的值,如果為1,則將SD卡的狀態(tài)機(jī)切換至準(zhǔn)備好狀態(tài),如果為0, SD卡的狀態(tài)機(jī)仍為空閑狀態(tài)。
2.一種用于實(shí)現(xiàn)權(quán)利要求1所述方法的硬件電路,其特征在于,包括 命令接收電路,負(fù)責(zé)接收來自SD主機(jī)發(fā)布的命令;第二同步電路,與所述命令接收電路連接,負(fù)責(zé)將外部SD時(shí)鐘域的信號(hào)同步到內(nèi)部時(shí) 鐘域;鎖存控制電路,與第二同步電路及鎖存寄存器連接,接收OCR寄存器的卡片上電狀態(tài) 位0CR[31]信號(hào),并將卡片上電狀態(tài)位0CR[31]信號(hào)傳送到鎖存寄存器;鎖存寄存器,與鎖存控制電路、第一同步電路連接,用于鎖存卡片上電狀態(tài)位 OCR[31];第一同步電路,與鎖存寄存器、應(yīng)答發(fā)送控制電路連接,負(fù)責(zé)將內(nèi)部時(shí)鐘域的信號(hào)同步 到外部SD時(shí)鐘域;應(yīng)答發(fā)送控制電路,將命令的應(yīng)答返回給SD主機(jī); 寄存器訪問電路,用于軟件對(duì)所述鎖存寄存器的讀寫操作; 跨時(shí)鐘域信號(hào)由第一同步電路和第二同步電路處理。
3.如權(quán)利要求2所述的硬件電路,其特征在于命令接收電路收到來自SD主機(jī)的 ACMD41命令后,鎖存控制電路將卡片上電狀態(tài)位0CR[31]鎖存到鎖存寄存器;應(yīng)答發(fā)送控 制電路發(fā)布的卡片上電狀態(tài)位0CR[31]是鎖存寄存器的值;軟件在處理ACMD41命令時(shí),根 據(jù)程序的執(zhí)行情況設(shè)置卡片上電狀態(tài)位0CR[31];當(dāng)上電程序執(zhí)行完畢后,軟件將卡片上 電狀態(tài)位0CR[31]設(shè)置為1,然后查詢鎖存寄存器的值,如果為1,說明硬件電路發(fā)布給SD 主機(jī)的卡片上電狀態(tài)位0CR[31]為1,軟件將SD卡的狀態(tài)機(jī)切換至準(zhǔn)備好狀態(tài);如果為0, 說明硬件電路發(fā)布給SD主機(jī)的卡片上電狀態(tài)位0CR[31]為0,SD卡的狀態(tài)機(jī)仍為空閑狀 態(tài)。
全文摘要
本發(fā)明公開了一種SD卡發(fā)布卡片上電狀態(tài)位的方法,硬件電路接收到命令后,對(duì)卡片上電狀態(tài)位進(jìn)行鎖存后再發(fā)布,軟件在切換SD卡狀態(tài)機(jī)之前查詢鎖存寄存器。本發(fā)明還公開了一種用于實(shí)現(xiàn)所述方法的硬件電路,包括命令接收電路,負(fù)責(zé)接收來自SD主機(jī)的命令;鎖存控制電路,將卡片上電狀態(tài)位鎖存到寄存器;應(yīng)答發(fā)送電路,將命令的應(yīng)答返回給SD主機(jī);同步電路,用于處理跨時(shí)鐘域信號(hào);寄存器訪問電路,用于軟件對(duì)寄存器的讀寫操作。本發(fā)明能夠使卡片上電狀態(tài)位正確發(fā)布,SD卡狀態(tài)機(jī)正確切換,初始化認(rèn)證過程正常完成。
文檔編號(hào)G11C16/06GK102103887SQ20091020200
公開日2011年6月22日 申請(qǐng)日期2009年12月21日 優(yōu)先權(quán)日2009年12月21日
發(fā)明者張曉成 申請(qǐng)人:上海華虹集成電路有限責(zé)任公司