專利名稱:一種嵌入式芯片及其程序空間擴(kuò)展的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng)領(lǐng)域,尤其涉及一種嵌入式芯片及其程序空間擴(kuò)展的方法。
背景技術(shù):
在嵌入式系統(tǒng)領(lǐng)域,8位/16位單片機(jī)得到了廣泛的應(yīng)用,由于地址總線位數(shù)的限制,其程序區(qū)的大小有限,如8位機(jī)的程序空間大小最大為64Kbytes,如果系統(tǒng)的程序量大于64K bytes,就需要擴(kuò)展系統(tǒng)的程序空間。通常情況下是采用通用IO端口(GPIO,General Purpose Input/Output)擴(kuò)展地址線的方式,使地址總線的寬度增加,則對(duì)應(yīng)的程序空間自然得到擴(kuò)展。但是,此方法需要占用單片機(jī)有限的GPIO資源,擴(kuò)展的空間越大,占用的IO資源越多;同時(shí),擴(kuò)展地址空間需要采用更大容量的對(duì)應(yīng)的存儲(chǔ)器件,結(jié)果將增加系統(tǒng)的成本,造成IO資源緊張。
為能夠充分利用8位/16位單片機(jī)有限的程序空間,實(shí)現(xiàn)程序區(qū)的擴(kuò)展,針對(duì)應(yīng)用NAND FLASH芯片的嵌入式系統(tǒng),本方法提出了一種程序空間復(fù)用的概念系統(tǒng)軟件設(shè)計(jì)時(shí)按任務(wù)劃分,把在系統(tǒng)中不需要同時(shí)運(yùn)行的任務(wù)放在相同的程序空間;從NAND FLASH中運(yùn)行應(yīng)用程序。在滿足系統(tǒng)功能的前提下,實(shí)現(xiàn)固件的升級(jí),有效地降低系統(tǒng)成本。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種嵌入式芯片及其程序空間擴(kuò)展的方法,用以充分利用8位/16位單片機(jī)有限的程序空間,實(shí)現(xiàn)程序區(qū)的擴(kuò)展。
本發(fā)明提供一種嵌入式系統(tǒng)芯片,包括只讀存儲(chǔ)器與隨機(jī)存儲(chǔ)器,通過(guò)地址總線與數(shù)據(jù)總線,和CPU相連,還包括非易失型存儲(chǔ)器接口,通過(guò)地址總線與數(shù)據(jù)總線,和CPU相連,用于與非易失型存儲(chǔ)器通訊連接;所述只讀存儲(chǔ)器中存儲(chǔ)有啟動(dòng)程序,所述隨機(jī)存儲(chǔ)器包括第一存儲(chǔ)區(qū)與第二存儲(chǔ)區(qū);所述存儲(chǔ)于只讀存儲(chǔ)器中的啟動(dòng)程序在系統(tǒng)上電時(shí)執(zhí)行,通過(guò)所述非易失型存儲(chǔ)器接口,將存儲(chǔ)于非易失型存儲(chǔ)器中的操作系統(tǒng)內(nèi)核程序復(fù)制到所述第一存儲(chǔ)區(qū),同時(shí)切換第一存儲(chǔ)區(qū)為程序區(qū),然后跳轉(zhuǎn)到所述第一存儲(chǔ)區(qū)執(zhí)行系統(tǒng)內(nèi)核程序;所述操作系統(tǒng)內(nèi)核程序執(zhí)行后,根據(jù)任務(wù)調(diào)度優(yōu)先級(jí),將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第二存儲(chǔ)區(qū)中等待執(zhí)行。
所述復(fù)制到第一存儲(chǔ)區(qū)中的操作系統(tǒng)內(nèi)核程序執(zhí)行后,將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)通用任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第一存儲(chǔ)區(qū)中等待執(zhí)行;由操作系統(tǒng)內(nèi)核程序復(fù)制到第二存儲(chǔ)區(qū)中等待執(zhí)行的系統(tǒng)任務(wù)程序?yàn)樘囟ㄈ蝿?wù)程序。
所述存儲(chǔ)于只讀存儲(chǔ)器中的啟動(dòng)程序,在將系統(tǒng)內(nèi)核程序復(fù)制到所述第一存儲(chǔ)區(qū)后,再將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)通用任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第一存儲(chǔ)區(qū)中等待執(zhí)行;由系統(tǒng)內(nèi)核程序復(fù)制到第二存儲(chǔ)區(qū)中等待執(zhí)行的系統(tǒng)任務(wù)程序?yàn)樘囟ㄈ蝿?wù)程序。
所述復(fù)制到第一存儲(chǔ)區(qū)中的操作系統(tǒng)內(nèi)核程序在控制任務(wù)切換時(shí),如果需要運(yùn)行的高優(yōu)先級(jí)任務(wù)不在所述第一與第二存儲(chǔ)區(qū)中,則通過(guò)所述非易失型存儲(chǔ)器接口,將存儲(chǔ)于非易失型存儲(chǔ)器中的高優(yōu)先級(jí)任務(wù)復(fù)制到所述第二存儲(chǔ)區(qū)中等待執(zhí)行。
所述非易失型存儲(chǔ)器為NAND FLASH存儲(chǔ)器。
所述隨機(jī)存儲(chǔ)器還包括系統(tǒng)專用數(shù)據(jù)區(qū),用于存儲(chǔ)系統(tǒng)數(shù)據(jù)。
所述的芯片,進(jìn)一步包括直接存儲(chǔ)訪問(wèn)控制器,通過(guò)地址總線與數(shù)據(jù)總線,與CPU和非易失型存儲(chǔ)器接口相連,用于控制從非易失型存儲(chǔ)器向所述第一存儲(chǔ)區(qū)與第二存儲(chǔ)區(qū)復(fù)制程序。
本發(fā)明還提供一種對(duì)嵌入式系統(tǒng)的程序空間進(jìn)行擴(kuò)展的方法,包括如下步驟
(1)在嵌入式系統(tǒng)芯片中設(shè)置非易失型存儲(chǔ)器接口,并通過(guò)地址總線與數(shù)據(jù)總線,和芯片內(nèi)部集成的CPU、只讀存儲(chǔ)器與隨機(jī)存儲(chǔ)器相連;(2)將隨機(jī)存儲(chǔ)器的存儲(chǔ)空間劃分為第一存儲(chǔ)區(qū)與第二存儲(chǔ)區(qū);(3)將非易失型存儲(chǔ)器通過(guò)所述非易失型存儲(chǔ)器接口與所述嵌入式系統(tǒng)芯片相連;(4)將啟動(dòng)程序存儲(chǔ)于所述只讀存儲(chǔ)器中,將操作系統(tǒng)內(nèi)核程序與系統(tǒng)任務(wù)程序存儲(chǔ)于所述非易失型存儲(chǔ)器中的不同區(qū)間;(5)所述存儲(chǔ)于只讀存儲(chǔ)器中的啟動(dòng)程序在系統(tǒng)上電時(shí)執(zhí)行,通過(guò)所述非易失型存儲(chǔ)器接口,將存儲(chǔ)于非易失型存儲(chǔ)器中的操作系統(tǒng)內(nèi)核程序復(fù)制到所述第一存儲(chǔ)區(qū),同時(shí)切換所述第一存儲(chǔ)區(qū)為程序區(qū),然后跳轉(zhuǎn)到所述第一存儲(chǔ)區(qū)執(zhí)行系統(tǒng)內(nèi)核程序;(6)所述操作系統(tǒng)內(nèi)核程序執(zhí)行后,根據(jù)任務(wù)調(diào)度優(yōu)先級(jí),將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第二存儲(chǔ)區(qū)中等待執(zhí)行。
其中所述步驟(4),進(jìn)一步將系統(tǒng)通用任務(wù)程序也存儲(chǔ)于所述非易失型存儲(chǔ)器的特定區(qū)間;所述步驟(6),復(fù)制到第一存儲(chǔ)區(qū)中的操作系統(tǒng)內(nèi)核程序執(zhí)行后,將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)通用任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第一存儲(chǔ)區(qū)中等待執(zhí)行;由操作系統(tǒng)內(nèi)核程序復(fù)制到第二存儲(chǔ)區(qū)中等待執(zhí)行的系統(tǒng)任務(wù)程序?yàn)樘囟ㄈ蝿?wù)程序。
所述步驟(4),進(jìn)一步將系統(tǒng)通用任務(wù)程序也存儲(chǔ)于所述非易失型存儲(chǔ)器的特定區(qū)間;所述步驟(5),存儲(chǔ)于只讀存儲(chǔ)器中的啟動(dòng)程序,在將操作系統(tǒng)內(nèi)核程序復(fù)制到所述第一存儲(chǔ)區(qū)后,再將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)通用任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第一存儲(chǔ)區(qū)中等待執(zhí)行;在步驟(6)中,由操作系統(tǒng)內(nèi)核程序復(fù)制到第二存儲(chǔ)區(qū)中等待執(zhí)行的系統(tǒng)任務(wù)程序?yàn)樘囟ㄈ蝿?wù)程序。
所述的方法,進(jìn)一步包括步驟(7)所述復(fù)制到第一存儲(chǔ)區(qū)中的操作系統(tǒng)內(nèi)核程序在控制任務(wù)切換時(shí),如果需要運(yùn)行的高優(yōu)先級(jí)任務(wù)不在所述第一與第二存儲(chǔ)區(qū)中,則通過(guò)所述非易失型存儲(chǔ)器接口,將存儲(chǔ)于非易失型存儲(chǔ)器中的高優(yōu)先級(jí)任務(wù)復(fù)制到所述第二存儲(chǔ)區(qū)中等待執(zhí)行。
所述非易失型存儲(chǔ)器為NAND FLASH存儲(chǔ)器。
所述步驟(2),進(jìn)一步將隨機(jī)存儲(chǔ)器的存儲(chǔ)空間劃分出系統(tǒng)專用數(shù)據(jù)區(qū),用于存儲(chǔ)系統(tǒng)數(shù)據(jù)。
所述步驟(5)與步驟(6)中的程序復(fù)制過(guò)程,是在芯片內(nèi)部集成的直接存儲(chǔ)訪問(wèn)控制器的控制下進(jìn)行的。
所述步驟(4),存儲(chǔ)于非易失型存儲(chǔ)器中的程序,在編譯時(shí),對(duì)需要在芯片內(nèi)部的相同存儲(chǔ)區(qū)運(yùn)行的程序,其對(duì)應(yīng)編譯地址相同。
所述步驟(7),操作系統(tǒng)內(nèi)核程序在控制任務(wù)切換時(shí),保留優(yōu)先級(jí)在一定范圍之內(nèi)的任務(wù)在第二存儲(chǔ)區(qū)中運(yùn)行,通過(guò)任務(wù)的優(yōu)先級(jí)作為任務(wù)程序是否需要在第二存儲(chǔ)區(qū)中運(yùn)行的標(biāo)志;在任務(wù)切換過(guò)程中,利用任務(wù)程序的優(yōu)先級(jí)判斷待運(yùn)行的任務(wù)的運(yùn)行空間是否應(yīng)該在第二存儲(chǔ)區(qū)中;如果否,則直接完成任務(wù)切換,運(yùn)行更高優(yōu)先級(jí)任務(wù);如果應(yīng)該在第二存儲(chǔ)區(qū)中運(yùn)行,則從非易失型存儲(chǔ)器中復(fù)制高優(yōu)先級(jí)任務(wù)程序到第二存儲(chǔ)區(qū)中,然后運(yùn)行第二存儲(chǔ)區(qū)中的該任務(wù)程序。
本發(fā)明針對(duì)使用NAND FLASH的嵌入式系統(tǒng),充分利用芯片內(nèi)部的有限的程序空間,以及芯片內(nèi)部程序區(qū)、數(shù)據(jù)區(qū)復(fù)用的特點(diǎn),實(shí)現(xiàn)了程序從NAND FLASH中運(yùn)行,既擴(kuò)充了系統(tǒng)的程序空間,又降低了系統(tǒng)的成本,而且本發(fā)明所述方法需要占用系統(tǒng)GPIO資源,毋須更大容量空間的程序存儲(chǔ)器。
圖1是本發(fā)明實(shí)施例的一種嵌入式芯片程序空間擴(kuò)展的系統(tǒng)框圖;
圖2是本發(fā)明實(shí)施例的緩存1、緩存2通用配置模式的存儲(chǔ)區(qū)間分配圖;圖3是本發(fā)明實(shí)施例的緩存1、緩存2影子配置模式下緩存1為程序區(qū)配置的存儲(chǔ)區(qū)間分配圖;圖4是本發(fā)明實(shí)施例的緩存1、緩存2影子配置模式下緩存1、2都為程序區(qū)配置的存儲(chǔ)區(qū)間分配圖;圖5是本發(fā)明實(shí)施例的固件的組成框圖;圖6是本發(fā)明實(shí)施例的固件運(yùn)行流程圖;圖7是本發(fā)明實(shí)施例的緩存1、緩存2以及NAND FLASH的設(shè)置示意圖,用以支持?jǐn)U展系統(tǒng)程序空間;圖8是本發(fā)明實(shí)施例的擴(kuò)展程序空間方法的流程圖。
具體實(shí)施例方式
通常8位/16位單片機(jī)采用將程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器分開(kāi)尋址的哈佛結(jié)構(gòu),而本方法針對(duì)8位/16位單片機(jī)的特點(diǎn),通過(guò)修改8位/16位單片機(jī)的讀、寫(xiě)控制方式,進(jìn)行了軟、硬件的特殊設(shè)計(jì),使得系統(tǒng)既可以利用隨機(jī)存儲(chǔ)器作為系統(tǒng)的程序存儲(chǔ)器,又可以作為系統(tǒng)的數(shù)據(jù)存儲(chǔ)器,做到了程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器的復(fù)用;存儲(chǔ)器要作為系統(tǒng)的程序區(qū)使用,必須能夠進(jìn)行字節(jié)的讀操作,而NAND FLASH不能夠進(jìn)行字節(jié)的讀寫(xiě)操作,只能夠以頁(yè)(頁(yè)面大小為512字節(jié)或者2k字節(jié))作為操作的基本單位,其特點(diǎn)決定了NAND FLASH不適合作為系統(tǒng)的程序存儲(chǔ)區(qū),本方法通過(guò)對(duì)系統(tǒng)任務(wù)切換相關(guān)內(nèi)核代碼的獨(dú)特設(shè)計(jì),使系統(tǒng)可以實(shí)現(xiàn)在任務(wù)切換時(shí)從NAND FLASH中實(shí)時(shí)拷貝程序代碼功能。
本發(fā)明的核心在于緩存的設(shè)計(jì)與使用方法對(duì)系統(tǒng)的RAM區(qū)進(jìn)行了特殊設(shè)計(jì),使其既可以作為數(shù)據(jù)區(qū)使用,又可以作為程序區(qū)使用;在作為程序區(qū)使用時(shí),通過(guò)系統(tǒng)軟件的特殊設(shè)計(jì)可以使不同的程序(任務(wù))運(yùn)行在本區(qū)間內(nèi)(比如本區(qū)間大小為4k bytes,10個(gè)任務(wù)可在此空間運(yùn)行,則相當(dāng)于程序空間擴(kuò)展了36k bytes)。
如圖1所示,為一種嵌入式芯片在支持8位/16位單片機(jī)程序空間擴(kuò)展時(shí)的系統(tǒng)框圖,在芯片內(nèi)部集成有8位/16位CPU內(nèi)核,BOOT ROM,DMAController,RAM;同時(shí)支持NAND FLASH Interface、GPIO等接口。
其中BOOT ROM為啟動(dòng)代碼區(qū),在系統(tǒng)上電復(fù)位后首先運(yùn)行BOOT ROM區(qū)間的程序,啟動(dòng)代碼的功能包括(1)拷貝功能從NAND FLASH中拷貝操作系統(tǒng)內(nèi)核和部分應(yīng)用程序到緩存工作;(2)切換緩存1區(qū)為程序區(qū),所謂“切換”是通過(guò)硬件的控制信號(hào)的切換完成的;(3)跳轉(zhuǎn)到RAM區(qū)間開(kāi)始執(zhí)行應(yīng)用程序。
DMA Controller無(wú)需CPU的參與,實(shí)現(xiàn)從NAND FLASH拷貝數(shù)據(jù)到RAM區(qū)。通過(guò)DMA Controller可以提高數(shù)據(jù)拷貝的速度,從而提高系統(tǒng)的任務(wù)切換速度;NAND FLASH Interface提供與NAND FLASH通訊的硬件接口;RAM系統(tǒng)的數(shù)據(jù)區(qū);SFR單片機(jī)的特殊功能寄存器;緩存1、緩存2隨機(jī)存儲(chǔ)器,既可以作為程序區(qū)使用,又可以作為數(shù)據(jù)區(qū)使用;特別地,緩存就是特殊的RAM,與RAM的區(qū)別只是邏輯上的劃分。在物理上,它們可以是同一個(gè)RAM(造成整個(gè)RAM既可以作為數(shù)據(jù)區(qū)使用,又可以作為程序區(qū)使用),或不同的RAM。緩存1和緩存2的工作模式可以通過(guò)軟件進(jìn)行配置,配置模式包括通用配置模式和影子配置模式。
在通用配置模式下,固件在BOOT ROM中運(yùn)行,緩存1和緩存2作為系統(tǒng)的數(shù)據(jù)區(qū)使用,可以從NAND FLASH中拷貝程序代碼到緩存1、緩存2;存儲(chǔ)區(qū)間劃分,如圖2所示,為通用模式存儲(chǔ)區(qū)間分配圖。
在影子配置模式下,分兩種情況(a)緩存1作為系統(tǒng)程序區(qū)使用,緩存2作為系統(tǒng)數(shù)據(jù)區(qū)使用,存儲(chǔ)區(qū)分配如圖3所示;(b)緩存1、緩存2同時(shí)作為系統(tǒng)的程序區(qū)使用,存儲(chǔ)區(qū)分配如圖4所示。
此三種情況,是在說(shuō)明了軟件的實(shí)現(xiàn)過(guò)程,實(shí)現(xiàn)方式對(duì)緩存進(jìn)行了分區(qū),一部分區(qū)間下載操作系統(tǒng)的內(nèi)核(操作系統(tǒng)的內(nèi)核本升級(jí)使用),另一部分作為不同任務(wù)的運(yùn)行空間存在。
在本發(fā)明所述的嵌入式芯片系統(tǒng)中,其中的固件組成如圖5所示,固件主要包括Boot Loader為系統(tǒng)的啟動(dòng)代碼模塊,保存在BOOT ROM區(qū)。在系統(tǒng)上電復(fù)位時(shí),從NAND FLASH中拷貝Os Kernel、Universal Task到緩存1;切換緩存1為系統(tǒng)程序區(qū);跳轉(zhuǎn)到緩存1區(qū),執(zhí)行系統(tǒng)應(yīng)用程序;OS Kernel操作系統(tǒng)內(nèi)核代碼模塊,實(shí)現(xiàn)系統(tǒng)的任務(wù)調(diào)度,擴(kuò)展程序空間的功能;Universal Task通用任務(wù),只在上電復(fù)位時(shí)由Boot loader從NANDFLASH中拷貝到緩存1,不需要重復(fù)拷貝;主要為系統(tǒng)中使用頻繁的任務(wù)或函數(shù);Special Task特殊任務(wù),即可以在相同的程序空間緩存2中運(yùn)行的任務(wù),系統(tǒng)中可以包含多個(gè)特殊任務(wù)以擴(kuò)展程序空間;從而實(shí)現(xiàn)系統(tǒng)程序空間的擴(kuò)展。
如圖6所示,為固件支持系統(tǒng)運(yùn)行的主要流程圖,包括步驟601,設(shè)置緩存1為數(shù)據(jù)區(qū);步驟602,從NAND FLASH中拷貝代碼到緩存1;步驟603,切換緩存1為程序區(qū);步驟604,開(kāi)始多任務(wù)運(yùn)行。
固件運(yùn)行對(duì)系統(tǒng)進(jìn)行初始化后,為了可以在芯片內(nèi)部有限的程序空間運(yùn)行更大程序(大于芯片內(nèi)部的最大程序空間),利用芯片內(nèi)部的緩存2空間,所有任務(wù)在微觀上是串行運(yùn)行的特點(diǎn)把緩存2空間作為程序擴(kuò)展的復(fù)用空間,即多個(gè)任務(wù)都可以在緩存2中運(yùn)行,需要擴(kuò)展程序空間,如圖7所示,用于擴(kuò)展系統(tǒng)程序空間的緩存1、緩存2以及NAND FLASH的設(shè)置方式圖。其中,所有的Special Task任務(wù)代碼保存在NAND FLASH的不同區(qū)間,所有Special Task代碼的運(yùn)行空間都指向緩存2數(shù)據(jù)區(qū),即對(duì)應(yīng)的Special Task任務(wù)運(yùn)行位置都是緩存2。
針對(duì)UCOSII操作系統(tǒng)內(nèi)核公開(kāi)的特性,修改內(nèi)核的任務(wù)切換機(jī)制,保留優(yōu)先級(jí)在一定范圍內(nèi)的任務(wù)在緩存2空間運(yùn)行,通過(guò)任務(wù)的優(yōu)先級(jí)作為判斷任務(wù)代碼是否需要在緩存2中運(yùn)行的標(biāo)志。如圖8所示,為擴(kuò)展程序空間方法的流程圖,開(kāi)始執(zhí)行任務(wù)后(步驟801),判斷是否一個(gè)任務(wù)結(jié)束需要進(jìn)行任務(wù)切換(步驟802),如果不需要,則返回步驟801,繼續(xù)執(zhí)行當(dāng)前任務(wù);如果需要,則要進(jìn)行任務(wù)切換,首先利用任務(wù)的優(yōu)先級(jí)來(lái)判斷待運(yùn)行的任務(wù)的運(yùn)行空間是否在緩存2中,即判斷高優(yōu)先級(jí)任務(wù)是否運(yùn)行在緩存2中(步驟803);如果待運(yùn)行高優(yōu)先級(jí)任務(wù)的運(yùn)行空間不在緩存2中,則直接切換執(zhí)行高優(yōu)先級(jí)任務(wù)(步驟807);如果待運(yùn)行高優(yōu)先級(jí)任務(wù)的運(yùn)行空間在緩存2中,則切換緩存2為數(shù)據(jù)區(qū)(步驟804);然后,從NAND FLASH中拷貝待運(yùn)行的高優(yōu)先級(jí)任務(wù)代碼到緩存2中(步驟805);之后,再切換緩存2為程序區(qū)(步驟806);在緩存2中,執(zhí)行任務(wù)代碼(步驟807)。
由于任務(wù)擴(kuò)展的特殊方式,所有Special Task運(yùn)行在相同的程序空間緩存2,因此需要對(duì)編譯進(jìn)行相關(guān)的設(shè)置①分次編譯在緩存2中運(yùn)行的任務(wù)對(duì)應(yīng)編譯地址相同;②程序保存根據(jù)任務(wù)的優(yōu)先級(jí)的不同,把每一個(gè)在緩存2中運(yùn)行的任務(wù)的代碼分別保存到NAND FLASH的不同區(qū)間;③緩存中運(yùn)行函數(shù)特征要求對(duì)應(yīng)的函數(shù)代碼支持再入屬性。
通用的8位/16位單片機(jī)擴(kuò)展程序空間的方法是利用通用輸入/輸出端口(GPIO,General Purpose Input/Output)作為系統(tǒng)的地址線,實(shí)現(xiàn)可訪問(wèn)程序空間的擴(kuò)展,需要系統(tǒng)的GPIO資源,而且程序存儲(chǔ)器的容量也必須擴(kuò)展;本方法在不需要占用系統(tǒng)GPIO資源,毋須更大容量空間的程序存儲(chǔ)器,使程序從NAND FLASH中運(yùn)行,實(shí)現(xiàn)了程序空間的擴(kuò)展。
利用本發(fā)明可以實(shí)現(xiàn)下述特殊功能1、所有的應(yīng)用程序可以在芯片內(nèi)部緩存中運(yùn)行;2、系統(tǒng)的應(yīng)用程序在執(zhí)行過(guò)程中自動(dòng)進(jìn)行代碼檢測(cè)是否需要拷貝,動(dòng)態(tài)從NAND FLASH中拷貝代碼到芯片內(nèi)部緩存1、緩存2中運(yùn)行;3、利用有限的RAM空間,充分?jǐn)U展系統(tǒng)的程序空間;4、實(shí)現(xiàn)系統(tǒng)固件的升級(jí)功能。
權(quán)利要求
1.一種嵌入式系統(tǒng)芯片,包括只讀存儲(chǔ)器與隨機(jī)存儲(chǔ)器,通過(guò)地址總線與數(shù)據(jù)總線,和CPU相連,其特征在于,還包括非易失型存儲(chǔ)器接口,通過(guò)地址總線與數(shù)據(jù)總線,和CPU相連,用于與非易失型存儲(chǔ)器通訊連接;所述只讀存儲(chǔ)器中存儲(chǔ)有啟動(dòng)程序,所述隨機(jī)存儲(chǔ)器包括第一存儲(chǔ)區(qū)與第二存儲(chǔ)區(qū);所述存儲(chǔ)于只讀存儲(chǔ)器中的啟動(dòng)程序在系統(tǒng)上電時(shí)執(zhí)行,通過(guò)所述非易失型存儲(chǔ)器接口,將存儲(chǔ)于非易失型存儲(chǔ)器中的操作系統(tǒng)內(nèi)核程序復(fù)制到所述第一存儲(chǔ)區(qū),同時(shí)切換第一存儲(chǔ)區(qū)為程序區(qū),然后跳轉(zhuǎn)到所述第一存儲(chǔ)區(qū)執(zhí)行系統(tǒng)內(nèi)核程序;所述操作系統(tǒng)內(nèi)核程序執(zhí)行后,根據(jù)任務(wù)調(diào)度優(yōu)先級(jí),將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第二存儲(chǔ)區(qū)中等待執(zhí)行。
2.如權(quán)利要求1所述的芯片,其特征在于,所述復(fù)制到第一存儲(chǔ)區(qū)中的操作系統(tǒng)內(nèi)核程序執(zhí)行后,將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)通用任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第一存儲(chǔ)區(qū)中等待執(zhí)行;由操作系統(tǒng)內(nèi)核程序復(fù)制到第二存儲(chǔ)區(qū)中等待執(zhí)行的系統(tǒng)任務(wù)程序?yàn)樘囟ㄈ蝿?wù)程序。
3.如權(quán)利要求1所述的芯片,其特征在于,所述存儲(chǔ)于只讀存儲(chǔ)器中的啟動(dòng)程序,在將系統(tǒng)內(nèi)核程序復(fù)制到所述第一存儲(chǔ)區(qū)后,再將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)通用任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第一存儲(chǔ)區(qū)中等待執(zhí)行;由系統(tǒng)內(nèi)核程序復(fù)制到第二存儲(chǔ)區(qū)中等待執(zhí)行的系統(tǒng)任務(wù)程序?yàn)樘囟ㄈ蝿?wù)程序。
4.如權(quán)利要求1所述的芯片,其特征在于,所述復(fù)制到第一存儲(chǔ)區(qū)中的操作系統(tǒng)內(nèi)核程序在控制任務(wù)切換時(shí),如果需要運(yùn)行的高優(yōu)先級(jí)任務(wù)不在所述第一與第二存儲(chǔ)區(qū)中,則通過(guò)所述非易失型存儲(chǔ)器接口,將存儲(chǔ)于非易失型存儲(chǔ)器中的高優(yōu)先級(jí)任務(wù)復(fù)制到所述第二存儲(chǔ)區(qū)中等待執(zhí)行。
5.如權(quán)利要求1所述的芯片,其特征在于,所述非易失型存儲(chǔ)器為NAND FLASH存儲(chǔ)器。
6.如權(quán)利要求1所述的芯片,其特征在于,所述隨機(jī)存儲(chǔ)器還包括系統(tǒng)專用數(shù)據(jù)區(qū),用于存儲(chǔ)系統(tǒng)數(shù)據(jù)。
7.如權(quán)利要求1所述的芯片,其特征在于,進(jìn)一步包括直接存儲(chǔ)訪問(wèn)控制器,通過(guò)地址總線與數(shù)據(jù)總線,與CPU和非易失型存儲(chǔ)器接口相連,用于控制從非易失型存儲(chǔ)器向所述第一存儲(chǔ)區(qū)與第二存儲(chǔ)區(qū)復(fù)制程序。
8.一種對(duì)嵌入式系統(tǒng)的程序空間進(jìn)行擴(kuò)展的方法,其特征在于,包括如下步驟(1)在嵌入式系統(tǒng)芯片中設(shè)置非易失型存儲(chǔ)器接口,并通過(guò)地址總線與數(shù)據(jù)總線,和芯片內(nèi)部集成的CPU、只讀存儲(chǔ)器與隨機(jī)存儲(chǔ)器相連;(2)將隨機(jī)存儲(chǔ)器的存儲(chǔ)空間劃分為第一存儲(chǔ)區(qū)與第二存儲(chǔ)區(qū);(3)將非易失型存儲(chǔ)器通過(guò)所述非易失型存儲(chǔ)器接口與所述嵌入式系統(tǒng)芯片相連;(4)將啟動(dòng)程序存儲(chǔ)于所述只讀存儲(chǔ)器中,將操作系統(tǒng)內(nèi)核程序與系統(tǒng)任務(wù)程序存儲(chǔ)于所述非易失型存儲(chǔ)器中的不同區(qū)間;(5)所述存儲(chǔ)于只讀存儲(chǔ)器中的啟動(dòng)程序在系統(tǒng)上電時(shí)執(zhí)行,通過(guò)所述非易失型存儲(chǔ)器接口,將存儲(chǔ)于非易失型存儲(chǔ)器中的操作系統(tǒng)內(nèi)核程序復(fù)制到所述第一存儲(chǔ)區(qū),同時(shí)切換所述第一存儲(chǔ)區(qū)為程序區(qū),然后跳轉(zhuǎn)到所述第一存儲(chǔ)區(qū)執(zhí)行系統(tǒng)內(nèi)核程序;(6)所述操作系統(tǒng)內(nèi)核程序執(zhí)行后,根據(jù)任務(wù)調(diào)度優(yōu)先級(jí),將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第二存儲(chǔ)區(qū)中等待執(zhí)行。
9.如權(quán)利要求8所述的方法,其特征在于所述步驟(4),進(jìn)一步將系統(tǒng)通用任務(wù)程序也存儲(chǔ)于所述非易失型存儲(chǔ)器的特定區(qū)間;所述步驟(6),復(fù)制到第一存儲(chǔ)區(qū)中的操作系統(tǒng)內(nèi)核程序執(zhí)行后,將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)通用任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第一存儲(chǔ)區(qū)中等待執(zhí)行;由操作系統(tǒng)內(nèi)核程序復(fù)制到第二存儲(chǔ)區(qū)中等待執(zhí)行的系統(tǒng)任務(wù)程序?yàn)樘囟ㄈ蝿?wù)程序。
10.如權(quán)利要求8所述的方法,其特征在于所述步驟(4),進(jìn)一步將系統(tǒng)通用任務(wù)程序也存儲(chǔ)于所述非易失型存儲(chǔ)器的特定區(qū)間;所述步驟(5),存儲(chǔ)于只讀存儲(chǔ)器中的啟動(dòng)程序,在將操作系統(tǒng)內(nèi)核程序復(fù)制到所述第一存儲(chǔ)區(qū)后,再將存儲(chǔ)于非易失型存儲(chǔ)器中的系統(tǒng)通用任務(wù)程序,通過(guò)所述非易失型存儲(chǔ)器接口,復(fù)制到所述第一存儲(chǔ)區(qū)中等待執(zhí)行;在步驟(6)中,由操作系統(tǒng)內(nèi)核程序復(fù)制到第二存儲(chǔ)區(qū)中等待執(zhí)行的系統(tǒng)任務(wù)程序?yàn)樘囟ㄈ蝿?wù)程序。
11.如權(quán)利要求8所述的方法,其特征在于,進(jìn)一步包括步驟(7)所述復(fù)制到第一存儲(chǔ)區(qū)中的操作系統(tǒng)內(nèi)核程序在控制任務(wù)切換時(shí),如果需要運(yùn)行的高優(yōu)先級(jí)任務(wù)不在所述第一與第二存儲(chǔ)區(qū)中,則通過(guò)所述非易失型存儲(chǔ)器接口,將存儲(chǔ)于非易失型存儲(chǔ)器中的高優(yōu)先級(jí)任務(wù)復(fù)制到所述第二存儲(chǔ)區(qū)中等待執(zhí)行。
12.如權(quán)利要求8所述的方法,其特征在于,所述非易失型存儲(chǔ)器為NAND FLASH存儲(chǔ)器。
13.如權(quán)利要求8所述的方法,其特征在于,所述步驟(2),進(jìn)一步將隨機(jī)存儲(chǔ)器的存儲(chǔ)空間劃分出系統(tǒng)專用數(shù)據(jù)區(qū),用于存儲(chǔ)系統(tǒng)數(shù)據(jù)。
14.如權(quán)利要求8所述的方法,其特征在于,所述步驟(5)與步驟(6)中的程序復(fù)制過(guò)程,是在芯片內(nèi)部集成的直接存儲(chǔ)訪問(wèn)控制器的控制下進(jìn)行的。
15.如權(quán)利要求8所述的方法,其特征在于,所述步驟(4),存儲(chǔ)于非易失型存儲(chǔ)器中的程序,在編譯時(shí),對(duì)需要在芯片內(nèi)部的相同存儲(chǔ)區(qū)運(yùn)行的程序,其對(duì)應(yīng)編譯地址相同。
16.如權(quán)利要求11所述的方法,其特征在于,所述步驟(7),操作系統(tǒng)內(nèi)核程序在控制任務(wù)切換時(shí),保留優(yōu)先級(jí)在一定范圍之內(nèi)的任務(wù)在第二存儲(chǔ)區(qū)中運(yùn)行,通過(guò)任務(wù)的優(yōu)先級(jí)作為任務(wù)程序是否需要在第二存儲(chǔ)區(qū)中運(yùn)行的標(biāo)志;在任務(wù)切換過(guò)程中,利用任務(wù)程序的優(yōu)先級(jí)判斷待運(yùn)行的任務(wù)的運(yùn)行空間是否應(yīng)該在第二存儲(chǔ)區(qū)中;如果否,則直接完成任務(wù)切換,運(yùn)行更高優(yōu)先級(jí)任務(wù);如果應(yīng)該在第二存儲(chǔ)區(qū)中運(yùn)行,則從非易失型存儲(chǔ)器中復(fù)制高優(yōu)先級(jí)任務(wù)程序到第二存儲(chǔ)區(qū)中,然后運(yùn)行第二存儲(chǔ)區(qū)中的該任務(wù)程序。
全文摘要
本發(fā)明公開(kāi)了一種嵌入式芯片及其程序空間擴(kuò)展的方法,通過(guò)修改8位/16位單片機(jī)的讀、寫(xiě)控制方式,進(jìn)行了軟、硬件的特殊設(shè)計(jì),使得芯片系統(tǒng)既可以利用隨機(jī)存儲(chǔ)器作為系統(tǒng)的程序存儲(chǔ)器,又可以作為系統(tǒng)的數(shù)據(jù)存儲(chǔ)器,做到了程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器的復(fù)用;通過(guò)對(duì)系統(tǒng)任務(wù)切換機(jī)制的進(jìn)行設(shè)置,使系統(tǒng)可以實(shí)現(xiàn)在任務(wù)切換時(shí)從NAND FLASH中實(shí)時(shí)拷貝程序代碼功能,以擴(kuò)展系統(tǒng)程序空間。本發(fā)明既擴(kuò)展了系統(tǒng)的程序空間,又降低了系統(tǒng)的成本。
文檔編號(hào)G06F9/46GK1801092SQ200610001348
公開(kāi)日2006年7月12日 申請(qǐng)日期2006年1月19日 優(yōu)先權(quán)日2006年1月19日
發(fā)明者牛同斌, 謝律 申請(qǐng)人:北京中星微電子有限公司