本發(fā)明涉及存儲設(shè)備領(lǐng)域,具體涉及一種cf卡實現(xiàn)熱插拔功能的方法及系統(tǒng)。
背景技術(shù):
cf卡(compactflash)最初是一種用于便攜式電子設(shè)備的數(shù)據(jù)存儲設(shè)備。作為一種存儲設(shè)備,它革命性的使用了閃存,于1994年首次由sandisk公司生產(chǎn)并制定了相關(guān)規(guī)范。當(dāng)前,它的物理格式已經(jīng)被多種設(shè)備所采用。cf卡具有比其它存儲方式更長的壽命以及較低的單位容量成本,同時也可以在較小的尺寸上提供較大的容量。
但是cf卡無熱插拔功能,不像u盤,sata卡帶有熱插拔功能。在使用的過程中難免出現(xiàn)需要帶電插板的情況。熱插拔期間由于vcc電源電壓和地電平的變化,會在信號總線上引入共模噪聲,造成數(shù)據(jù)通信錯誤,系統(tǒng)意外復(fù)位,甚至是導(dǎo)致元器件損壞。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種cf卡實現(xiàn)熱插拔功能的方法。
為達到以上目的,本發(fā)明采取的技術(shù)方案是:
一種cf卡實現(xiàn)熱插拔功能的方法,該方法包括以下步驟:
當(dāng)需要拔出cf卡時,應(yīng)用程序通過cf卡熱插拔驅(qū)動提供的接口,設(shè)定一個等待拔卡動作的事件;
在拔卡前,先按下觸發(fā)開關(guān),然后再拔卡,使cf卡控制器產(chǎn)生一個中斷請求;
cf卡熱插拔驅(qū)動響應(yīng)該中斷請求,并觸發(fā)等待拔卡動作的事件,喚醒應(yīng)用程序,同時通過cf卡熱插拔驅(qū)動使指示信號燈閃動;
應(yīng)用程序喚醒后首先切斷對cf卡讀寫的進程,然后umountcf卡,再通知cf卡熱插拔驅(qū)動進行卸載cf卡,最后由應(yīng)用程序設(shè)定一個等待插卡動作的事件;
cf卡熱插拔驅(qū)動卸載cf卡,卸載完成后通過cf卡熱插拔驅(qū)動和電源控制芯片給cf卡斷電,使指示信號燈停止閃動;
當(dāng)需要插入cf卡時,cf卡控制器通過檢查cf卡的在位指示信號來判斷是否有卡插入,cf卡在位則產(chǎn)生一個中斷請求;
cf卡熱插拔驅(qū)動響應(yīng)該中斷請求,同時通過cf卡熱插拔驅(qū)動和電源控制芯片給cf卡上電,并調(diào)用卡識別函數(shù)對cf卡進行初始化;
cf卡識別完成后,觸發(fā)等待插卡動作的事件,喚醒應(yīng)用程序;
應(yīng)用程序mountcf卡,然后啟動讀寫cf卡的進程。
在上述技術(shù)方案的基礎(chǔ)上,應(yīng)用程序通過cf卡熱插拔驅(qū)動提供的ioctl接口,設(shè)定一個等待拔卡動作的事件。
在上述技術(shù)方案的基礎(chǔ)上,cf卡熱插拔驅(qū)動寫入一個reg文件使指示信號燈閃動。
在上述技術(shù)方案的基礎(chǔ)上,cf卡熱插拔驅(qū)動寫入一個reg文件,切斷電源控制芯片的開關(guān)給cf卡斷電,使指示信號燈停止閃動。
在上述技術(shù)方案的基礎(chǔ)上,當(dāng)cf卡控制器持續(xù)一段時間檢測到cf卡在位后產(chǎn)生一個中斷請求。
在上述技術(shù)方案的基礎(chǔ)上,cf卡熱插拔驅(qū)動調(diào)用fdisk–l命令對cf卡進行初始化。
在上述技術(shù)方案的基礎(chǔ)上,當(dāng)cf卡完全拔下,并且持續(xù)3秒鐘后,再由cf卡控制器產(chǎn)生一個中斷請求。
與此同時,本發(fā)明還提供一種cf卡實現(xiàn)熱插拔功能的系統(tǒng)。
為達到以上目的,本發(fā)明采取的技術(shù)方案是:
一種cf卡實現(xiàn)熱插拔功能的系統(tǒng),包括:
指示信號燈,其用于通過閃動提示是否可進行拔卡操作;
cf卡控制器,其用于在拔卡或插卡操作時產(chǎn)生一個中斷請求;
觸發(fā)開關(guān),其與所述cf卡控制器相連,用于驅(qū)使所述cf卡控制器產(chǎn)生中斷請求;
電源控制芯片,其用于為所述cf卡和cf卡控制器供電;
應(yīng)用程序,其用于設(shè)定等待拔卡動作的事件和等待插卡動作的事件;以及
cf卡熱插拔驅(qū)動,其用于響應(yīng)所述cf卡控制器產(chǎn)生的中斷請求、觸發(fā)所述等待拔卡動作的事件或等待插卡動作的事件,以及控制所述電源控制芯片為cf卡斷電或上電,執(zhí)行對所述cf卡的卸載,所述cf卡熱插拔驅(qū)動還用于控制指示信號燈的閃動。
在上述技術(shù)方案的基礎(chǔ)上,所述電源控制芯片包括輸入端和輸出端,所述輸入端與所述控制器相連,所述輸出端與所述cf卡相連。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
本發(fā)明中的cf卡實現(xiàn)熱插拔功能的方法,通過cf卡控制器、觸發(fā)開關(guān)、電源控制芯片、應(yīng)用程序和cf卡熱插拔驅(qū)動之間的聯(lián)動,能夠在不切斷電源的情況下拔下cf卡,提高了靈活性。與此同時,插入cf卡時可自動對cf卡進行識別,實現(xiàn)了cf卡的熱插拔功能。
附圖說明
圖1為本發(fā)明中拔卡步驟的流程圖;
圖2為本發(fā)明中插卡步驟的流程圖;
圖3為本發(fā)明中cf卡實現(xiàn)熱插拔功能的系統(tǒng)的結(jié)構(gòu)框圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明作進一步詳細說明。
本發(fā)明提供一種cf卡實現(xiàn)熱插拔功能的方法,參見圖1所示,其拔卡步驟為:
s11.當(dāng)需要拔出cf卡時,應(yīng)用程序通過cf卡熱插拔驅(qū)動提供的接口,設(shè)定一個等待拔卡動作的事件;
應(yīng)用程序設(shè)定一個等待拔卡動作的事件后,便等待拔卡動作,當(dāng)拔卡動作未發(fā)生時,應(yīng)用程序處于睡眠狀態(tài)。此外,本發(fā)明中的cf卡熱插拔驅(qū)動提供的接口為ioctl接口,這樣應(yīng)用層的ioctl函數(shù)傳入的cmd和arg參數(shù)會直接傳入驅(qū)動層的ioctl接口。
s12.在拔卡前,先按下觸發(fā)開關(guān),然后再拔卡,使cf卡控制器產(chǎn)生一個中斷請求;
本發(fā)明中當(dāng)cf卡完全拔下,并且持續(xù)3秒鐘后,再由cf卡控制器產(chǎn)生一個中斷請求。
s13.cf卡熱插拔驅(qū)動響應(yīng)該中斷請求,并觸發(fā)等待拔卡動作的事件,喚醒應(yīng)用程序,同時通過cf卡熱插拔驅(qū)動使指示信號燈閃動;
本發(fā)明中,cf卡熱插拔驅(qū)動寫入一個reg文件使指示信號燈閃動。
s14.應(yīng)用程序喚醒后首先切斷對cf卡讀寫的進程,然后umountcf卡,再通知cf卡熱插拔驅(qū)動進行卸載cf卡,最后由應(yīng)用程序設(shè)定一個等待插卡動作的事件;
umount命令主要用于卸載已經(jīng)加載的文件系統(tǒng),mount命令主要用于加載文件系統(tǒng)。此外,應(yīng)用程序設(shè)定一個等待插卡動作的事件后,只要等待插卡動作的事件未發(fā)生,則應(yīng)用程序處于睡眠狀態(tài)。
s15.cf卡熱插拔驅(qū)動卸載cf卡,卸載完成后通過cf卡熱插拔驅(qū)動和電源控制芯片給cf卡斷電,使指示信號燈停止閃動;
本發(fā)明中,cf卡熱插拔驅(qū)動寫入一個reg文件,切斷電源控制芯片的開關(guān)給cf卡斷電,使指示信號燈停止閃動。
參見圖2所示,其插卡步驟為:
s21.當(dāng)需要插入cf卡時,cf卡控制器通過檢查cf卡的在位指示信號來判斷是否有卡插入,cf卡在位則產(chǎn)生一個中斷請求;
當(dāng)cf卡控制器持續(xù)一段時間檢測到cf卡在位后產(chǎn)生一個中斷請求。具體的,在插卡的時,cf卡控制器通過檢查cf卡的在位指示信號cd<1..2>來判斷是否有卡插入,在位指示信號cd<1..2>的作用是判斷cf卡是否在位。當(dāng)cf卡控制器持續(xù)一段時間檢測到cf卡在位后,產(chǎn)生一個中斷請求,本發(fā)明中持續(xù)的時間為3s。
s22.cf卡熱插拔驅(qū)動響應(yīng)該中斷請求,同時通過cf卡熱插拔驅(qū)動和電源控制芯片給cf卡上電,并調(diào)用卡識別函數(shù)對cf卡進行初始化;
本發(fā)明采用的是linux中的fdisk–l命令來對cf卡進行初始化的。
s23.cf卡識別完成后,觸發(fā)等待插卡動作的事件,喚醒應(yīng)用程序;
s24.應(yīng)用程序mountcf卡,然后啟動讀寫cf卡的進程。
采用上述方式后,能夠在不切斷電源的情況下拔下cf卡,提高了靈活性。與此同時,插入cf卡時可自動對cf卡進行識別,從而實現(xiàn)了cf卡的熱插拔功能。
參見圖3所示,本發(fā)明還提供一種cf卡實現(xiàn)熱插拔功能的系統(tǒng),包括指示信號燈、cf卡控制器、觸發(fā)開關(guān)、電源控制芯片、應(yīng)用程序和cf卡熱插拔驅(qū)動。
指示信號燈,其用于通過閃動提示是否可進行拔卡操作。
cf卡控制器,其用于在拔卡或插卡操作時產(chǎn)生一個中斷請求。
觸發(fā)開關(guān),其與cf卡控制器相連,用于驅(qū)使所述cf卡控制器產(chǎn)生中斷請求。
電源控制芯片,其用于為cf卡和cf卡控制器供電。本發(fā)明中的電源控制芯片包括輸入端和輸出端,輸入端與控制器相連,輸出端與cf卡相連。
應(yīng)用程序,其用于設(shè)定等待拔卡動作的事件和等待插卡動作的事件。
cf卡熱插拔驅(qū)動,其用于響應(yīng)所述cf卡控制器產(chǎn)生的中斷請求、觸發(fā)所述等待拔卡動作的事件或等待插卡動作的事件,以及控制所述電源控制芯片為cf卡斷電或上電,執(zhí)行對所述cf卡的卸載,所述cf卡熱插拔驅(qū)動還用于控制指示信號燈的閃動。
本發(fā)明不局限于上述實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍之內(nèi)。本說明書中未作詳細描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。