本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)操作方法及其裝置、應(yīng)用、單片機(jī)及嵌入式系統(tǒng)。
背景技術(shù):
電子設(shè)備的程序空間往往是有限。例如,8051單片機(jī)的程序空間只有64k字節(jié),當(dāng)8051單片機(jī)的程序容量超過64k時(shí),現(xiàn)有的做法是通過代碼分頁(codebanking)的方式擴(kuò)展程序空間,代碼分頁的原理是將存儲(chǔ)空間分成不同的頁,通過片選的方式實(shí)現(xiàn)程序在不同頁的跳轉(zhuǎn)。例如將擴(kuò)展后的64k程序空間分成32k的公共區(qū)和32k的bank區(qū)。當(dāng)需要使用某個(gè)bank的程序時(shí),直接將32k的bank區(qū)域切換成需要的bank。
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有相關(guān)技術(shù)至少存在以下區(qū)別:現(xiàn)有相關(guān)技術(shù)在處理外掛的存儲(chǔ)器切bank的操作,并且當(dāng)單個(gè)bank區(qū)的容量過大時(shí),從外掛的存儲(chǔ)器載入該bank需要耗費(fèi)大量的時(shí)間,例如,系統(tǒng)只需要用到bank3內(nèi)的1k字節(jié)的代碼,但是同時(shí)也要將整個(gè)bank區(qū)的32k字節(jié)代碼載入到內(nèi)部程序內(nèi)存中,此種方式會(huì)浪費(fèi)大量時(shí)間,造成切bank的效率低下。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的一個(gè)目的旨在提供一種數(shù)據(jù)操作方法及其裝置、應(yīng)用、單片機(jī)及嵌入式系統(tǒng),其解決了現(xiàn)有技術(shù)切bank的效率低下的技術(shù)問題。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供以下技術(shù)方案:
在第一方面,本發(fā)明實(shí)施例公開一種數(shù)據(jù)操作方法,所述方法包括:在檢測(cè)到bank切換操作時(shí),確定第一存儲(chǔ)模塊的第一目標(biāo)bank,所述第一目標(biāo)bank存儲(chǔ)有加載入第二存儲(chǔ)模塊中任意一個(gè)第二目標(biāo)bank的程序或數(shù)據(jù);根據(jù)所述第一目標(biāo)bank操作所述第二存儲(chǔ)模塊的第二目標(biāo)bank。
可選的,在檢測(cè)到bank切換操作時(shí),確定第一存儲(chǔ)模塊的第一目標(biāo)bank之前,所述方法還包括:于所述第二存儲(chǔ)模塊中切分共用同一地址空間的若干第二目標(biāo)bank。
可選的,所述第二存儲(chǔ)模塊包括若干公共區(qū)與若干bank區(qū);所述公共區(qū)用于存儲(chǔ)公共程序及公共代碼;所述bank區(qū)包括共用同一地址空間的若干第二目標(biāo)bank。
可選的,所述第一目標(biāo)bank與所述第二目標(biāo)bank的容量皆相等。
可選的,所述根據(jù)所述第一目標(biāo)bank操作所述第二存儲(chǔ)模塊的第二目標(biāo)bank,包括:在檢測(cè)到所述第一目標(biāo)bank未加載入所述第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),將所述第一目標(biāo)bank加載入所述第二目標(biāo)bank內(nèi);切換所述第二目標(biāo)bank為生效狀態(tài)。
可選的,所述根據(jù)所述第一目標(biāo)bank操作所述第二存儲(chǔ)模塊的第二目標(biāo)bank,還包括:在檢測(cè)到所述第一目標(biāo)bank已加載入所述第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),切換所述第二目標(biāo)bank為生效狀態(tài)。
可選的,所述第一存儲(chǔ)模塊包括隨機(jī)存取存儲(chǔ)器。
可選的,所述隨機(jī)存取存儲(chǔ)器內(nèi)置于單片機(jī)中。
可選的,所述第二存儲(chǔ)模塊包括具有spi接口的flash存儲(chǔ)器。
在第二方面,本發(fā)明實(shí)施例提供一種如上述的數(shù)據(jù)操作方法在嵌入式設(shè)備中的應(yīng)用。
在第三方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作裝置,所述裝置包括:確定模塊,用于在檢測(cè)到bank切換操作時(shí),確定第一存儲(chǔ)模塊的第一目標(biāo)bank,所述第一目標(biāo)bank存儲(chǔ)有加載入第二存儲(chǔ)模塊中任意一個(gè)第二目標(biāo)bank的程序或數(shù)據(jù);操作模塊,用于根據(jù)所述第一目標(biāo)bank操作所述第二存儲(chǔ)模塊的第二目標(biāo)bank。
可選的,所述裝置還包括:切分模塊,用于于所述第二存儲(chǔ)模塊中切分共用同一地址空間的若干第二目標(biāo)bank。
可選的,所述第二存儲(chǔ)模塊包括若干公共區(qū)與若干bank區(qū);所述公共區(qū)用于存儲(chǔ)公共程序及公共代碼;所述bank區(qū)包括共用同一地址空間的若干第二目標(biāo)bank。
可選的,所述第一目標(biāo)bank與所述第二目標(biāo)bank的容量皆相等。
可選的,所述操作模塊包括:加載單元,用于在檢測(cè)到所述第一目標(biāo)bank未加載入所述第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),將所述第一目標(biāo)bank加載入所述第二目標(biāo)bank內(nèi);第一切換單元,用于切換所述第二目標(biāo)bank為生效狀態(tài)。
可選的,所述操作模塊包括:第二切換單元,用于在檢測(cè)到所述第一目標(biāo)bank已加載入所述第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),切換所述第二目標(biāo)bank為生效狀態(tài)。
可選的,所述第一存儲(chǔ)模塊包括隨機(jī)存取存儲(chǔ)器。
可選的,所述隨機(jī)存取存儲(chǔ)器內(nèi)置于單片機(jī)中。
可選的,所述第二存儲(chǔ)模塊包括具有spi接口的flash存儲(chǔ)器。
在第四方面,本發(fā)明實(shí)施例提供一種單片機(jī),所述單片機(jī)包括:至少一個(gè)處理器;以及分別與所述至少一個(gè)處理器通信連接的片內(nèi)存儲(chǔ)器及片外存儲(chǔ)器;其中,所述片內(nèi)存儲(chǔ)器及片外存儲(chǔ)器皆存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠用于執(zhí)行上述的數(shù)據(jù)操作方法。
在第五方面,本發(fā)明實(shí)施例提供一種嵌入式系統(tǒng),所述嵌入式系統(tǒng)包括:外圍電路裝置;嵌入式裝置,其與所述外圍電路裝連接;所述嵌入式裝置包括:至少一個(gè)處理器;以及分別與所述至少一個(gè)處理器通信連接的片內(nèi)存儲(chǔ)器及片外存儲(chǔ)器;其中,所述片內(nèi)存儲(chǔ)器及片外存儲(chǔ)器皆存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠用于執(zhí)行上述的數(shù)據(jù)操作方法。
在本發(fā)明各個(gè)實(shí)施例中,在檢測(cè)到bank切換操作時(shí),確定第一存儲(chǔ)模塊的第一目標(biāo)bank,第一目標(biāo)bank存儲(chǔ)有加載入第二存儲(chǔ)模塊中任意一個(gè)第二目標(biāo)bank的程序或數(shù)據(jù),根據(jù)第一目標(biāo)bank操作第二存儲(chǔ)模塊的第二目標(biāo)bank。因此,當(dāng)?shù)诙鎯?chǔ)模塊重新加載bank的程序或數(shù)據(jù)時(shí),其可以根據(jù)第一存儲(chǔ)模塊的第一目標(biāo)bank的程序或數(shù)據(jù)靈活配置第二存儲(chǔ)模塊的第二目標(biāo)bank,從而提高切bank的效率。
附圖說明
一個(gè)或多個(gè)實(shí)施例通過與之對(duì)應(yīng)的附圖中的圖片進(jìn)行示例性說明,這些示例性說明并不構(gòu)成對(duì)實(shí)施例的限定,附圖中具有相同參考數(shù)字標(biāo)號(hào)的元件表示為類似的元件,除非有特別申明,附圖中的圖不構(gòu)成比例限制。
圖1是本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作的應(yīng)用場(chǎng)景示意圖;
圖2是本發(fā)明實(shí)施例提供一種控制設(shè)備的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例提供一種嵌入式裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作方法中切bank的示意圖;
圖5是本發(fā)明另一實(shí)施例提供一種數(shù)據(jù)操作方法中切bank的示意圖;
圖6是本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作裝置的結(jié)構(gòu)示意圖;
圖7是本發(fā)明另一實(shí)施例提供一種數(shù)據(jù)操作裝置的結(jié)構(gòu)示意圖;
圖8是圖7中操作模塊的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作方法的流程示意圖;
圖10是本發(fā)明另一實(shí)施例提供一種數(shù)據(jù)操作方法的流程示意圖;
圖11是本發(fā)明實(shí)施例提供一種單片機(jī)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
存儲(chǔ)器是維持嵌入式設(shè)備正常運(yùn)轉(zhuǎn)的不可或缺的部件。存儲(chǔ)器用于存儲(chǔ)程序或數(shù)據(jù)或代碼。中央處理器在運(yùn)行時(shí),從存儲(chǔ)器中調(diào)用相關(guān)的程序指令,以完成相關(guān)功能的配置,例如,存儲(chǔ)器可以存儲(chǔ)用于初始化的程序指令,中央處理器通過調(diào)用并執(zhí)行該程序指令,以完成軟件上或硬件上的初始化配置。然而,對(duì)于一些嵌入式設(shè)備的程序空間,其存儲(chǔ)容量往往是有限的。出于擴(kuò)展程序空間容量的需要,可以通過外掛另一存儲(chǔ)器,并且將部分功能的程序指令存儲(chǔ)于該外掛的另一存儲(chǔ)器中。在執(zhí)行該另一存儲(chǔ)器中程序指令對(duì)應(yīng)的功能時(shí),首先通過該另一存儲(chǔ)器的io接口將對(duì)應(yīng)的程序指令調(diào)取到片內(nèi)的存儲(chǔ)器中,中央處理器可以從該片內(nèi)的存儲(chǔ)器調(diào)取并且執(zhí)行該程序指令。
下面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作的應(yīng)用場(chǎng)景示意圖。如圖1所示,該應(yīng)用場(chǎng)景為辦公室室內(nèi)監(jiān)控場(chǎng)景,該應(yīng)用場(chǎng)景100包括控制設(shè)備11、攝像頭12、空調(diào)13及溫濕度傳感器14,控制設(shè)備11分別與攝像頭12、空調(diào)13及溫濕度傳感器14連接。
控制設(shè)備11分別控制攝像頭12、空調(diào)13及溫濕度傳感器14的工作。在工作時(shí),攝像頭12實(shí)時(shí)將拍攝到辦公室內(nèi)部場(chǎng)景的圖像上傳至控制設(shè)備11,并且在控制設(shè)備11發(fā)送的控制命令下,實(shí)現(xiàn)攝像頭12的拍攝角度之轉(zhuǎn)換。溫濕度傳感器14實(shí)時(shí)監(jiān)控辦公室內(nèi)的辦公環(huán)境的溫度與濕度,并且將溫濕度數(shù)據(jù)實(shí)時(shí)上傳至控制設(shè)備11,控制設(shè)備11根據(jù)溫濕度數(shù)據(jù)與控制邏輯,實(shí)時(shí)控制空調(diào)13的風(fēng)向及其它工作狀態(tài)。
進(jìn)一步,如圖2所示,該控制設(shè)備11包括外圍電路裝置111與嵌入式裝置112,嵌入式裝置112與外圍電路裝置111連接。
該外圍電路裝置111可以為usb接口電路、led模組電路、ad轉(zhuǎn)換電路、顯示模組以及等等中的任意一個(gè)或兩個(gè)以上的集合,本領(lǐng)域技術(shù)人員可以根據(jù)產(chǎn)品的應(yīng)用需求,選擇外圍電路裝置111的功能類型,在此并不對(duì)外圍電路裝置111的功能類型作出以上例子的限定。
嵌入式裝置112根據(jù)控制邏輯,有序地控制并且響應(yīng)攝像頭12、空調(diào)13及溫濕度傳感器14。在一些實(shí)施例中,嵌入式裝置112可以為通用處理器、數(shù)字信號(hào)處理器(dsp)、專用集成電路(asic)、現(xiàn)場(chǎng)可編程門陣列(fpga)、單片機(jī)、arm(acornriscmachine)或其它可編程邏輯器件、分立門或晶體管邏輯、分立的硬件組件或者這些部件的任何組合。還有,嵌入式裝置112還可以是任何傳統(tǒng)處理器、控制器、微控制器或狀態(tài)機(jī)。處理器也可以被實(shí)現(xiàn)為計(jì)算設(shè)備的組合,例如,dsp和微處理器的組合、多個(gè)微處理器、一個(gè)或多個(gè)微處理器結(jié)合dsp核、或任何其它這種配置。
進(jìn)一步,如圖3所示,該嵌入式裝置112為單片機(jī),該單片機(jī)112包括至少一個(gè)處理器1121以及分別與所述至少一個(gè)處理器1121通信連接的片內(nèi)存儲(chǔ)器1122及片外存儲(chǔ)器1123。片內(nèi)存儲(chǔ)器1122及片外存儲(chǔ)器1123皆存儲(chǔ)有可被所述至少一個(gè)處理器1121執(zhí)行的指令。
在一些實(shí)施例中,處理器1121可以為不同單片機(jī)系列或不同微處理器型號(hào)的內(nèi)核,例如,如圖3所示,該處理器1121可以51單片機(jī)微控制器內(nèi)核,或者,當(dāng)該嵌入式裝置為arm處理設(shè)備時(shí),處理器1121可以為arm架構(gòu)的內(nèi)核。
片內(nèi)存儲(chǔ)器1122或片外存儲(chǔ)器1123可以為以下存儲(chǔ)器集合的任意一種:ram存儲(chǔ)器(randomaccessmemory,隨機(jī)存取存儲(chǔ)器)、rom存儲(chǔ)器(read-onlymemory,只讀存儲(chǔ)器)、閃存(flash)、prom存儲(chǔ)器(可編程只讀存儲(chǔ)器)、eprom存儲(chǔ)器(erasableprogrammablerom,可擦除可編程rom)、eeprom存儲(chǔ)器(electricallyerasableprogrammablerom,電可擦可編程只讀存儲(chǔ)器)以及等等,其中,ram存儲(chǔ)器還可以為sram存儲(chǔ)器(staticram,靜態(tài)隨機(jī)存儲(chǔ)器)、dram存儲(chǔ)器(dynamicram,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器)、sdram存儲(chǔ)器(synchronousdram,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)以及等等。
在一些實(shí)施例中,片內(nèi)存儲(chǔ)器1122或片外存儲(chǔ)器1123可以根據(jù)應(yīng)用需要,選擇對(duì)應(yīng)的存儲(chǔ)器類型。例如,當(dāng)片內(nèi)存儲(chǔ)器1122或片外存儲(chǔ)器1123作為程序存儲(chǔ)器時(shí),其可以選擇rom存儲(chǔ)器、prom存儲(chǔ)器、eprom存儲(chǔ)器、eeprom存儲(chǔ)器或flash。當(dāng)片內(nèi)存儲(chǔ)器1122或片外存儲(chǔ)器1123作為數(shù)據(jù)存儲(chǔ)器時(shí),其可以選擇sram存儲(chǔ)器、dram存儲(chǔ)器、sdram存儲(chǔ)器。并且,片內(nèi)存儲(chǔ)器1122或片外存儲(chǔ)器1123作為程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),其容量大小可以由用戶進(jìn)行設(shè)計(jì)定義。但是,在一些實(shí)施例中,現(xiàn)有的嵌入式裝置112的片內(nèi)存儲(chǔ)器1122或片外存儲(chǔ)器1123的容量是由上游廠家預(yù)先設(shè)置好的,例如,8051單片機(jī)的程序存儲(chǔ)器為64kb,并且其分為片內(nèi)程序存儲(chǔ)器與片外程序存儲(chǔ)器,片內(nèi)外程序存儲(chǔ)器采用統(tǒng)一編制0000h—ffffh。8051單片機(jī)的片內(nèi)數(shù)據(jù)存儲(chǔ)器為256b,片外數(shù)據(jù)存儲(chǔ)器為64kb。
程序存儲(chǔ)器是用于存放是系統(tǒng)工作的應(yīng)用程序及一些不需改變的數(shù)據(jù)常數(shù)的,程序?qū)懭氤绦虼鎯?chǔ)器后,單片機(jī)系統(tǒng)只能讀取程序指令使系統(tǒng)運(yùn)行,而不能再進(jìn)行改寫,且系統(tǒng)掉電后,程序不會(huì)丟失。因此,程序存儲(chǔ)器是rom只讀存儲(chǔ)器,其特點(diǎn)是在計(jì)算機(jī)正常運(yùn)行的情況下cpu對(duì)rom存儲(chǔ)器只能進(jìn)行讀操作且斷電后信息不會(huì)丟失,通常用來存儲(chǔ)固定不變的程序和數(shù)據(jù),如引導(dǎo)程序、基本輸入輸出系統(tǒng)程序等。
數(shù)據(jù)存儲(chǔ)器是用于存放程序運(yùn)行的中間處理數(shù)據(jù)的,可隨程序運(yùn)行而隨時(shí)寫入或讀出數(shù)據(jù)存儲(chǔ)器的內(nèi)容,當(dāng)系統(tǒng)掉電時(shí),數(shù)據(jù)全部會(huì)丟失。因此,數(shù)據(jù)存儲(chǔ)器是ram可隨機(jī)讀寫的存儲(chǔ)器。
在一些實(shí)施例中,當(dāng)單片機(jī)112原先的程序存儲(chǔ)器未能夠滿足程序的存放時(shí),可以通過代碼分頁(codebanking)的方式擴(kuò)展程序空間。代碼分頁的原理是將存儲(chǔ)空間分成不同的頁,通過片選的方式實(shí)現(xiàn)程序在不同頁的跳轉(zhuǎn)。因此,單片機(jī)112可以通過外掛多片存儲(chǔ)器以實(shí)現(xiàn)代碼分頁。外掛的存儲(chǔ)器可以通過各類型接口與單片機(jī)連接通訊。如圖3所示,片外存儲(chǔ)器1123可以選擇具有spi接口的flash存儲(chǔ)器,其通過spi接口與單片機(jī)112連接通訊。
串行外設(shè)接口spi(serialperipheralinterface)提供一個(gè)靈活的4線全雙工串行總線??偩€上的期間可以作為主期間,也可以作為從器件,并支持在同一總線上連接多個(gè)從器件。每個(gè)從器件接口包含一個(gè)獨(dú)立的從選擇信號(hào)。
在內(nèi)存系統(tǒng)中,bank(存儲(chǔ)體)是一個(gè)包含行和列的二維結(jié)構(gòu),每一個(gè)bank有一個(gè)數(shù)據(jù)區(qū)和一個(gè)行緩存,行緩存用來存儲(chǔ)bank中某一行的數(shù)據(jù),bank中的數(shù)據(jù)只能從該bank中的行緩存中被訪問。
如圖3和圖4所示,當(dāng)單片機(jī)112原先的程序存儲(chǔ)器未能夠滿足程序的存放時(shí),可以將片內(nèi)存儲(chǔ)器1122切分成若干個(gè)共用同一地址空間的第二目標(biāo)bank,其中,該片內(nèi)存儲(chǔ)器1122為ram存儲(chǔ)器。片外存儲(chǔ)器1123被切分成若干第一目標(biāo)bank,第一目標(biāo)bank的程序指令或數(shù)據(jù)可以加載入第二目標(biāo)bank內(nèi)。如圖4所示,片內(nèi)存儲(chǔ)器1122的ram空間已經(jīng)切分了多個(gè)第二目標(biāo)bank,例如:rambank0、rambank1、rambank2……rambankn-1,并且,多個(gè)第二目標(biāo)bank的地址空間為0x8000-0x9000,當(dāng)然,其可以在片內(nèi)存儲(chǔ)器1122選擇另一地址空間進(jìn)行切分bank,例如,該bank的地址空間還可以是0xa000-0xb000。片外存儲(chǔ)器1123的spiflash空間已經(jīng)切分了多個(gè)第一目標(biāo)bank,例如:flashbank0、flashbank1、flashbank2、flashbank3……flashbankm-1。
在一些實(shí)施例中,第一目標(biāo)bank與第二目標(biāo)bank的容量皆相等,在此并不對(duì)第一目標(biāo)bank與第二目標(biāo)bank的容量進(jìn)行限制,例如,其可以是4kb,或5kb。第一目標(biāo)bank或第二目標(biāo)bank存儲(chǔ)用于控制如圖1所示的攝像頭12、空調(diào)13及溫濕度傳感器14的程序指令。
值得注意的是:文中所述的“第一”或“第二”并不是用于限制各個(gè)存儲(chǔ)器中bank的存儲(chǔ)順序(地址順序),只是用于區(qū)分片內(nèi)存儲(chǔ)器和片外存儲(chǔ)器中的bank。
當(dāng)處理器1121執(zhí)行與攝像頭12或空調(diào)13或溫濕度傳感器14相關(guān)程序指令時(shí),在檢測(cè)到單片機(jī)1121原有程序存儲(chǔ)器未存儲(chǔ)到該相關(guān)程序指令或者對(duì)應(yīng)功能的程序指令時(shí),處理器1121進(jìn)入切換bank的操作。例如,當(dāng)處理器1121需要控制攝像頭12左轉(zhuǎn)時(shí),發(fā)現(xiàn)原有程序存儲(chǔ)器未存儲(chǔ)與用于控制攝像頭左轉(zhuǎn)的相關(guān)程序指令時(shí),處理器1121進(jìn)入切換bank的操作。
或者,當(dāng)溫濕度傳感器14分析出辦公室當(dāng)前的溫度比較低時(shí),需要處理器1121控制空調(diào)13調(diào)高溫度,處理器1121發(fā)現(xiàn)原有程序存儲(chǔ)器未存儲(chǔ)與用于控制空調(diào)13溫度的相關(guān)程序指令時(shí),處理器1121進(jìn)入切換bank的操作。
然而,與用于控制攝像頭左轉(zhuǎn)的相關(guān)程序指令或與用于控制空調(diào)13溫度的相關(guān)程序指令皆存儲(chǔ)在外掛的片外存儲(chǔ)器1123上,因此,處理器1121通過切換bank的操作,以將與用于控制攝像頭左轉(zhuǎn)的相關(guān)程序指令或與用于控制空調(diào)13溫度的相關(guān)程序指令加載入片內(nèi)存儲(chǔ)器1122上,處理器1121執(zhí)行時(shí),可以從片內(nèi)存儲(chǔ)器1122調(diào)用上述的程序指令。具體的,處理器1121在檢測(cè)到bank切換操作時(shí),確定片外存儲(chǔ)器1123的第一目標(biāo)bank,第一目標(biāo)bank存儲(chǔ)有加載入片內(nèi)存儲(chǔ)器1122中任意一個(gè)第二目標(biāo)bank的程序或數(shù)據(jù)。處理器1121根據(jù)第一目標(biāo)bank操作片內(nèi)存儲(chǔ)器1122的第二目標(biāo)bank。
一方面,處理器1121在檢測(cè)到第一目標(biāo)bank未加載入片內(nèi)存儲(chǔ)器1122的第二目標(biāo)bank時(shí),將第一目標(biāo)bank加載入第二目標(biāo)bank內(nèi),并且通過內(nèi)部的寄存器將第二目標(biāo)bank切換至生效狀態(tài),于是,處理器1121可以調(diào)用生效的第二目標(biāo)bank的程序指令或數(shù)據(jù)。在一些實(shí)施例中,當(dāng)片外存儲(chǔ)器1123的每個(gè)第一目標(biāo)bank加載入片內(nèi)存儲(chǔ)器1122的第二目標(biāo)bank時(shí),單片機(jī)內(nèi)部的數(shù)組會(huì)記錄第二目標(biāo)bank與第一目標(biāo)bank之間的存儲(chǔ)關(guān)系,當(dāng)進(jìn)行切換flashbankx操作,處理器1121訪問該數(shù)組內(nèi)是否預(yù)存x。例如,片內(nèi)存儲(chǔ)器1122的ram空間切分了4個(gè)第二目標(biāo)bank,此時(shí)的數(shù)組內(nèi)的4個(gè)值分別是3、1、10、0。處理器1121通過訪問該數(shù)組,分析出以下關(guān)系:rambank0內(nèi)存儲(chǔ)flashbank3的程序指令或數(shù)據(jù),rambank1內(nèi)存儲(chǔ)flashbank1的程序指令或數(shù)據(jù),rambank2內(nèi)存儲(chǔ)flashbank10的程序指令或數(shù)據(jù),rambank3內(nèi)存儲(chǔ)flashbank0的程序指令或數(shù)據(jù)。當(dāng)處理器1121分析出該數(shù)組未能夠存儲(chǔ)有flashbankx與rambank之間的關(guān)系時(shí),則說明“第一目標(biāo)bank未加載入片內(nèi)存儲(chǔ)器1122的第二目標(biāo)bank”。反之同理,在此不贅述。
進(jìn)一步的,如圖5所示,片內(nèi)存儲(chǔ)器1122的ram空間各個(gè)第二目標(biāo)bank已存儲(chǔ)有片外存儲(chǔ)器1123的第一目標(biāo)bank,例如:rambank0對(duì)應(yīng)flashbank7,rambank1對(duì)應(yīng)flashbank20,rambankn-1對(duì)應(yīng)flashbank6。當(dāng)處理器1121需要控制空調(diào)調(diào)節(jié)溫度時(shí),片內(nèi)存儲(chǔ)器1122的第二目標(biāo)bank未能夠存儲(chǔ)有與用于控制空調(diào)13溫度的相關(guān)程序指令,然而,該與用于控制空調(diào)13溫度的相關(guān)程序指令存儲(chǔ)在片外存儲(chǔ)器1123的第一目標(biāo)bank:flashbank3。因此,處理器1121需要將flashbank3切換至片內(nèi)存儲(chǔ)器1122的ram空間,因此,處理器1121可以將flashbank3切換至rambank2。
因此,當(dāng)片內(nèi)存儲(chǔ)器1122重新加載bank的程序或數(shù)據(jù)時(shí),其只需要將片外存儲(chǔ)器1123的第一目標(biāo)bank的程序或數(shù)據(jù)加載入第二目標(biāo)bank即可,無需將片外存儲(chǔ)器1123的整個(gè)bank區(qū)重新加載入片內(nèi)存儲(chǔ)器1122,從而節(jié)約切bank的時(shí)間和提高切bank的效率。
另一方面,處理器1121在檢測(cè)到第一目標(biāo)bank已加載入片內(nèi)存儲(chǔ)器1122的第二目標(biāo)bank時(shí),通過內(nèi)部的寄存器件第二目標(biāo)bank切換為生效狀態(tài)。請(qǐng)?jiān)賲㈤唸D5,處理器1121需要切換到flashbank20時(shí),由于flashbank20已經(jīng)載入到了rambank1,因此無需再從片外存儲(chǔ)器1123中載入,可以通過內(nèi)部寄存器將rambank1切換至生效狀態(tài)即可。因此,采用此種方式可以避免過度頻繁切換bank,從而提高切bank操作和效率。
如圖5所示,片內(nèi)存儲(chǔ)器1122包括公共區(qū)11221與bank區(qū)11222。公共區(qū)11221用于存儲(chǔ)公共程序及公共代碼,bank區(qū)包括共用同一地址空間的若干第二目標(biāo)bank。公共區(qū)11221可以被劃分在rom類型的片內(nèi)存儲(chǔ)器上,還可以在ram類型的片內(nèi)存儲(chǔ)器上,公共區(qū)11221的大小及地址可以自定義。每個(gè)第二目標(biāo)bank的容量為任意大小。在一些實(shí)施例中,片內(nèi)存儲(chǔ)器1122可以劃分出多個(gè)公共區(qū)11221與多個(gè)bank區(qū)11222。
上述各個(gè)實(shí)施例中的嵌入式裝置112為單片機(jī),在一些實(shí)施例中,該嵌入式裝置112還可以為其它嵌入式架構(gòu)的微型處理器,例如arm,dsp。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白:只要根據(jù)上述各個(gè)實(shí)施例所訓(xùn)導(dǎo)的數(shù)據(jù)操作方法的內(nèi)容,并且在嵌入式設(shè)備進(jìn)行任何應(yīng)用,其應(yīng)當(dāng)落入本發(fā)明的保護(hù)范圍之內(nèi)。
作為本發(fā)明實(shí)施例的另一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作裝置,如圖6所示,該數(shù)據(jù)操作裝置200包括確定模塊21與操作模塊22,確定模塊21用于在檢測(cè)到bank切換操作時(shí),確定第一存儲(chǔ)模塊的第一目標(biāo)bank,第一目標(biāo)bank存儲(chǔ)有加載入第二存儲(chǔ)模塊中任意一個(gè)第二目標(biāo)bank的程序或數(shù)據(jù)。操作模塊22用于根據(jù)第一目標(biāo)bank操作第二存儲(chǔ)模塊的第二目標(biāo)bank。
一方面,確定模塊21在檢測(cè)到第一目標(biāo)bank未加載入第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),將第一目標(biāo)bank加載入第二目標(biāo)bank內(nèi),并且通過內(nèi)部的寄存器將第二目標(biāo)bank切換至生效狀態(tài),于是,操作模塊22可以調(diào)用生效的第二目標(biāo)bank的程序指令或數(shù)據(jù)。在一些實(shí)施例中,當(dāng)?shù)谝淮鎯?chǔ)模塊的每個(gè)第一目標(biāo)bank加載入第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),單片機(jī)內(nèi)部的數(shù)組會(huì)記錄第二目標(biāo)bank與第一目標(biāo)bank之間的存儲(chǔ)關(guān)系,當(dāng)進(jìn)行切換flashbankx操作,操作模塊22訪問該數(shù)組內(nèi)是否預(yù)存x。例如,第二存儲(chǔ)模塊的ram空間切分了4個(gè)第二目標(biāo)bank,此時(shí)的數(shù)組內(nèi)的4個(gè)值分別是3、1、10、0。操作模塊22通過訪問該數(shù)組,分析出以下關(guān)系:rambank0內(nèi)存儲(chǔ)flashbank3的程序指令或數(shù)據(jù),rambank1內(nèi)存儲(chǔ)flashbank1的程序指令或數(shù)據(jù),rambank2內(nèi)存儲(chǔ)flashbank10的程序指令或數(shù)據(jù),rambank3內(nèi)存儲(chǔ)flashbank0的程序指令或數(shù)據(jù)。當(dāng)操作模塊22分析出該數(shù)組未能夠存儲(chǔ)有flashbankx與rambank之間的關(guān)系時(shí),則說明“第一目標(biāo)bank未加載入第二存儲(chǔ)模塊的第二目標(biāo)bank”。反之同理,在此不贅述。
進(jìn)一步的,第二存儲(chǔ)模塊的ram空間各個(gè)第二目標(biāo)bank已存儲(chǔ)有第一存儲(chǔ)模塊的第一目標(biāo)bank,例如:rambank0對(duì)應(yīng)flashbank7,rambank1對(duì)應(yīng)flashbank20,rambankn-1對(duì)應(yīng)flashbank6。當(dāng)操作模塊22需要控制空調(diào)調(diào)節(jié)溫度時(shí),第二存儲(chǔ)模塊的第二目標(biāo)bank未能夠存儲(chǔ)有與用于控制空調(diào)13溫度的相關(guān)程序指令,然而,該與用于控制空調(diào)13溫度的相關(guān)程序指令存儲(chǔ)在片外存儲(chǔ)器1123的第一目標(biāo)bank:flashbank3。因此,操作模塊22需要將flashbank3切換至第二存儲(chǔ)模塊的ram空間,因此,操作模塊22可以將flashbank3切換至rambank2。
因此,當(dāng)?shù)诙鎯?chǔ)模塊重新加載bank的程序或數(shù)據(jù)時(shí),其可以根據(jù)第一存儲(chǔ)模塊的第一目標(biāo)bank的程序或數(shù)據(jù)靈活配置第二存儲(chǔ)模塊的第二目標(biāo)bank,從而提高切bank的效率。
另一方面,確定模塊21在檢測(cè)到第一目標(biāo)bank已加載入第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),通過內(nèi)部的寄存器件第二目標(biāo)bank切換為生效狀態(tài)。操作模塊22需要切換到flashbank20時(shí),由于flashbank20已經(jīng)載入到了rambank1,因此無需再從第一存儲(chǔ)模塊中載入,可以通過內(nèi)部寄存器將rambank1切換至生效狀態(tài)即可。因此,采用此種方式可以避免過度頻繁切換bank,從而提高切bank操作和效率。
在一些實(shí)施例中,如圖7所示,該數(shù)據(jù)操作裝置200還包括切分模塊23,切分模塊23用于于第二存儲(chǔ)模塊中切分共用同一地址空間的若干第二目標(biāo)bank。第二存儲(chǔ)模塊包括若干公共區(qū)與若干bank區(qū),公共區(qū)用于存儲(chǔ)公共程序及公共代碼,bank區(qū)包括共用同一地址空間的若干第二目標(biāo)bank。
在一些實(shí)施例中,第一目標(biāo)bank與第二目標(biāo)bank的容量皆相等。
在一些實(shí)施例中,如圖8所示,操作模塊22包括加載單元221、第一切換單元222及第二切換單元223,加載單元221用于在檢測(cè)到第二存儲(chǔ)模塊的第二目標(biāo)bank未加載入第一目標(biāo)bank內(nèi)時(shí),將第一目標(biāo)bank的程序或數(shù)據(jù)加載入第二目標(biāo)bank內(nèi);第一切換單元222用于切換第二目標(biāo)bank為生效狀態(tài)。第二切換單元223用于在檢測(cè)到第二存儲(chǔ)模塊的第二目標(biāo)bank已加載入第一目標(biāo)bank內(nèi)時(shí),切換第二目標(biāo)bank為生效狀態(tài)。在一些實(shí)施例中,第一存儲(chǔ)模塊包括隨機(jī)存取存儲(chǔ)器,該隨機(jī)存取存儲(chǔ)器內(nèi)置于單片機(jī)中,第二存儲(chǔ)模塊包括具有spi接口的flash存儲(chǔ)器。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加通用硬件平臺(tái)的方式來實(shí)現(xiàn)數(shù)據(jù)操作裝置200,當(dāng)然也可以通過硬件實(shí)現(xiàn)。并且,由于數(shù)據(jù)操作裝置200的構(gòu)思與上述各個(gè)實(shí)施例所述的嵌入式裝置一樣,在內(nèi)容不互相沖突下,數(shù)據(jù)操作裝置200的實(shí)施例可以引用上述各個(gè)實(shí)施例的內(nèi)容,在此不贅述。
作為本發(fā)明實(shí)施例的又另一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作方法,如圖9所示,該數(shù)據(jù)操作方法300包括:
步驟31、在檢測(cè)到bank切換操作時(shí),確定第一存儲(chǔ)模塊的第一目標(biāo)bank,第一目標(biāo)bank存儲(chǔ)有加載入第二存儲(chǔ)模塊中任意一個(gè)第二目標(biāo)bank的程序或數(shù)據(jù);
步驟32、根據(jù)第一目標(biāo)bank操作第二存儲(chǔ)模塊的第二目標(biāo)bank。
一方面,在檢測(cè)到第一目標(biāo)bank未加載入第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),將第一目標(biāo)bank加載入第二目標(biāo)bank內(nèi),并且通過內(nèi)部的寄存器將第二目標(biāo)bank切換至生效狀態(tài),于是,可以調(diào)用生效的第二目標(biāo)bank的程序指令或數(shù)據(jù)。在一些實(shí)施例中,當(dāng)?shù)谝淮鎯?chǔ)模塊的每個(gè)第一目標(biāo)bank加載入第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),單片機(jī)內(nèi)部的數(shù)組會(huì)記錄第二目標(biāo)bank與第一目標(biāo)bank之間的存儲(chǔ)關(guān)系,當(dāng)進(jìn)行切換flashbankx操作,訪問該數(shù)組內(nèi)是否預(yù)存x。例如,第二存儲(chǔ)模塊的ram空間切分了4個(gè)第二目標(biāo)bank,此時(shí)的數(shù)組內(nèi)的4個(gè)值分別是3、1、10、0。通過訪問該數(shù)組,分析出以下關(guān)系:rambank0內(nèi)存儲(chǔ)flashbank3的程序指令或數(shù)據(jù),rambank1內(nèi)存儲(chǔ)flashbank1的程序指令或數(shù)據(jù),rambank2內(nèi)存儲(chǔ)flashbank10的程序指令或數(shù)據(jù),rambank3內(nèi)存儲(chǔ)flashbank0的程序指令或數(shù)據(jù)。當(dāng)分析出該數(shù)組未能夠存儲(chǔ)有flashbankx與rambank之間的關(guān)系時(shí),則說明“第一目標(biāo)bank未加載入第二存儲(chǔ)模塊的第二目標(biāo)bank”。反之同理,在此不贅述。
進(jìn)一步的,第二存儲(chǔ)模塊的ram空間各個(gè)第二目標(biāo)bank已存儲(chǔ)有第一存儲(chǔ)模塊的第一目標(biāo)bank,例如:rambank0對(duì)應(yīng)flashbank7,rambank1對(duì)應(yīng)flashbank20,rambankn-1對(duì)應(yīng)flashbank6。當(dāng)需要控制空調(diào)調(diào)節(jié)溫度時(shí),第二存儲(chǔ)模塊的第二目標(biāo)bank未能夠存儲(chǔ)有與用于控制空調(diào)13溫度的相關(guān)程序指令,然而,該與用于控制空調(diào)13溫度的相關(guān)程序指令存儲(chǔ)在片外存儲(chǔ)器1123的第一目標(biāo)bank:flashbank3。因此,需要將flashbank3切換至第二存儲(chǔ)模塊的ram空間,因此,可以將flashbank3切換至rambank2。
因此,當(dāng)?shù)诙鎯?chǔ)模塊重新加載bank的程序或數(shù)據(jù)時(shí),其可以根據(jù)第一存儲(chǔ)模塊的第一目標(biāo)bank的程序或數(shù)據(jù)靈活配置第二存儲(chǔ)模塊的第二目標(biāo)bank,從而提高切bank的效率。
另一方面,在檢測(cè)到第一目標(biāo)bank已加載入第二存儲(chǔ)模塊的第二目標(biāo)bank時(shí),通過內(nèi)部的寄存器件第二目標(biāo)bank切換為生效狀態(tài)。需要切換到flashbank20時(shí),由于flashbank20已經(jīng)載入到了rambank1,因此無需再從第一存儲(chǔ)模塊中載入,可以通過內(nèi)部寄存器將rambank1切換至生效狀態(tài)即可。因此,采用此種方式可以避免過度頻繁切換bank,從而提高切bank操作和效率。
在一些實(shí)施例中,如圖10所示,在步驟31之前,該數(shù)據(jù)操作方法300還包括:
步驟33、于第二存儲(chǔ)模塊中切分共用同一地址空間的若干第二目標(biāo)bank。
第二存儲(chǔ)模塊包括若干公共區(qū)與若干bank區(qū),每個(gè)公共區(qū)用于存儲(chǔ)公共程序及公共代碼,每個(gè)bank區(qū)包括共用同一地址空間的若干第二目標(biāo)bank。第一目標(biāo)bank與第二目標(biāo)bank的容量皆相等。第一存儲(chǔ)模塊包括隨機(jī)存取存儲(chǔ)器,該隨機(jī)存取存儲(chǔ)器內(nèi)置于單片機(jī)中,第二存儲(chǔ)模塊包括具有spi接口的flash存儲(chǔ)器。
作為本發(fā)明實(shí)施例的又一方面,本發(fā)明實(shí)施例提供一種單片機(jī)。如圖11所示,該單片機(jī)400包括:一個(gè)或多個(gè)處理器41以及分別與該至少一個(gè)處理器41通信連接的片內(nèi)存儲(chǔ)器42及片外存儲(chǔ)器存儲(chǔ)器43。其中,圖11中以一個(gè)處理器41為例。
處理器41和片內(nèi)存儲(chǔ)器42、片外存儲(chǔ)器存儲(chǔ)器43可以通過總線或者其他方式連接,圖7中以通過總線連接為例。
片內(nèi)存儲(chǔ)器42與片外存儲(chǔ)器43可以作為一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),可用于存儲(chǔ)非易失性軟件程序、非易失性計(jì)算機(jī)可執(zhí)行程序以及模塊,如本發(fā)明實(shí)施例中的數(shù)據(jù)操作方法對(duì)應(yīng)的程序指令/模塊。處理器41通過運(yùn)行存儲(chǔ)在片內(nèi)存儲(chǔ)器42與片外存儲(chǔ)器存儲(chǔ)器43中的非易失性軟件程序、指令以及模塊,從而執(zhí)行數(shù)據(jù)操作方法的各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述方法實(shí)施例的數(shù)據(jù)操作方法的各個(gè)模塊的功能。
片內(nèi)存儲(chǔ)器42與片外存儲(chǔ)器存儲(chǔ)器43可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他非易失性固態(tài)存儲(chǔ)器件。
所述程序指令/模塊存儲(chǔ)在所述片內(nèi)存儲(chǔ)器42與片外存儲(chǔ)器存儲(chǔ)器43中,當(dāng)被所述一個(gè)或者多個(gè)處理器41執(zhí)行時(shí),執(zhí)行上述任意方法實(shí)施例中的數(shù)據(jù)操作方法,例如,執(zhí)行以上描述的圖9至10所示的各個(gè)步驟的功能。
本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),所述計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,該計(jì)算機(jī)可執(zhí)行指令被一個(gè)或多個(gè)處理器執(zhí)行,例如圖11中的一個(gè)處理器41,可使得上述一個(gè)或多個(gè)處理器可執(zhí)行上述任意方法實(shí)施例中的數(shù)據(jù)操作方法,例如,執(zhí)行上述任意方法實(shí)施例中的數(shù)據(jù)操作方法,例如,執(zhí)行以上描述的圖9至圖10所示的各個(gè)步驟的功能。
以上所描述的裝置或設(shè)備實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元模塊可以是或者也可以不是物理上分開的,作為模塊單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)模塊單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)相關(guān)技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;在本發(fā)明的思路下,以上實(shí)施例或者不同實(shí)施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡(jiǎn)明,它們沒有在細(xì)節(jié)中提供;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請(qǐng)各實(shí)施例技術(shù)方案的范圍。