一種基于嵌入式系統(tǒng)的閃存操作方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種基于嵌入式系統(tǒng)的閃存操作方法及裝置,用于解決現(xiàn)有技術(shù)中需要根據(jù)不同的操作系統(tǒng)分別設(shè)計(jì)和規(guī)劃Flash。該方法為:接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求;判斷操作模式是按文件方式操作還是按物理地址方式操作;在確定操作模式為按文件方式操作時(shí),繼續(xù)判斷在閃存中是否存在與操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,若是,則按照操作指令對(duì)文件進(jìn)行相應(yīng)操作;否則,對(duì)應(yīng)地址區(qū)間創(chuàng)建文件,按照操作指令對(duì)創(chuàng)建的文件進(jìn)行相應(yīng)操作;在確定操作模式為按物理地址方式操作時(shí),則根據(jù)操作指令、按照操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作。本發(fā)明為不同操作系統(tǒng)的嵌入式產(chǎn)品提供了統(tǒng)一操作和管理Flash的方法。
【專利說明】一種基于嵌入式系統(tǒng)的閃存操作方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)【技術(shù)領(lǐng)域】,尤其涉及一種基于嵌入式系統(tǒng)的閃存操作方法及裝置。
【背景技術(shù)】
[0002]閃存(Flash)是嵌入式平臺(tái)的存儲(chǔ)設(shè)備,對(duì)于一些嵌入式平臺(tái)設(shè)備,如機(jī)頂盒,F(xiàn)lash用來存放系統(tǒng)軟件,應(yīng)用軟件和用戶信息等內(nèi)容。在對(duì)系統(tǒng)軟件設(shè)計(jì)時(shí),需要對(duì)上述內(nèi)容的存放地址進(jìn)行詳細(xì)嚴(yán)格的規(guī)劃。一些應(yīng)用模塊,如CA模塊、廣告模塊或節(jié)目管理模塊等等,都會(huì)使用到Flash的存儲(chǔ)信息,對(duì)Flash進(jìn)行讀取、寫入或擦除等操作,并且各個(gè)應(yīng)用模塊只能在分配給自己的地址區(qū)間內(nèi)進(jìn)行操作,一旦寫錯(cuò)了地址,有可能會(huì)引起嚴(yán)重的系統(tǒng)故障。
[0003]使用不同操作系統(tǒng)的嵌入式平臺(tái),對(duì)Flash的操作模式有很大的區(qū)別。對(duì)于Linux操作系統(tǒng),使用的是內(nèi)存技術(shù)設(shè)備(Memory Technology Device,MTD)為Flash建立統(tǒng)一的抽象接口,用戶是調(diào)用Linux系統(tǒng)自身提供的讀取、寫入或擦除文件的標(biāo)準(zhǔn)接口對(duì)Flash進(jìn)行相關(guān)操作。對(duì)于UCOS操作系統(tǒng),用戶直接調(diào)用Flash的原始驅(qū)動(dòng)對(duì)Flash進(jìn)行讀取、寫入或擦除文件的操作。
[0004]現(xiàn)有技術(shù)存在以下缺陷:當(dāng)應(yīng)用層軟件在不同操作系統(tǒng)之間切換時(shí),由于在不同的操作系統(tǒng)下,對(duì)Flash的操作模式不同,需要根據(jù)不同的操作系統(tǒng)分別設(shè)計(jì)和規(guī)劃Flash。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供一種基于嵌入式系統(tǒng)的閃存操作方法及裝置,用以解決現(xiàn)有技術(shù)中需要針對(duì)不同的操作系統(tǒng)分別設(shè)計(jì)和規(guī)劃Flash的問題。
[0006]本發(fā)明實(shí)施例提供一種基于嵌入式系統(tǒng)的閃存操作方法及裝置,包括以下兩個(gè)方面。
[0007]第一方面,一種基于嵌入式系統(tǒng)的閃存操作方法,該方法包括:
[0008]接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求,閃存操作請(qǐng)求中攜帶有操作指令、操作地址信息以及操作模式;
[0009]判斷操作模式是按文件方式操作還是按物理地址方式操作;
[0010]在確定操作模式為按文件方式操作時(shí),繼續(xù)判斷在閃存中是否存在與操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,若是,則按照操作指令對(duì)文件進(jìn)行相應(yīng)操作;否則,對(duì)應(yīng)地址區(qū)間創(chuàng)建文件,按照操作指令對(duì)創(chuàng)建的文件進(jìn)行相應(yīng)操作;
[0011]在確定操作模式為按物理地址方式操作時(shí),則根據(jù)操作指令、按照操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作。
[0012]通過這種可能的實(shí)施方式,為不同的操作系統(tǒng)的嵌入式產(chǎn)品,提供了一種統(tǒng)一的Flash操作方法,在系統(tǒng)軟件設(shè)計(jì)時(shí)規(guī)劃好后續(xù)進(jìn)行Flash操作的文件存儲(chǔ)路徑后,技術(shù)人員不必關(guān)心該應(yīng)用層軟件應(yīng)用在何種嵌入式平臺(tái),直接采用本發(fā)明實(shí)施例的Flash操作方法,根據(jù)不同的操作模式進(jìn)行相應(yīng)的處理,能夠穩(wěn)定可靠的對(duì)Flash進(jìn)行相關(guān)操作,減少了越界存儲(chǔ)的可能性,保證了系統(tǒng)的可靠性。使得在不同操作系統(tǒng)的產(chǎn)品可以相互繼承,對(duì)于相同應(yīng)用的產(chǎn)品可實(shí)現(xiàn)迅速切換,縮短了新產(chǎn)品的開發(fā)調(diào)試時(shí)間。
[0013]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求之前,還包括:
[0014]在系統(tǒng)配置階段,獲取預(yù)設(shè)的操作模式,判斷操作模式是按文件方式操作還是按物理地址方式操作;
[0015]在確定操作模式為按文件方式操作時(shí),創(chuàng)建對(duì)閃存進(jìn)行后續(xù)操作時(shí)的文件存儲(chǔ)路徑,并獲取閃存的內(nèi)存技術(shù)設(shè)備信息,根據(jù)內(nèi)存技術(shù)設(shè)備信息配置塊信息;
[0016]在確定操作模式為按物理地址方式操作時(shí),獲取閃存的公共閃存接口信息,根據(jù)公共閃存接口信息配置塊信息;
[0017]其中,塊信息包括各個(gè)塊的塊號(hào)、首地址和塊大小。
[0018]通過這種可能的實(shí)施方式,提供了針對(duì)UCOS系統(tǒng)和Linux系統(tǒng)不同的配置方法,使得進(jìn)一步的可以分別根據(jù)兩種系統(tǒng)的不同操作模式,對(duì)閃存采用不同的操作方式。
[0019]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,判斷在閃存中是否存在與操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,包括:
[0020]根據(jù)操作地址信息中攜帶的起始物理地址和終止物理地址確定地址區(qū)間;
[0021]根據(jù)塊信息確定被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),判斷閃存中是否存在與覆蓋的各個(gè)塊的塊號(hào)對(duì)應(yīng)的文件。
[0022]通過這種可能的實(shí)施方式,可以將應(yīng)用層指示的操作地址信息對(duì)應(yīng)為Linux系統(tǒng)中文件,使得可以進(jìn)一步根據(jù)操作指令對(duì)該文件進(jìn)行相應(yīng)操作。
[0023]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,對(duì)應(yīng)地址區(qū)間創(chuàng)建文件,包括:
[0024]確定被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),對(duì)應(yīng)各個(gè)塊中的每一塊創(chuàng)建一個(gè)文件,采用每一塊的塊號(hào)對(duì)創(chuàng)建的文件進(jìn)行命名。
[0025]通過這種可能的實(shí)施方式,不存在地址區(qū)間對(duì)應(yīng)的文件時(shí),采用這種將塊與文件對(duì)應(yīng)的方式,創(chuàng)建文件,如此可以使得后續(xù)操作的時(shí)候,可以通過操作地址信息查找到對(duì)應(yīng)的文件。
[0026]結(jié)合第一方面的第二種或第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,按照操作指令對(duì)創(chuàng)建的文件進(jìn)行相應(yīng)操作,包括:
[0027]按照操作指令對(duì)地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
[0028]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,在確定操作模式為按物理地址方式操作時(shí),則根據(jù)操作指令、按照操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作,包括:
[0029]在確定操作模式為按物理地址方式操作時(shí),則按照操作指令對(duì)地址區(qū)間對(duì)應(yīng)的各個(gè)塊中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
[0030]第二方面,一種基于嵌入式系統(tǒng)的閃存操作裝置,該裝置包括:[0031]接收單元,用于接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求,閃存操作請(qǐng)求中攜帶有操作指令、操作地址信息以及操作模式;
[0032]判斷單元,用于判斷操作模式是按文件方式操作還是按物理地址方式操作;
[0033]第一執(zhí)行單元,用于在確定操作模式為按文件方式操作時(shí),繼續(xù)判斷在閃存中是否存在與操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,若是,則按照操作指令對(duì)文件進(jìn)行相應(yīng)操作;否則,對(duì)應(yīng)地址區(qū)間創(chuàng)建文件,按照操作指令對(duì)創(chuàng)建的文件進(jìn)行相應(yīng)操作;
[0034]第二執(zhí)行單元,用于在確定操作模式為按物理地址方式操作時(shí),則根據(jù)操作指令、按照操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作。
[0035]通過這種可能的實(shí)施方式,為不同的操作系統(tǒng)的嵌入式產(chǎn)品,提供了一種可以對(duì)Flash進(jìn)行統(tǒng)一操作的裝置,以模塊的方式為應(yīng)用層提供一套標(biāo)準(zhǔn)的適配操作接口,這使得Flash設(shè)備的兼容性更好。在系統(tǒng)軟件設(shè)計(jì)時(shí)規(guī)劃好后續(xù)進(jìn)行Flash操作的文件存儲(chǔ)路徑后,技術(shù)人員不必關(guān)心該應(yīng)用層軟件應(yīng)用在何種嵌入式平臺(tái),直接采用本發(fā)明實(shí)施例的Flash操作裝置,根據(jù)不同的操作模式進(jìn)行相應(yīng)的處理,能夠穩(wěn)定可靠的對(duì)Flash進(jìn)行相關(guān)操作,減少了越界存儲(chǔ)的可能性,保證了系統(tǒng)的可靠性。使得在不同操作系統(tǒng)的產(chǎn)品可以相互繼承,對(duì)于相同應(yīng)用的產(chǎn)品可實(shí)現(xiàn)迅速切換,縮短了新產(chǎn)品的開發(fā)調(diào)試時(shí)間。
[0036]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,還包括:配置單元,用于接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求之前,獲取預(yù)設(shè)的操作模式,判斷操作模式是按文件方式操作還是按物理地址方式操作,并在確定操作模式為按文件方式操作時(shí),創(chuàng)建對(duì)閃存進(jìn)行后續(xù)操作時(shí)的文件存儲(chǔ)路徑,并獲取閃存的內(nèi)存技術(shù)設(shè)備信息,根據(jù)內(nèi)存技術(shù)設(shè)備信息配置塊信息,以及在確定操作模式為按物理地址方式操作時(shí),獲取閃存的公共閃存接口信息,根據(jù)公共閃存接口信息配置塊信息;其中,塊信息包括各個(gè)塊的塊號(hào)、首地址和塊大小。
[0037]通過這種可能的實(shí)施方式,本發(fā)明實(shí)施例中的閃存操作裝置針對(duì)UCOS系統(tǒng)和Linux系統(tǒng)采用不同的配置方式,使得進(jìn)一步的可以分別根據(jù)兩種系統(tǒng)的不同操作模式,對(duì)閃存采用不同的操作方式。
[0038]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,第一執(zhí)行單元具體用于:
[0039]根據(jù)操作地址信息中攜帶的起始物理地址和終止物理地址確定地址區(qū)間;
[0040]根據(jù)塊信息確定被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),判斷閃存中是否存在與覆蓋的各個(gè)塊的塊號(hào)對(duì)應(yīng)的文件。
[0041]通過這種可能的實(shí)施方式,可以將應(yīng)用層指示的操作地址信息對(duì)應(yīng)為Linux系統(tǒng)中文件,使得可以進(jìn)一步根據(jù)操作指令對(duì)該文件進(jìn)行相應(yīng)操作。
[0042]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,第一執(zhí)行單元具體用于:
[0043]確定被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),對(duì)應(yīng)各個(gè)塊中的每一塊創(chuàng)建一個(gè)文件,采用每一塊的塊號(hào)對(duì)創(chuàng)建的文件進(jìn)行命名。
[0044]通過這種可能的實(shí)施方式,不存在地址區(qū)間對(duì)應(yīng)的文件時(shí),采用這種將塊與文件對(duì)應(yīng)的方式,創(chuàng)建文件,如此可以使得后續(xù)操作的時(shí)候,可以通過操作地址信息查找到對(duì)應(yīng)的文件。
[0045]結(jié)合第二方面的第二種或第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,第一執(zhí)行單元具體用于:
[0046]按照操作指令對(duì)地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
[0047]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,第二執(zhí)行單元具體用于:
[0048]在確定操作模式為按物理地址方式操作時(shí),則按照操作指令對(duì)地址區(qū)間對(duì)應(yīng)的各個(gè)塊中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
【專利附圖】
【附圖說明】
[0049]圖1為本發(fā)明實(shí)施例的Flash軟件結(jié)構(gòu)框圖;
[0050]圖2為本發(fā)明實(shí)施例的Flash適配處理模塊對(duì)Flash進(jìn)行處理的流程圖;
[0051]圖3為本發(fā)明實(shí)施例的基于嵌入式系統(tǒng)的閃存操作方法流程圖;
[0052]圖4為本發(fā)明實(shí)施例的基于嵌入式系統(tǒng)的閃存操作裝置圖。
【具體實(shí)施方式】
[0053]為了給出在多種操作系統(tǒng)間統(tǒng)一的Flash操作方法,使得應(yīng)用層軟件可以通過統(tǒng)一的接口調(diào)用Flash,并采用相同的方式對(duì)Flash進(jìn)行操作的實(shí)現(xiàn)方案,本發(fā)明實(shí)施例提供了一種基于嵌入式系統(tǒng)的閃存操作方法及裝置,以下結(jié)合說明書附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明。
[0054]本發(fā)明實(shí)施例中的基于嵌入式系統(tǒng)的閃存操作方法,將在Linux和UCOS操作系統(tǒng)與應(yīng)用模塊之間增加一個(gè)Flash適配處理模塊,為上層應(yīng)用模塊提供一套標(biāo)準(zhǔn)的適配操作接口,統(tǒng)一進(jìn)行操作和管理Flash。在Linux系統(tǒng)中,將應(yīng)用層指示要操作的物理地址對(duì)應(yīng)為Linux系統(tǒng)中的文件,按照文件方式對(duì)Flash進(jìn)行相應(yīng)操作;在UCOS系統(tǒng)中,將應(yīng)用層指示要操作的物理地址發(fā)送給系統(tǒng)中Flash,直接按照物理地址對(duì)Flash進(jìn)行相關(guān)操作。
[0055]以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明。
[0056]參閱圖1所示,嵌入式平臺(tái)產(chǎn)品的軟件是分層和分模塊設(shè)計(jì)的,F(xiàn)lash軟件的設(shè)計(jì)亦是如此。在硬件之上的驅(qū)動(dòng)層根據(jù)操作系統(tǒng)的不同,對(duì)Flash的操作也是分別處理的,Linux操作系統(tǒng)相比于UCOS操作系統(tǒng),引入了 MTDJf Flash設(shè)備驅(qū)動(dòng)從下到上分為了四層,依次為硬件驅(qū)動(dòng)層(即Flash原始驅(qū)動(dòng)190):負(fù)責(zé)Flash硬件設(shè)備的讀取、寫入和擦出操作;MTD原始設(shè)備180層:主要由兩部分構(gòu)成,一部分是MTD原始設(shè)備通用代碼,另一部分是各個(gè)特定的Flash的數(shù)據(jù),例如分區(qū);MTD設(shè)備層:基于MTD原始設(shè)備,Linux操作系統(tǒng)可以定義出MTD字符設(shè)備160和MTD塊設(shè)備170,構(gòu)成設(shè)備層;設(shè)備節(jié)點(diǎn):通過mknod在/dev子目錄下建立字符設(shè)備節(jié)點(diǎn)140和塊設(shè)備節(jié)點(diǎn)150,用戶通過訪問此設(shè)備節(jié)點(diǎn)即可訪問MTD字符設(shè)備和塊設(shè)備。而本發(fā)明實(shí)施例中的Flash適配處理模塊110處于中間層,位于應(yīng)用層100與不同嵌入式平臺(tái)之間,與UCOS系統(tǒng)中的Flash原始驅(qū)動(dòng)120和Linux系統(tǒng)中的文件系統(tǒng)130進(jìn)行交互,以模塊的方式為上層應(yīng)用提供了一套標(biāo)準(zhǔn)的適配操作接口。
[0057]參閱圖2所示,F(xiàn)lash適配處理模塊主要對(duì)應(yīng)用層提供四類接口,但不僅限于這四類,后續(xù)可以根據(jù)應(yīng)用層的需要繼續(xù)開發(fā)標(biāo)準(zhǔn)的適配操作接口。這四類接口分別為用于檢查Flash適配驅(qū)動(dòng)模塊的版本信息接口,用于獲取Flash總大小、塊大小、總塊數(shù)等等塊信息的Flash信息接口,用于初始化配置Flash操作模式的初始化接口,以及用于讀取、寫入和擦除Flash的操作接口。進(jìn)行初始化配置的流程包括步驟2000至步驟2005,進(jìn)行讀取寫入和擦除操作的流程包括步驟2010至步驟2015,以下對(duì)Flash適配處理模塊對(duì)閃存進(jìn)行讀取、寫入和擦除等操作的具體流程進(jìn)行介紹。
[0058]參閱圖3所示,本發(fā)明實(shí)施例中,F(xiàn)lash適配處理模塊對(duì)閃存進(jìn)行操作的具體流程如下:
[0059]步驟300 =Flash適配處理模塊接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求,閃存操作請(qǐng)求中攜帶有操作指令、操作地址信息以及操作模式。
[0060]具體的,接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求之前,需要進(jìn)行系統(tǒng)配置,F(xiàn)lash適配處理模塊會(huì)提供初始化接口,供應(yīng)用層調(diào)用。當(dāng)應(yīng)用層調(diào)用了該初始化接口后,系統(tǒng)開始進(jìn)行初始化操作,并獲取預(yù)設(shè)的操作模式,判斷該操作模式是按文件方式操作還是按物理地址方式操作;在具體實(shí)施中,F(xiàn)lash適配處理模塊會(huì)對(duì)所有Flash物理地址對(duì)應(yīng)的塊進(jìn)行操作模式的設(shè)置,具體將Linux系統(tǒng)中的Flash塊設(shè)置為按文件方式操作,用數(shù)字“ I ”來表示;將UCOS系統(tǒng)中的Flash塊設(shè)置為按物理地址方式操作,用數(shù)字“O”來表示。用戶可以根據(jù)當(dāng)前使用的操作系統(tǒng),將預(yù)設(shè)的操作模式設(shè)置為與當(dāng)前操作系統(tǒng)對(duì)應(yīng)的操作模式,例如,若當(dāng)前使用的是Linux系統(tǒng),則用戶預(yù)先將預(yù)設(shè)的操作模式設(shè)置為按文件方式操作;若當(dāng)前使用的是UCOS系統(tǒng),則用戶預(yù)先將預(yù)設(shè)的操作模式設(shè)置為按物理地址方式操作;若需要同時(shí)使用兩種操作系統(tǒng),則按照任意順序先對(duì)其中一種操作系統(tǒng)進(jìn)行初始化,再對(duì)另一種操作系統(tǒng)進(jìn)行初始化,如先對(duì)Linux系統(tǒng)進(jìn)行初始化,將其操作模式設(shè)置為按文件方式操作,再對(duì)UCOS系統(tǒng)進(jìn)行初始化,將其操作模式設(shè)置為按物理地址方式操作。
[0061]在確定上述操作模式為按文件方式操作時(shí),由于在Linux系統(tǒng)中,引入了公共閃存接口(Common Flash Interface, CFI)的MTD,需要從MTD信息中獲取Flash的塊信息,因此在創(chuàng)建好后續(xù)進(jìn)行寫入擦除等操作的文件存儲(chǔ)路徑后,獲取閃存的MTD信息,根據(jù)MTD信息配置塊信息;在確定上述操作模式為按物理地址方式操作時(shí),直接可以從CFI信息中獲取閃存的塊信息,直接可以根據(jù)CFI信息配置塊信息;其中,塊信息用于指示各個(gè)塊的塊號(hào)、起始地址和塊大小,塊是用于指示閃存中數(shù)據(jù)存儲(chǔ)的最小單位;實(shí)際應(yīng)用中,一個(gè)Flash由若干大小相同的塊組成,其中塊大小可以人為配置,也可以采用CFI信息或MTD信息中所指示的塊大小,將每一塊依次進(jìn)行編號(hào),并將每一塊與其首地址進(jìn)行對(duì)應(yīng)。
[0062]系統(tǒng)初始化階段完成后,F(xiàn)lash適配處理模塊接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求,閃存操作請(qǐng)求中攜帶有操作指令、操作地址信息以及操作模式,其中,操作指令用于指示對(duì)Flash進(jìn)行何種操作,如讀取、寫入或擦除等。
[0063]步驟310:判斷操作模式是按文件方式操作還是按物理地址方式操作。
[0064]具體的,本發(fā)明實(shí)施例中,進(jìn)行舉例說明時(shí),Linux系統(tǒng)采用按文件方式操作,UCOS系統(tǒng)采用按物理地址方式操作,但不僅僅限于這兩種操作系統(tǒng),其他按照文件方式操作或按照物理地址方式操作的操作系統(tǒng),同樣在本發(fā)明實(shí)施例包括的范圍之內(nèi)。Flash適配處理模塊從閃存操作請(qǐng)求中獲取將要進(jìn)行讀取、寫入或擦除的Flash的操作模式,其中,該操作模式是在初始化時(shí)設(shè)置的,若操作模式為1,則按照文件方式操作,若操作模式為0,則按照物理地址方式操作。
[0065]步驟320 =Flash適配處理模塊在確定操作模式為按文件方式操作時(shí),繼續(xù)判斷在閃存中是否存在與操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,若是,則按照操作指令對(duì)文件進(jìn)行相應(yīng)操作,否則,對(duì)應(yīng)地址區(qū)間創(chuàng)建文件,按照操作指令對(duì)創(chuàng)建的文件進(jìn)行相應(yīng)操作。
[0066]具體的,在確定操作模式為按文件方式操作時(shí),判斷在閃存中是否存在與操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,即根據(jù)操作地址信息中攜帶的起始物理地址和終止物理地址確定地址區(qū)間;根據(jù)塊信息確定被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),判斷閃存中是否存在覆蓋的各個(gè)塊的塊號(hào)對(duì)應(yīng)的文件。例如,F(xiàn)lash的塊大小為64k,寫入Flash輸入操作地址信息,其中,起始物理地址為0x10000,終止物理地址為0x30000,F(xiàn)lash適配處理模塊根據(jù)初始化時(shí)的塊信息中指示的塊大小,查詢從起始物理地址開始到終止物理地址結(jié)束的地址區(qū)間,所有被該地址區(qū)間覆蓋的塊的塊號(hào)為第2塊和第3塊,因此,判斷Flash中是否存在該塊號(hào)對(duì)應(yīng)的文件;通??梢杂迷搲K號(hào)命令這些文件,在這種情況下,對(duì)應(yīng)的文件的文件名為 “file_2” 和 “file_3”。
[0067]若存在與各個(gè)塊的塊號(hào)相對(duì)應(yīng)的文件,則按照操作指令對(duì)文件做相應(yīng)操作。例如,對(duì)上述文件名為“file_2”和“file_3”的文件進(jìn)行寫入操作。
[0068]若不存在與各個(gè)塊的塊號(hào)相對(duì)應(yīng)的文件,則對(duì)應(yīng)地址區(qū)間創(chuàng)建文件,具體步驟為:確定被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),對(duì)應(yīng)各個(gè)塊中的每一塊創(chuàng)建一個(gè)文件,采用每一塊的塊號(hào)對(duì)創(chuàng)建的文件進(jìn)行命名。例如,在Flash中不存在被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào)所對(duì)應(yīng)的文件時(shí),若確定覆蓋的塊的塊號(hào)為第5塊至第7塊,則對(duì)應(yīng)第5塊至第7塊創(chuàng)建文件名為“file_5”、“file_6”和“file_7”的三個(gè)文件。
[0069]在創(chuàng)建文件完成后,對(duì)這些創(chuàng)建好的文件進(jìn)行相應(yīng)的讀取、寫入或擦除的操作。
[0070]上述步驟完成了在操作模式為按文件方式操作時(shí),將應(yīng)用層輸入要操作Flash的物理地址后,將該物理地址對(duì)應(yīng)為在Linux系統(tǒng)中的文件,再采用這些文件模擬物理地址的操作方式,直接對(duì)這些文件進(jìn)行相應(yīng)操作。如此便可以與UCOS系統(tǒng)采用相同的方式操作,都是從應(yīng)用層輸入要操作的Flash的物理地址,即可對(duì)該段物理地址進(jìn)行相應(yīng)操作,而在Linux系統(tǒng)中,要經(jīng)過將應(yīng)用層輸入的要操作的Flash的物理地址對(duì)應(yīng)為Linux系統(tǒng)中的文件,再對(duì)文件進(jìn)行相應(yīng)操作,也就是文件對(duì)應(yīng)的那一段物理地址進(jìn)行相應(yīng)操作。
[0071]步驟330 =Flash適配處理模塊在確定操作模式為按物理地址方式操作時(shí),則根據(jù)操作指令、按照操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作。
[0072]具體的,在確定操作模式為按物理地址方式操作時(shí),則根據(jù)操作指令,按照起始物理地址和終止物理地址指示的地址區(qū)間,對(duì)Flash進(jìn)行相應(yīng)操作。例如,F(xiàn)lash的塊大小為64k,讀取Flash輸入操作地址信息,其中,起始物理地址為0x40000,終止物理地址為0x50000,F(xiàn)lash適配處理模塊,根據(jù)直接按照操作指令指示的讀取Flash,對(duì)地址區(qū)間0x40000至0x50000,也就是第5塊中的數(shù)據(jù)進(jìn)行讀取。
[0073]在介紹對(duì)地址區(qū)間的文件或者塊進(jìn)行相應(yīng)操作之前,先介紹閃存的實(shí)際結(jié)構(gòu),一個(gè)閃存內(nèi)部存在多個(gè)塊,嵌入式平臺(tái)處理的都是二進(jìn)制數(shù)據(jù),只有O和I組成,同樣要在Flash中保存的數(shù)據(jù)也是二進(jìn)制的,在對(duì)Flash的操作中,只能將I寫為0,而不能將O寫成1,所以在寫入Flash之前,都要先進(jìn)行擦除操作,即將Flash中的內(nèi)容全部變?yōu)?,在進(jìn)行寫入操作,在進(jìn)行寫入操作時(shí),即只將為O的位進(jìn)行寫入即可。擦除操作的最小單位為塊,即每次至少都要擦除一個(gè)塊。[0074]在應(yīng)用層調(diào)用讀取、寫入或擦除的操作接口時(shí),F(xiàn)lash適配處理模塊也是根據(jù)不同的操作模式來進(jìn)行處理的。
[0075]在確定操作模式為按文件方式進(jìn)行操作時(shí),按照操作指令對(duì)文件進(jìn)行相應(yīng)操作,具體指:按照操作指令對(duì)地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
[0076]具體的,若操作指令指示進(jìn)行讀取操作,則讀取被地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件中存儲(chǔ)的數(shù)據(jù);例如,在塊大小為64k時(shí),應(yīng)用層要讀取Iinux系統(tǒng)中的地址區(qū)間0x00000至0x20000的數(shù)據(jù),則通過Flash適配處理模塊,采用統(tǒng)一的操作接口,對(duì)該地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件,即第I塊和第2塊對(duì)應(yīng)的名為“file_r’和“file_2”的文件中存儲(chǔ)數(shù)據(jù)進(jìn)行讀取。
[0077]若操作指令指示進(jìn)行寫入操作,則將待寫入的數(shù)據(jù)寫入被地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件中;例如,在塊大小為64k時(shí),應(yīng)用層要寫入Iinux系統(tǒng)中的地址區(qū)間0x00000至0x20000的數(shù)據(jù),則通過Flash適配處理模塊,采用統(tǒng)一的操作接口,對(duì)該地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件,即第I塊和第2塊對(duì)應(yīng)的名為和“file_2”的文件中存儲(chǔ)數(shù)據(jù)進(jìn)行寫入。
[0078]若操作指令指示進(jìn)行擦除操作,則將被地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件中的數(shù)據(jù)進(jìn)行擦除;在塊大小為64k時(shí),應(yīng)用層要讀取Iinux系統(tǒng)中的地址區(qū)間0x00000至0x20000的數(shù)據(jù),則通過Flash適配處理模塊,采用統(tǒng)一的操作接口,對(duì)該地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件,即第I塊和第2塊對(duì)應(yīng)的名為“file_r’和“file_2”的文件中存儲(chǔ)數(shù)據(jù)全部寫為I。
[0079]在確定操作模式為按物理地址方式操作時(shí),則按照操作指令對(duì)地址區(qū)間對(duì)應(yīng)的各個(gè)塊中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
[0080]具體的,若操作指令指示進(jìn)行讀取操作,則讀取地址區(qū)間對(duì)應(yīng)的各個(gè)塊中存儲(chǔ)的數(shù)據(jù);例如,在塊大小為64k時(shí),應(yīng)用層要讀取UCOS系統(tǒng)中的地址區(qū)間0x10000至0x20000的數(shù)據(jù),則通過Flash適配處理模塊,采用統(tǒng)一的操作接口,對(duì)該地址區(qū)間覆蓋的各個(gè)塊,即第2塊中存儲(chǔ)數(shù)據(jù)進(jìn)行讀取。
[0081]若操作指令指示進(jìn)行寫入操作,則將待寫入的數(shù)據(jù)寫入地址區(qū)間對(duì)應(yīng)的各個(gè)塊中;例如,在塊大小為64k時(shí),應(yīng)用層要讀取UCOS系統(tǒng)中的地址區(qū)間0x10000至0x20000的數(shù)據(jù),則通過Flash適配處理模塊,采用統(tǒng)一的操作接口,對(duì)該地址區(qū)間覆蓋的各個(gè)塊,SP第2塊中存儲(chǔ)數(shù)據(jù)進(jìn)行擦除,然后進(jìn)行寫入操作。
[0082]若操作指令指示進(jìn)行擦除操作,則擦除地址區(qū)間對(duì)應(yīng)的各個(gè)塊中存儲(chǔ)的數(shù)據(jù);例如,在塊大小為64k時(shí),應(yīng)用層要讀取UCOS系統(tǒng)中的地址區(qū)間0x10000至0x20000的數(shù)據(jù),則通過Flash適配處理模塊,采用統(tǒng)一的操作接口,對(duì)該地址區(qū)間覆蓋的各個(gè)塊,即第2塊中存儲(chǔ)數(shù)據(jù)全部寫為I。
[0083]這樣就實(shí)現(xiàn)了使用統(tǒng)一的接口對(duì)各個(gè)操作系統(tǒng)的Flash進(jìn)行操作。
[0084]下面結(jié)合附圖,用具體實(shí)施例對(duì)本發(fā)明提供的方法及裝置進(jìn)行詳細(xì)描述。
[0085]基于同一發(fā)明構(gòu)思,根據(jù)本發(fā)明上述實(shí)施例提供的基于嵌入式系統(tǒng)的閃存操作方法,相應(yīng)地,本發(fā)明另一實(shí)施例還提供了一種基于嵌入式系統(tǒng)的閃存操作裝置,裝置結(jié)構(gòu)示意圖如圖4所示,具體包括:[0086]接收單元400,用于接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求,閃存操作請(qǐng)求中攜帶有操作指令、操作地址信息以及操作模式;
[0087]判斷單元410,用于判斷操作模式是按文件方式操作還是按物理地址方式操作;
[0088]第一執(zhí)行單元420,用于在確定操作模式為按文件方式操作時(shí),繼續(xù)判斷在閃存中是否存在與操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,若是,則按照操作指令對(duì)文件進(jìn)行相應(yīng)操作;否則,對(duì)應(yīng)地址區(qū)間創(chuàng)建文件,按照操作指令對(duì)創(chuàng)建的文件進(jìn)行相應(yīng)操作;
[0089]第二執(zhí)行單元430,用于在確定操作模式為按物理地址方式操作時(shí),則根據(jù)操作指令、按照操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作。
[0090]配置單元440,用于接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求之前,獲取預(yù)設(shè)的操作模式,判斷操作模式是按文件方式操作還是按物理地址方式操作,并在確定操作模式為按文件方式操作時(shí),創(chuàng)建對(duì)閃存進(jìn)行后續(xù)操作時(shí)的文件存儲(chǔ)路徑,并獲取閃存的內(nèi)存技術(shù)設(shè)備信息,根據(jù)內(nèi)存技術(shù)設(shè)備信息配置塊信息,以及在確定操作模式為按物理地址方式操作時(shí),獲取閃存的公共閃存接口信息,根據(jù)公共閃存接口信息配置塊信息;其中,塊信息包括各個(gè)塊的塊號(hào)、首地址和塊大小。
[0091]第一執(zhí)行單元420具體用于:根據(jù)操作地址信息中攜帶的起始物理地址和終止物理地址確定地址區(qū)間;
[0092]根據(jù)塊信息確定被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),判斷閃存中是否存在與覆蓋的各個(gè)塊的塊號(hào)對(duì)應(yīng)的文件。
[0093]第一執(zhí)行單元420具體用于:確定被地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),對(duì)應(yīng)各個(gè)塊中的每一塊創(chuàng)建一個(gè)文件,采用每一塊的塊號(hào)對(duì)創(chuàng)建的文件進(jìn)行命名。
[0094]第一執(zhí)行單元420具體用于:按照操作指令對(duì)地址區(qū)間覆蓋的各個(gè)塊對(duì)應(yīng)的文件中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
[0095]第二執(zhí)行單元430具體用于:
[0096]在確定操作模式為按物理地址方式操作時(shí),則按照操作指令對(duì)地址區(qū)間對(duì)應(yīng)的各個(gè)塊中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
[0097]綜上所述,本發(fā)明實(shí)施例提供的方案,為不同的操作系統(tǒng)的嵌入式產(chǎn)品,提供了一種統(tǒng)一的Flash操作方法,并且以模塊的方式為應(yīng)用層提供一套標(biāo)準(zhǔn)的適配操作接口,這使得Flash設(shè)備的兼容性更好,在系統(tǒng)軟件設(shè)計(jì)時(shí)規(guī)劃好后續(xù)進(jìn)行Flash操作的文件存儲(chǔ)路徑后,技術(shù)人員不必關(guān)心該應(yīng)用層軟件應(yīng)用在何種嵌入式平臺(tái),直接采用本發(fā)明實(shí)施例的Flash操作方法,能夠穩(wěn)定可靠的對(duì)Flash進(jìn)行相關(guān)操作,減少了越界存儲(chǔ)的可能性,保證了系統(tǒng)的可靠性。
[0098]本發(fā)明實(shí)施例提供的Flash操作處理技術(shù),是為不同操作系統(tǒng)的嵌入式產(chǎn)品提供了統(tǒng)一進(jìn)行操作和管理Flash的方法,使得在不同操作系統(tǒng)的產(chǎn)品可以相互繼承,對(duì)于相同應(yīng)用的產(chǎn)品可實(shí)現(xiàn)迅速切換,縮短了新產(chǎn)品的開發(fā)調(diào)試時(shí)間。并且提供清晰的分層設(shè)計(jì),增加了系統(tǒng)軟件的穩(wěn)定性,提升產(chǎn)品的整體性能。
[0099]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種基于嵌入式系統(tǒng)的閃存操作方法,其特征在于,所述方法包括: 接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求,所述閃存操作請(qǐng)求中攜帶有操作指令、操作地址信息以及操作模式; 判斷所述操作模式是按文件方式操作還是按物理地址方式操作; 在確定所述操作模式為按文件方式操作時(shí),繼續(xù)判斷在閃存中是否存在與所述操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,若是,則按照所述操作指令對(duì)所述文件進(jìn)行相應(yīng)操作;否則,對(duì)應(yīng)所述地址區(qū)間創(chuàng)建文件,按照所述操作指令對(duì)所述創(chuàng)建的文件進(jìn)行相應(yīng)操作; 在確定所述操作模式為按物理地址方式操作時(shí),則根據(jù)所述操作指令、按照所述操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作。
2.如權(quán)利要求1所述的方法,其特征在于,接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求之前,還包括: 在系統(tǒng)配置階段,獲取預(yù)設(shè)的操作模式,判斷所述操作模式是按文件方式操作還是按物理地址方式操作; 在確定所述操作模式為按文件方式操作時(shí),創(chuàng)建對(duì)閃存進(jìn)行后續(xù)操作時(shí)的文件存儲(chǔ)路徑,并獲取閃存的內(nèi)存技術(shù)設(shè)備信息,根據(jù)所述內(nèi)存技術(shù)設(shè)備信息配置塊信息; 在確定所述操作模式為按物理地址方式操作時(shí),獲取閃存的公共閃存接口信息,根據(jù)所述公共閃存接口信息配置塊信息; 其中,所述塊信息包括各個(gè)塊的塊號(hào)、首地址和塊大小。`
3.如權(quán)利要求2所述的方法,其特征在于,判斷在閃存中是否存在與所述操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,包括: 根據(jù)所述操作地址信息中攜帶的起始物理地址和終止物理地址確定地址區(qū)間; 根據(jù)所述塊信息確定被所述地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),判斷閃存中是否存在與所述覆蓋的各個(gè)塊的塊號(hào)對(duì)應(yīng)的文件。
4.如權(quán)利要求3中所述的方法,其特征在于,對(duì)應(yīng)所述地址區(qū)間創(chuàng)建文件,包括: 確定被所述地址區(qū)間覆蓋的所述各個(gè)塊的塊號(hào),對(duì)應(yīng)所述各個(gè)塊中的每一塊創(chuàng)建一個(gè)文件,采用每一塊的塊號(hào)對(duì)所述創(chuàng)建的文件進(jìn)行命名。
5.如權(quán)利要求3或4所述的方法,其特征在于,按照所述操作指令對(duì)所述創(chuàng)建的文件進(jìn)行相應(yīng)操作,包括: 按照所述操作指令對(duì)所述地址區(qū)間覆蓋的所述各個(gè)塊對(duì)應(yīng)的文件中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
6.如權(quán)利要求2所述的方法,其特征在于,在確定所述操作模式為按物理地址方式操作時(shí),則根據(jù)所述操作指令、按照所述操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作,包括: 在確定所述操作模式為按物理地址方式操作時(shí),則按照所述操作指令對(duì)所述地址區(qū)間對(duì)應(yīng)的各個(gè)塊中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
7.一種基于嵌入式系統(tǒng)的閃存操作裝置,其特征在于,所述裝置包括: 接收單元,用于接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求,所述閃存操作請(qǐng)求中攜帶有操作指令、操作地址信息以及操作模式; 判斷單元,用于判斷所述操作模式是按文件方式操作還是按物理地址方式操作;第一執(zhí)行單元,用于在確定所述操作模式為按文件方式操作時(shí),繼續(xù)判斷在閃存中是否存在與所述操作地址信息指示的地址區(qū)間相對(duì)應(yīng)的文件,若是,則按照所述操作指令對(duì)所述文件進(jìn)行相應(yīng)操作;否則,對(duì)應(yīng)所述地址區(qū)間創(chuàng)建文件,按照所述操作指令對(duì)所述創(chuàng)建的文件進(jìn)行相應(yīng)操作; 第二執(zhí)行單元,用于在確定所述操作模式為按物理地址方式操作時(shí),則根據(jù)所述操作指令、按照所述操作地址信息指示的地址區(qū)間進(jìn)行相應(yīng)操作。
8.如權(quán)利要求7所述的裝置,其特征在于,還包括:配置單元,用于接收應(yīng)用層發(fā)起的閃存操作請(qǐng)求之前,獲取預(yù)設(shè)的操作模式,判斷所述操作模式是按文件方式操作還是按物理地址方式操作,并在確定所述操作模式為按文件方式操作時(shí),創(chuàng)建對(duì)閃存進(jìn)行后續(xù)操作時(shí)的文件存儲(chǔ)路徑,并獲取閃存的內(nèi)存技術(shù)設(shè)備信息,根據(jù)所述內(nèi)存技術(shù)設(shè)備信息配置塊信息,以及在確定所述操作模式為按物理地址方式操作時(shí),獲取閃存的公共閃存接口信息,根據(jù)所述公共閃存接口信息配置塊信息;其中,所述塊信息包括各個(gè)塊的塊號(hào)、首地址和塊大小。
9.如權(quán)利要求8所述的裝置,其特征在于,所述第一執(zhí)行單元具體用于: 根據(jù)所述操作地址信息中攜帶的起始物理地址和終止物理地址確定地址區(qū)間; 根據(jù)所述塊信息確定被所述地址區(qū)間覆蓋的各個(gè)塊的塊號(hào),判斷閃存中是否存在與所述覆蓋的各個(gè)塊的塊號(hào)對(duì)應(yīng)的文件。
10.如權(quán)利要求9中所述的裝置,其特征在于,所述第一執(zhí)行單元具體用于: 確定被所述地址區(qū)間覆蓋的所述各個(gè)塊的塊號(hào),對(duì)應(yīng)所述各個(gè)塊中的每一塊創(chuàng)建一個(gè)文件,采用每一塊的塊號(hào)對(duì)所述創(chuàng)建的文件進(jìn)行命名。
11.如權(quán)利要求9或10所述的裝置,其特征在于,所述第一執(zhí)行單元具體用于: 按照所述操作指令對(duì)所述地址區(qū)間覆蓋的所述各個(gè)塊對(duì)應(yīng)的文件中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
12.如權(quán)利要求8所述的裝置,其特征在于,所述第二執(zhí)行單元具體用于: 在確定所述操作模式為按物理地址方式操作時(shí),則按照所述操作指令對(duì)所述地址區(qū)間對(duì)應(yīng)的各個(gè)塊中的數(shù)據(jù)進(jìn)行讀取、寫入或擦除操作。
【文檔編號(hào)】G06F9/44GK103870392SQ201410117104
【公開日】2014年6月18日 申請(qǐng)日期:2014年3月26日 優(yōu)先權(quán)日:2014年3月26日
【發(fā)明者】張麗萍 申請(qǐng)人:青島海信寬帶多媒體技術(shù)有限公司