欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用引導(dǎo)代碼引導(dǎo)微處理器系統(tǒng)的方法和裝置的制作方法

文檔序號:6557410閱讀:198來源:國知局
專利名稱:使用引導(dǎo)代碼引導(dǎo)微處理器系統(tǒng)的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種利用存儲引導(dǎo)代碼的閃存設(shè)備來引導(dǎo)微處理器系統(tǒng)的方法和裝置,尤其涉及一種利用包括具有隨機(jī)存取接口的RAM緩沖器的串行(例如,NAND)閃存設(shè)備來引導(dǎo)微處理器系統(tǒng)的方法和裝置。
背景技術(shù)
當(dāng)接通移動計(jì)算設(shè)備時(shí),該移動計(jì)算設(shè)備諸如移動電話、個人數(shù)子助理(PDA)、便攜式多媒體播放器(PMP)或膝上電腦、或諸如臺式機(jī)的通用計(jì)算設(shè)備,就開始引導(dǎo)處理。在引導(dǎo)處理中,初始化內(nèi)部元件(例如,寄存器、RAM),并且將存儲在非易失性存儲設(shè)備(例如,硬盤驅(qū)動器、HDD)中的例如是操作系統(tǒng)(OS)程序的應(yīng)用代碼傳送(裝載、復(fù)制)到主處理器存儲器(隨機(jī)存取存儲器、RAM)以便由所述微處理器執(zhí)行。
過去,提供只讀存儲器(ROM)作為用于存儲包括用來引導(dǎo)系統(tǒng)的例程的引導(dǎo)代碼(例如,BIOS,基本輸入/輸出系統(tǒng))的存儲設(shè)備。BIOS的主要功能是準(zhǔn)備機(jī)器以便存儲在各種介質(zhì)(諸如硬盤驅(qū)動器、軟盤和CD)上的其它軟件程序可以裝載、執(zhí)行,并確保計(jì)算機(jī)的控制。這種處理公知為“啟動(booting up)”?;蛘?,為了方便引導(dǎo)代碼的更新,提供可擦可編程只讀存儲器(EPROM)作為用于存儲引導(dǎo)代碼的存儲設(shè)備。最近,能夠?qū)懞碗姴脸龜?shù)據(jù)的半導(dǎo)體和其它固態(tài)存儲設(shè)備被用來存儲引導(dǎo)系統(tǒng)的可執(zhí)行代碼。例如,使用了電可擦可編程只讀存儲器(EEPROM)、NOR閃存、劃分位線NOR(DINOR)閃存(其具有NOR閃存的修改結(jié)構(gòu))、NAND閃存和/或AND閃存。用于閃存設(shè)計(jì)的四種主要結(jié)構(gòu)是NOR、NAND、AND和DINOR。
所述EEPROM、NOR閃存和DINOR閃存是相似的,因?yàn)樗鼈兊拿總€都為每個位線提供接觸電極(contact electrode),并且每個單元連接到位線,因此EEPROM、NOR閃存和DINOR閃存可不管數(shù)據(jù)存儲在所述單元中的順序而讀取或?qū)懭肴我獾牡刂窋?shù)據(jù)(存儲器的隨機(jī)存取)。諸如單元是并行地排列在位線和地線之間的EEPROM、NOR閃存或DINOR閃存的非易失性半導(dǎo)體設(shè)備可稱為并行閃存。
另一方面,單元是串行地連接在位線和地線之間的NAND閃存或AND閃存可稱為串行閃存。所述串行閃存的集成度(電路密集度)可以高于并行閃存的集成度。NAND閃存設(shè)備的功效是由于所述NAND單元串中的金屬觸點(diǎn)的缺乏。由于NOR單元需要用于每個單元的獨(dú)立金屬觸點(diǎn),因此NAND閃存單元的大小小于NOR閃存單元的大小。盡管集成度(電路密度)高,但所述串行(例如,NAND)閃存具有不能字節(jié)單元操作(單個字節(jié)的隨機(jī)存取)的局限性。因此,通常使用并行閃存作為代碼執(zhí)行設(shè)備,并且通常使用串行閃存作為數(shù)據(jù)存儲設(shè)備。通常,NAND閃存的優(yōu)點(diǎn)在于快寫(編程)和擦除操作,而NOR閃存的優(yōu)點(diǎn)在于能夠隨機(jī)存取和字節(jié)寫入。NOR閃存的隨機(jī)存取性能允許其中存儲的代碼的片內(nèi)執(zhí)行(execution in place(XiP)),其在嵌入的應(yīng)用中是經(jīng)常需要的。
圖1和圖2是圖解說明常規(guī)引導(dǎo)系統(tǒng)的框圖。圖1示出了利用并行(NOR)閃存的常規(guī)引導(dǎo)系統(tǒng),以及圖2示出了利用串行(NAND)閃存的常規(guī)引導(dǎo)系統(tǒng)。
參見圖1,當(dāng)開啟系統(tǒng)的電源時(shí),通過系統(tǒng)總線11將OS引導(dǎo)代碼從NOR閃存12傳送(裝載、復(fù)制)到主控制器(微處理器)10。主控制器10利用在并行(NOR)閃存中存儲的單獨(dú)的字節(jié)的隨機(jī)存取、根據(jù)OS引導(dǎo)代碼中的例程來執(zhí)行引導(dǎo)處理,并且因此可以不需要具有將OS圖像裝載到主存儲器的例程的引導(dǎo)裝載程序。引導(dǎo)處理所需要的OS圖像可以包括在OS引導(dǎo)代碼中以提供給所述主控制器10。此外,所述OS圖像也可以存儲在諸如硬盤驅(qū)動器的非易失性存儲設(shè)備中。主控制器10根據(jù)OS引導(dǎo)代碼中的例程來執(zhí)行將OS圖像裝載到主存儲器13中。
參見圖2,當(dāng)開啟系統(tǒng)時(shí),主控制器(微處理器)20執(zhí)行引導(dǎo)ROM 23中存儲的引導(dǎo)裝載程序的讀取。在串行(NAND)閃存中不可能進(jìn)行代碼的單獨(dú)的字節(jié)的隨機(jī)存取或片內(nèi)執(zhí)行(XiP),因此需要具有用來將OS圖像裝載到主存儲器的例程的引導(dǎo)裝載程序。根據(jù)從引導(dǎo)ROM 23中復(fù)制的引導(dǎo)裝載程序的例程,主控制器20執(zhí)行將存儲在NAND閃存25中的OS圖像裝載到主存儲器21中。OS圖像被裝載到主存儲器21。NAND快閃控制器24執(zhí)行將從系統(tǒng)總線22接收到的命令和數(shù)據(jù)傳送到NAND閃存25,并提供從NAND閃存25傳送的數(shù)據(jù)到所述系統(tǒng)總線22。
一些引導(dǎo)系統(tǒng)在內(nèi)部ROM中包括OS引導(dǎo)代碼或引導(dǎo)裝載程序,而其它引導(dǎo)系統(tǒng)從微處理器的外部設(shè)備,也就是存儲器的主控制器獲得OS引導(dǎo)代碼或引導(dǎo)裝載程序。
圖3是圖解說明常規(guī)引導(dǎo)系統(tǒng)的框圖。
參見圖3,引導(dǎo)系統(tǒng)包括微處理器30,NAND閃存控制器40,NAND閃存45,和主存儲器50。
微處理器30包括中央處理器單元(CP)內(nèi)核31,存儲引導(dǎo)裝載程序的內(nèi)部ROM 32,內(nèi)部RAM 33和接口35。
當(dāng)接通電源時(shí),CPU內(nèi)核31通過所述內(nèi)部總線34存取內(nèi)部ROM 32,以便執(zhí)行存儲在所述內(nèi)部ROM 32中的引導(dǎo)裝載程序。根據(jù)(通過執(zhí)行)引導(dǎo)裝載程序的例程,微處理器30將存儲在NAND閃存45中的OS圖像復(fù)制(裝載)到主存儲器50。NAND快閃控制器40利用系統(tǒng)總線60可操作地連接(接口連接)到NAND閃存45。
包括在微處理器30中的ROM 33一般存儲初始化CPU內(nèi)核的子系統(tǒng)的初始化代碼、用于引導(dǎo)系統(tǒng)的代碼、以及從閃存下載應(yīng)用代碼的監(jiān)視程序代碼,等等。由于用于引導(dǎo)所述系統(tǒng)的代碼(引導(dǎo)代碼)是存儲在內(nèi)部ROM中,因此引導(dǎo)系統(tǒng)可安全地免受黑客攻擊或其它可能從OS圖像的更新處理中產(chǎn)生的錯誤。此外,引導(dǎo)系統(tǒng)的開發(fā)者可通過將機(jī)密庫模塊包括在內(nèi)部ROM中來保護(hù)所有權(quán)(例如,商業(yè)秘密)代碼或信息。
近來,利用存儲在內(nèi)部ROM中的引導(dǎo)代碼,NOR閃存和NAND閃存都已經(jīng)作為微處理器的外部存儲設(shè)備(如硬盤驅(qū)動器)來使用,以便對在引導(dǎo)系統(tǒng)中進(jìn)行引導(dǎo)所必要的應(yīng)用代碼進(jìn)行存儲。
NOR閃存支持存儲代碼的隨機(jī)存取,但所述NOR閃存的價(jià)格高。由于容納更大大小的應(yīng)用代碼的計(jì)算設(shè)備不斷地被開發(fā),因此由于用來存儲大應(yīng)用代碼的大NOR閃存的價(jià)格高而使計(jì)算設(shè)備的價(jià)格也升高。
NAND閃存的價(jià)格一般低于NOR閃存的價(jià)格,但常規(guī)的NAND閃存不能支持對存儲在其中的數(shù)據(jù)(例如,可執(zhí)行代碼)的隨機(jī)存取。因此,在引導(dǎo)系統(tǒng)使用NAND閃存的情況下,引導(dǎo)代碼可存儲在如圖3示出的內(nèi)部ROM32中、或者如圖2示出的外部ROM 23中,所以可將存儲在所述NAND閃存中的應(yīng)用代碼傳送到用于隨機(jī)存取執(zhí)行的主存儲器(例如,片內(nèi)執(zhí)行)。當(dāng)引導(dǎo)代碼存儲在內(nèi)部ROM(如圖3示出的32)中時(shí),包括內(nèi)部ROM 32的微處理器可以取決于NAND閃存的確切結(jié)構(gòu),因此微處理器的靈活性降低。從而,需要一種在確保微處理器的靈活性的同時(shí)利用諸如NAND閃存的相對便宜的串行閃存來引導(dǎo)微處理器系統(tǒng)(例如,包括內(nèi)部ROM的微處理器系統(tǒng))的方法。

發(fā)明內(nèi)容
本發(fā)明的示例性實(shí)施例提供了一種在確保微處理器靈活性的同時(shí)利用便宜的閃存設(shè)備(例如,NAND閃存)來引導(dǎo)系統(tǒng)的方法,以及利用快閃存儲設(shè)備中存儲的引導(dǎo)代碼的引導(dǎo)系統(tǒng)。
本發(fā)明的示例性實(shí)施例提供一種用于引導(dǎo)系統(tǒng)、具有隨機(jī)存取(例如,并行快閃類型)接口的快閃存儲設(shè)備(例如,包括NAND閃存陣列)。本發(fā)明的其它實(shí)施例提供一種用于存儲引導(dǎo)代碼并用于引導(dǎo)系統(tǒng)的微處理器系統(tǒng),其利用具有隨機(jī)存取接口的便宜的串行閃存(例如,NAND閃存)。本發(fā)明的示例性實(shí)施例也提供一種在利用引導(dǎo)系統(tǒng)的便宜的串行閃存(例如,NAND閃存)的微處理器系統(tǒng)中更新引導(dǎo)代碼的方法。
本發(fā)明的第一方面提供一種利用通信耦合到具有隨機(jī)存取接口的RAM緩沖器的串行閃存陣列來引導(dǎo)微處理器系統(tǒng)的方法。所述方法包括根據(jù)微處理器的ROM(例如,微處理器的內(nèi)部ROM)的例程來執(zhí)行引導(dǎo)代碼裝載程序(其在電源接通時(shí)已經(jīng)從所述串行閃存裝載到RAM緩沖器中);根據(jù)(通過執(zhí)行)引導(dǎo)代碼裝載程序,將存儲在串行閃存陣列中的引導(dǎo)代碼傳送到微處理器中的內(nèi)部RAM;根據(jù)(通過執(zhí)行)所述引導(dǎo)代碼,將存儲在所述串行閃存陣列中的應(yīng)用代碼傳送到主存儲器中;以及執(zhí)行所述應(yīng)用代碼。
所述方法還包括根據(jù)(通過執(zhí)行)內(nèi)部ROM的例程來確定用于更新所述串行閃存設(shè)備的線纜是否連接到所述微處理器系統(tǒng);以及如果所述線纜沒有被連接,則跳轉(zhuǎn)執(zhí)行到引導(dǎo)代碼裝載程序(其是裝載到RAM緩沖器中的)。當(dāng)所述線纜被連接時(shí),所述引導(dǎo)代碼裝載程序的執(zhí)行還包括更新存儲在所述串行閃存陣列中的內(nèi)容(例如,引導(dǎo)代碼、應(yīng)用代碼和用戶數(shù)據(jù))。所述方法(例如,在所述引導(dǎo)代碼裝載程序的執(zhí)行之內(nèi))還可以包括在確定所述線纜是否被連接之前,當(dāng)系統(tǒng)重置時(shí)(例如,當(dāng)電源接通時(shí))從裝載到所述RAM緩沖器(引導(dǎo)RAM)中的快閃配置表(FCT)接收配置信息(例如,用于引導(dǎo)所必要的非可執(zhí)行信息)。
將存儲在所述串行閃存中的應(yīng)用代碼傳送(裝載、復(fù)制)到主存儲器可以包括初始化主存儲器并且然后將應(yīng)用代碼裝載(例如,復(fù)制)到所述主存儲器。
在本發(fā)明的示例性實(shí)施例中,微處理器引導(dǎo)系統(tǒng)包括具有內(nèi)部ROM和內(nèi)部RAM的微處理器;主存儲器(例如,外部RAM);以及配置來存儲應(yīng)用代碼、引導(dǎo)代碼和引導(dǎo)代碼裝載程序的閃存設(shè)備(例如,串行、NAND存儲器陣列)包括RAM緩沖器和配置來在開啟電源時(shí)將引導(dǎo)代碼裝載程序裝載到所述RAM緩沖器的有限狀態(tài)機(jī),其中所述微處理器被配置為根據(jù)內(nèi)部ROM的例程(通過執(zhí)行例程中的“跳轉(zhuǎn)”指令)來執(zhí)行引導(dǎo)代碼裝載程序(在RAM緩沖器中),以根據(jù)(通過執(zhí)行)所述引導(dǎo)代碼裝載程序的例程將所述引導(dǎo)代碼傳送到(微處理器的)內(nèi)部RAM,并根據(jù)(通過執(zhí)行)引導(dǎo)代碼裝載程序的例程將應(yīng)用代碼傳送到所述主存儲器,并且然后執(zhí)行所述應(yīng)用代碼。
所述內(nèi)部ROM的例程(存儲在內(nèi)部ROM中的可執(zhí)行代碼)可包括確定用于更新所述閃存設(shè)備的線纜是否被連接的確定程序;和當(dāng)所述(更新)線纜沒有被連接時(shí)跳轉(zhuǎn)程序執(zhí)行到所述引導(dǎo)代碼裝載程序(其已經(jīng)裝載到RAM緩沖器中)的跳轉(zhuǎn)程序。內(nèi)部ROM的例程(存儲在內(nèi)部ROM的可執(zhí)行代碼)還包括當(dāng)連接了(更新)線纜時(shí)更新存儲在閃存設(shè)備中的內(nèi)容(例如,引導(dǎo)代碼裝載程序、引導(dǎo)代碼,應(yīng)用數(shù)據(jù),和快閃配置表)的更新程序。
所述引導(dǎo)代碼的例程(其中的可執(zhí)行代碼)可包括初始化主存儲器的初始化程序;和將應(yīng)用代碼(來自串行,例如,NAND存儲器陣列)裝載(例如,復(fù)制)到主存儲器中的裝載(例如,復(fù)制)程序。
有限狀態(tài)機(jī)在電源接通時(shí)可自動地將快閃配置表(FCT)(在串行例如NAND存儲器陣列中存儲的)裝載(復(fù)制)到RAM緩沖器中,并且所述(內(nèi)部)ROM的例程(其中的可執(zhí)行代碼)還包括程序,用于在確定線纜是否被連接之前接收裝載在(存儲在)RAM緩沖器中的FCT中的信息(例如從特定閃存設(shè)備接收用于引導(dǎo)的必要信息)。
在本發(fā)明的示例性實(shí)施例中,用于引導(dǎo)系統(tǒng)的串行閃存設(shè)備包括串行閃存,其被配置來存儲應(yīng)用代碼、具有將所述應(yīng)用代碼傳送到主存儲器的例程的引導(dǎo)代碼和具有將所述引導(dǎo)代碼傳送到微處理器中的內(nèi)部緩沖器的例程的引導(dǎo)代碼裝載程序,及具有;RAM緩沖器;以及有限狀態(tài)機(jī),其被配置來在電源接通時(shí)將所述引導(dǎo)代碼裝載程序裝載到所述RAM緩沖器,其中當(dāng)執(zhí)行裝載到所述RAM緩沖器中的所述引導(dǎo)代碼裝載程序時(shí),根據(jù)所述引導(dǎo)代碼裝載程序的例程來將所述引導(dǎo)代碼傳送到微處理器中的內(nèi)部緩沖器,以及當(dāng)執(zhí)行傳送到微處理器中的內(nèi)部緩沖器的引導(dǎo)代碼時(shí),根據(jù)引導(dǎo)代碼的例程將應(yīng)用代碼傳送到主存儲器。
所述引導(dǎo)代碼的例程可以包括初始化主存儲器的初始化程序;和將應(yīng)用代碼裝載(例如,復(fù)制)到主存儲器的裝載(例如,復(fù)制)程序。
在本發(fā)明的示例性實(shí)施例中,使用具有并行快閃接口的串行閃存設(shè)備來引導(dǎo)系統(tǒng)的方法包括根據(jù)微處理器中的內(nèi)部ROM的例程,在電源接通時(shí)執(zhí)行裝載到RAM緩沖器中的引導(dǎo)代碼;根據(jù)所述引導(dǎo)代碼將存儲在所述串行閃存設(shè)備中的應(yīng)用代碼傳送到主存儲器;以及執(zhí)行所述應(yīng)用代碼。
引導(dǎo)代碼的執(zhí)行還包括在電源接通時(shí)從裝載到所述RAM緩沖器中的FCT接收用于引導(dǎo)所必要的信息。
應(yīng)用程序到所述主存儲器的傳送可以包括初始化所述主存儲器;并將所述應(yīng)用代碼裝載(例如,復(fù)制)到所述主存儲器。
在本發(fā)明的示例性實(shí)施例中,引導(dǎo)系統(tǒng)包括包含內(nèi)部ROM的微處理器;主存儲器;以及包含存儲應(yīng)用代碼和引導(dǎo)代碼的串行閃存的串行閃存、RAM緩沖器和當(dāng)電源接通時(shí)裝載所述引導(dǎo)代碼到所述RAM緩沖器中的有限狀態(tài)機(jī)的串行閃存設(shè)備,其中所述微處理器根據(jù)所述內(nèi)部ROM的例程執(zhí)行所述引導(dǎo)代碼,根據(jù)所述引導(dǎo)代碼的例程將所述應(yīng)用代碼傳送到所述主存儲器,并執(zhí)行所述應(yīng)用代碼。
所述內(nèi)部ROM的例程可以包括確定所述引導(dǎo)代碼是否被裝載到所述RAM緩沖器中的確定程序;和在所述引導(dǎo)代碼被裝載到所述RAM緩沖器中時(shí)跳轉(zhuǎn)到所述引導(dǎo)代碼的跳轉(zhuǎn)程序。
所述引導(dǎo)代碼的例程可以包括初始化主存儲器的初始化程序、和將所述應(yīng)用代碼裝載(例如,復(fù)制)到所述主存儲器的裝載(例如,復(fù)制)程序。
在本發(fā)明的示例性實(shí)施例中,一種利用具有并行快閃接口的串行閃存設(shè)備來引導(dǎo)系統(tǒng)的方法包括根據(jù)微處理器中的內(nèi)部ROM的例程,在電源接通時(shí)執(zhí)行裝載到RAM緩沖器中的引導(dǎo)代碼裝載程序;根據(jù)所述引導(dǎo)代碼裝載程序初始化主存儲器;根據(jù)所述引導(dǎo)代碼裝載程序?qū)⒋鎯υ诖虚W存設(shè)備中的引導(dǎo)代碼裝載(例如,復(fù)制)到所述主存儲器中;根據(jù)所述引導(dǎo)代碼裝載程序執(zhí)行引導(dǎo)代碼;根據(jù)所述引導(dǎo)代碼將存儲在串行閃存設(shè)備中的應(yīng)用代碼裝載(例如,復(fù)制)到主存儲器中;以及執(zhí)行所述應(yīng)用代碼。
所述引導(dǎo)代碼裝載程序的執(zhí)行可以包括根據(jù)內(nèi)部ROM的例程,確定用于更新所述串行閃存設(shè)備的線纜是否被連接;以及在所述線纜沒有被連接時(shí)跳轉(zhuǎn)到裝載到RAM緩沖器的引導(dǎo)代碼裝載程序。所述引導(dǎo)代碼裝載程序的執(zhí)行還包括當(dāng)連接線纜時(shí)更新所述串行閃存設(shè)備。所述引導(dǎo)代碼裝載程序的執(zhí)行還包括在確定所述線纜是否被連接之前,在開啟電源時(shí)從裝載到RAM緩沖器的FCT接收用于引導(dǎo)所必要的信息。
在本發(fā)明的示例性實(shí)施例中,引導(dǎo)系統(tǒng)包括含有內(nèi)部ROM的微處理器;主存儲器;和包括存儲應(yīng)用代碼、引導(dǎo)代碼和引導(dǎo)代碼裝載程序的串行閃存、RAM緩沖器和當(dāng)開啟電源時(shí)將所述引導(dǎo)代碼裝載程序裝載到所述RAM緩沖器的有限狀態(tài)機(jī)的串行閃存設(shè)備,其中,所述微處理器根據(jù)所述內(nèi)部ROM的例程執(zhí)行所述引導(dǎo)代碼裝載程序,根據(jù)所述引導(dǎo)裝載程序的例程將所述引導(dǎo)代碼傳送到所述主存儲器,根據(jù)所述引導(dǎo)代碼的例程將所述應(yīng)用代碼傳送到所述主存儲器,以及執(zhí)行所述應(yīng)用代碼。
所述內(nèi)部ROM的例程可以包括確定用于更新所述串行閃存設(shè)備的線纜是否被連接的確定程序;和在所述線纜沒有被連接時(shí)跳轉(zhuǎn)到裝載在所述RAM緩沖器的引導(dǎo)裝載程序的跳轉(zhuǎn)程序。所述內(nèi)部ROM的例程還可以包括當(dāng)線纜被連接時(shí)更新所述串行閃存設(shè)備的更新程序。
所述有限狀態(tài)機(jī)可在開啟電源時(shí)執(zhí)行FCT到RAM緩沖器的裝載,以及所述內(nèi)部ROM的例程還包括在確定所述線纜是否被連接之前,從裝載到所述RAM緩沖器的FCT接收用于引導(dǎo)所必要的信息。
在本發(fā)明的示例性實(shí)施例中,用于引導(dǎo)系統(tǒng)的串行閃存設(shè)備包括配置來存儲應(yīng)用代碼、具有用于將所述應(yīng)用代碼傳送到主存儲器的例程的引導(dǎo)代碼、以及具有用來將所述引導(dǎo)代碼傳送到微處理器中的內(nèi)部緩沖器的引導(dǎo)代碼裝載程序的串行閃存;RAM緩沖器;以及配置來在開啟電源時(shí)將所述引導(dǎo)代碼裝載程序裝載到所述RAM緩沖器的有限狀態(tài)機(jī),其中,當(dāng)執(zhí)行裝載到所述RAM緩沖器的引導(dǎo)代碼裝載程序時(shí),根據(jù)所述引導(dǎo)代碼裝載程序的例程將所述引導(dǎo)代碼傳送到所述主存儲器,并且在執(zhí)行所述引導(dǎo)代碼時(shí),根據(jù)所述引導(dǎo)代碼的例程將所述應(yīng)用代碼傳送到所述主存儲器。
所述引導(dǎo)代碼裝載程序的例程可包括初始化主存儲器的初始化程序;和將所述引導(dǎo)代碼裝載(例如,復(fù)制)到所述主存儲器的裝載(例如,復(fù)制)程序。
在本發(fā)明的示例性實(shí)施例中,一種更新包括串行閃存和RAM緩沖器并具有并行快閃接口的串行閃存設(shè)備的方法包括接收使確定裝載到所述RAM緩沖器的所述串行閃存設(shè)備是否有效的信息;在所述串行閃存設(shè)備無效時(shí)檢查是否連接了更新線纜;當(dāng)更新線纜被連接時(shí)將通過所述更新線纜傳送的第一更新代碼裝載到微處理器中的內(nèi)部緩沖器;并根據(jù)所述第一更新代碼的例程,編程通過所述更新線纜傳送的第一代碼到所述串行閃存中。
所述第一代碼包括應(yīng)用代碼;具有用于傳送所述應(yīng)用代碼到主存儲器的例程的引導(dǎo)代碼;具有用于傳送所述引導(dǎo)代碼到所述微處理器中的內(nèi)部緩沖器的例程的引導(dǎo)代碼裝載程序;和指示所述應(yīng)用代碼的分支地址(branchaddress)和引導(dǎo)標(biāo)記的FCT,其中所述引導(dǎo)標(biāo)記指示默認(rèn)更新線纜的類型。
所述方法還包括在所述串行閃存設(shè)備無效和沒有連接更新線纜時(shí)輸出錯誤消息。
所述方法還包括在所述串行閃存設(shè)備有效時(shí),檢查是否連接了在引導(dǎo)標(biāo)記中設(shè)置的默認(rèn)更新線纜;當(dāng)連接了所述默認(rèn)更新線纜時(shí),將通過默認(rèn)更新線纜傳送的第二更新代碼裝載到所述微處理器的內(nèi)部緩沖器中;并根據(jù)所述第二更新代碼的例程編程所述第二更新代碼到所述串行閃存中。
所述方法還包括在沒有連接默認(rèn)更新線纜時(shí),檢查是否連接了非默認(rèn)的更新線纜;當(dāng)連接了所述非默認(rèn)更新線纜時(shí),將通過所述非默認(rèn)更新線纜傳送的第三更新代碼裝載到所述微處理器的內(nèi)部緩沖器中;并根據(jù)所述第三更新代碼的例程,編程通過非默認(rèn)更新線纜傳送的第三代碼到所述串行閃存中。
因此,根據(jù)本發(fā)明的引導(dǎo)系統(tǒng)的方法可以低成本引導(dǎo)所述系統(tǒng),同時(shí)確保了微處理器的靈活性。
在此公開了本發(fā)明的詳細(xì)說明性實(shí)施例。然而,在此公開的特定結(jié)構(gòu)和功能細(xì)節(jié)只表示說明本發(fā)明的示例性實(shí)施例的目的。然而,這一發(fā)明可以許多可替換形式具體體現(xiàn)并且不應(yīng)當(dāng)局限于在此提出的實(shí)施例。
因此,本發(fā)明易于有各種修改和可替換的形式,通過附圖的示例將示出其特定實(shí)施例并將詳細(xì)描述。然而,應(yīng)當(dāng)可以理解,這并不意味限制本發(fā)明到所公開的特定形式中,恰恰相反,本發(fā)明將覆蓋落入本發(fā)明的精神和范圍內(nèi)的所有修改、等同物和替換物。在附圖的全部描述中,相同的附圖標(biāo)記表示相同的元件。
可以理解的是,盡管在此使用了術(shù)語第一、第二等來描述各種元件,然而這些元件不應(yīng)當(dāng)被這些術(shù)語限制。這些術(shù)語僅僅是用來區(qū)別一個元件和另一個元件。例如,在不偏離本發(fā)明的范圍之內(nèi),第一元件也可叫做第二元件,并且類似地,第二元件也可以叫第一元件。如在此所使用的,術(shù)語“和/或”包括一個或多個列出的相關(guān)項(xiàng)的任何一個和所有組合。
可以理解的是,當(dāng)一個元件被稱為“連接”或“耦合”到另一個元件時(shí),它可以直接連接或耦合到另一個元件或者可以存在居間元件。相反,當(dāng)一個元件被稱為“直接連接”或“直接耦合”到另一個元件時(shí),就不存在居間元件。用來描述元件之間的關(guān)系的其他詞語應(yīng)當(dāng)以相似的方式解釋(即,“之間”與“直接在...之間”相對,“臨近”與“直接臨近”相對等)。
在此使用的術(shù)語學(xué)僅僅是為了描述特定實(shí)施例的目的,并不意欲限定本發(fā)明。如在此使用的,單數(shù)形式“一(a)”、“一(an)”和“這個(the)”意指也包括復(fù)數(shù)形式,除非文章中有清楚的其他指示。還可以理解的是,當(dāng)在此使用術(shù)語“包括(comprises)”、“包括(comprising)”、“包含(includes)”和/或“包含(including)”時(shí),表明論述的特征、整數(shù)、步驟、操作、元件和/或組件的存在,并排除一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或組的存在或添加。
除非其他定義,在此使用的所有術(shù)語(包括科技術(shù)語)具有與本發(fā)明所屬的技術(shù)領(lǐng)域的普通技術(shù)人員通常理解的相同意義。還可以理解的是,諸如這些以字典中通常使用定義的術(shù)語應(yīng)當(dāng)解釋為具有與它們在相關(guān)技術(shù)環(huán)境中的意義一致的意義,并不能以主觀的或超出正式場景來解釋,除非在此有特別定義。
以下,將參考附圖對本發(fā)明進(jìn)行詳細(xì)地解釋。


通過參考附圖詳細(xì)說明本發(fā)明的示例性實(shí)施例,本發(fā)明對本領(lǐng)域的普通技術(shù)人員來講將變得更加顯而易見,其中相同的元件由相同的附圖標(biāo)記表示,及圖1、2和3是圖解說明常規(guī)引導(dǎo)系統(tǒng)的框圖;圖4是根據(jù)本發(fā)明示例性實(shí)施例的圖解說明引導(dǎo)系統(tǒng)的框圖;
圖5是圖解說明存儲在圖4和6示出的串行閃存設(shè)備200內(nèi)的內(nèi)部ROM120中的代碼的存儲器映射圖;圖6是圖解說明圖4示出的所述串行閃存設(shè)備200的示例性實(shí)現(xiàn)的詳細(xì)框圖;圖7是圖解說明更新圖4和6的串行閃存設(shè)備200的處理的流程圖;圖8是圖解說明用于更新圖4示出的串行閃存設(shè)備200的引導(dǎo)系統(tǒng)的操作的框圖和存儲器映射圖;圖9是圖解說明利用圖4示出的所述串行閃存設(shè)備200的引導(dǎo)處理的流程圖;圖10是圖解說明利用圖4示出的串行閃存設(shè)備200的可替換引導(dǎo)系統(tǒng)的操作的組合流程圖、框圖和存儲器映射圖;圖11、12和13是根據(jù)本發(fā)明示例性實(shí)施例的圖解說明引導(dǎo)系統(tǒng)的引導(dǎo)和更新處理的流程圖;圖14是圖解說明利用包括足夠大的引導(dǎo)RAM 226的圖4中的所述串行閃存設(shè)備200的引導(dǎo)處理的流程圖;圖15是圖解說明利用包括足夠大的引導(dǎo)RAM 226的圖4中的所述串行閃存設(shè)備200來引導(dǎo)微處理系統(tǒng)的可替換處理的操作的組合流程圖、框圖和存儲器映射圖;圖16是根據(jù)本發(fā)明示例性實(shí)施例的圖解說明利用圖4的串行閃存設(shè)備200的可替換引導(dǎo)處理的流程圖;圖17是根據(jù)本發(fā)明示例性實(shí)施例的圖解說明引導(dǎo)系統(tǒng)的操作的組合流程圖、框圖和存儲器映射圖。
具體實(shí)施例方式
圖4是根據(jù)本發(fā)明的示例性實(shí)施例示例的圖解說明引導(dǎo)系統(tǒng)的框圖。
參見圖4,所述引導(dǎo)系統(tǒng)可以包括微處理器100、串行閃存設(shè)備200和主存儲器300。所述微處理器100、串行閃存設(shè)備200和主存儲器300可以通過外部總線400傳送和接收數(shù)據(jù)和控制信號。
所述微處理器100可以包括中央處理單元(CPU)內(nèi)核110、內(nèi)部只讀存儲器(ROM)120、內(nèi)部隨機(jī)存取存儲器(RAM)130和接口150。此外,所述微處理器100還包括連接所述CPU內(nèi)核110、內(nèi)部ROM 120和內(nèi)部RAM130的內(nèi)部總線140。所述微處理器100可實(shí)現(xiàn)為片上系統(tǒng)(SOC)。
所述CPU內(nèi)核110可提供用于控制所述引導(dǎo)系統(tǒng)的指令,并執(zhí)行用于引導(dǎo)所述系統(tǒng)的數(shù)據(jù)處理??蓪dvanced RISC Machine(ARM)內(nèi)核(core)用作CPU內(nèi)核110。
所述內(nèi)部ROM 120可包括用于初始化所述微處理器100的代碼、用于監(jiān)視所述系統(tǒng)的引導(dǎo)的代碼等等。將參考圖3來詳細(xì)地描述所述內(nèi)部ROM 120。
所述內(nèi)部RAM 130可對應(yīng)于微處理器100的內(nèi)部緩沖器,并具有高的存取速度。
所述串行閃存設(shè)備200可以包括用于引導(dǎo)所必要的代碼和具有并行快閃接口。在優(yōu)選實(shí)施例中,可使用來自Samsung Electronics Co.Ltd.的OneNANDTM閃存設(shè)備來實(shí)現(xiàn)所述串行閃存設(shè)備200。OneNAND閃存設(shè)備具有并行接口(與圖6中的NOR快閃接口210類似)并包括NAND快閃陣列(圖6中的NAND閃存單元260的陣列)。OneNAND閃存設(shè)備包括RAM緩沖器(圖6中的220,例如,由靜態(tài)隨機(jī)存取存儲器(SRAM)形成)以便支持所述并行(NOR)接口。所述串行閃存設(shè)備200(例如,OneNAND存儲器設(shè)備)可實(shí)現(xiàn)為包括與NAND快閃陣列集成的標(biāo)準(zhǔn)并行(NOR)快閃接口的單一晶粒(single-die)芯片。所述串行閃存設(shè)備200(例如,OneNAND存儲器設(shè)備)可以包括接口邏輯和NAND快閃陣列和內(nèi)部緩沖器RAM(圖6中的220)。所述緩沖器RAM可包括為引導(dǎo)代碼保留的專用引導(dǎo)RAM(圖6中的222)部分,以及用于緩沖數(shù)據(jù)的專用數(shù)據(jù)RAM(圖6中的221)部分。所述內(nèi)部操作時(shí)鐘(未圖示)的頻率可超過54MHz。OneNAND存儲器設(shè)備對于主機(jī)(100)可具有a×16個并行接口,并具有~76ns隨機(jī)存取時(shí)間的實(shí)際速度(achieved speed),并提供可編程讀取等待時(shí)間。OneNAND存儲器設(shè)備通過在扇區(qū)計(jì)數(shù)寄存器中分配將要被讀取的扇區(qū)數(shù)量(圖6的內(nèi)部寄存器單元240中)來提供多扇區(qū)讀取操作。圖6示出的OneNAND存儲器設(shè)備包括一個(塊大小的(block-sized))OTP(一次性可編程(one time programmable))(圖6的270),其可用來提高系統(tǒng)安全性或提供產(chǎn)品識別能力。
所述主存儲器300可存儲諸如由微處理器(主機(jī))100執(zhí)行的操作系統(tǒng)(OS)程序和應(yīng)用程序、數(shù)據(jù)和指令的各種類型的應(yīng)用代碼。動態(tài)隨機(jī)存取存儲器(DRAM)可用作所述主存儲器300?;蛘撸茈S機(jī)存取的其它存儲設(shè)備或SRAM也可用作主存儲器300。
圖5是圖解說明存儲在圖6的所述串行閃存設(shè)備200內(nèi)的內(nèi)部ROM中的代碼的存儲器映射圖。
所述內(nèi)部ROM 120可以存儲初始化代碼121、主初始代碼122、監(jiān)視代碼123和至少一個通信驅(qū)動程序,諸如通用串行總線(USB)驅(qū)動程序124、通用異步收發(fā)機(jī)(UART)驅(qū)動程序125和直接存儲器存取控制(DMAC)驅(qū)動程序126。
所述初始化代碼121可應(yīng)用來初始化所述CPU內(nèi)核的子系統(tǒng)。例如,當(dāng)開啟電源時(shí),所述初始化代碼121可初始化用于執(zhí)行存儲在所述內(nèi)部ROM中的其他代碼的子系統(tǒng)。
所述主初始代碼122可被應(yīng)用在微處理器的初始化之后控制系統(tǒng)的引導(dǎo)程序順序。例如,可將所述主初始代碼122編程來確定是否連接了用于下載程序的線纜。如果用于下載程序的線纜被連接,則可將所述主初始代碼122編程來強(qiáng)制監(jiān)視程序以執(zhí)行程序的下載,并在所述用于下載程序的線纜沒被連接的情況下立即執(zhí)行引導(dǎo)。
所述內(nèi)部監(jiān)視代碼123可具有用于更新并行閃存設(shè)備的例程并執(zhí)行引導(dǎo)所述系統(tǒng)的初始處理。
所述USB驅(qū)動程序124可執(zhí)行USB通信,而所述UART驅(qū)動程序125可執(zhí)行UART通信。所述直接存儲器存取(DMAC)驅(qū)動程序126可與UART驅(qū)動程序125一起運(yùn)行,從而提高傳送數(shù)據(jù)到目標(biāo)存儲器的速度。
圖6是圖解說明圖4示出的串行閃存設(shè)備200的示例性實(shí)現(xiàn)的框圖。
所述串行閃存設(shè)備200最好包括并行接口(用作主機(jī)接口210),例如,NOR快閃接口。所述串行閃存設(shè)備200包括主機(jī)接口210、緩沖器RAM 220、有限狀態(tài)機(jī)230、內(nèi)部寄存器單元240、糾錯邏輯(ECC)單元250、NAND快閃陣列260。所述串行閃存設(shè)備200可還包括一次性可編程(OTP)單元270。在優(yōu)選實(shí)施例中,所述串行閃存設(shè)備200可以由OneNAND閃存來實(shí)現(xiàn),其包括可操作地連接到并行(NOR快閃)接口的NAND快閃陣列。
所述主機(jī)接口210可實(shí)現(xiàn)為并行(NOR快閃)接口。例如,所述主機(jī)接口210可包括各種管腳(pin),諸如數(shù)據(jù)管腳DQ0到DQ15、地址管腳A0到A15、時(shí)鐘管腳CLK、芯片使能管腳/CE、輸入使能管腳/OE、寫使能管腳/WE、復(fù)位管腳/RP、地址有效性檢查管腳/AVD和/或中斷管腳INT。
所述緩沖器RAM 220可用作所述串行閃存設(shè)備200的內(nèi)部隨機(jī)存取存儲器緩沖器,并可包括專用引導(dǎo)RAM部分,其存儲在電源接通時(shí)被存儲在所述NAND快閃陣列260中的引導(dǎo)代碼裝載程序和存儲快閃(配置)表格(FCT),以及包括在數(shù)據(jù)輸出時(shí)用作高速緩沖存儲器的數(shù)據(jù)RAM部分。
有限狀態(tài)機(jī)230在電源接通之后控制所述串行閃存設(shè)備200的操作。所述有限狀態(tài)機(jī)230可執(zhí)行數(shù)據(jù)裝載例程,其中在電源接通時(shí),所述數(shù)據(jù)裝載例程執(zhí)行將包括所述快閃配置表(FCT)和引導(dǎo)代碼裝載程序的NAND快閃陣列260中的部分?jǐn)?shù)據(jù)(例如,存儲在塊0中的1KB)裝載(例如,復(fù)制)到所述串行閃存設(shè)備200的緩沖器RAM 220。所述有限狀態(tài)機(jī)230可通過內(nèi)部傳統(tǒng)的NAND快閃接口(未圖示)來與NAND快閃陣列260通信。有限狀態(tài)機(jī)是一種設(shè)備或設(shè)備的塊,其具有有限數(shù)量的狀態(tài),并且其能夠始終處于輸入狀態(tài)(it can ever be in input)并可以對輸入進(jìn)行操作以使之從一種狀態(tài)轉(zhuǎn)移到另一種狀態(tài)或促使發(fā)生輸出或動作。有限狀態(tài)機(jī)在任何時(shí)刻只能處于一種狀態(tài)。有限狀態(tài)機(jī)(FSM)可通過可編程邏輯陣列(PLA)、或可編程微處理器(在本領(lǐng)域中眾所周知以一組用于微處理器的指令來實(shí)現(xiàn)FSM)、或通過各種其他數(shù)字電路或機(jī)械設(shè)備來實(shí)現(xiàn)。
所述內(nèi)部寄存器單元240可包括地址寄存器、命令寄存器、配置寄存器、狀態(tài)寄存器等。
所述糾錯(ECC)邏輯250可在所述NAND快閃陣列260中發(fā)生錯誤塊時(shí)糾正錯誤塊(用備用塊替換所述錯誤塊),并檢查所述NAND快閃陣列260的狀態(tài)。
所述NAND快閃陣列260可以包括多個具有傳統(tǒng)的串行(例如,NAND)閃存結(jié)構(gòu)的塊。
所述OTP單元270可以僅被編程一次,從而對于輸入安全或產(chǎn)品單元識別是可用的。
可以理解的是,所述串行閃存設(shè)備200可替換地通過省略上述描述的一個或多個元件,或組合上述描述的兩個或更多元件來實(shí)現(xiàn)。此外,也可以理解所述串行閃存設(shè)備200還可包括具有與上述元件不同功能的其他元件。在此,所述串行閃存設(shè)備200被理解為基本包括具有外部并行(例如,NOR快閃)接口和內(nèi)部NAND(串行)閃存的存儲器芯片。例如,來自SamsungElectronics Co.Ltd.的OneNAND閃存具有外部NOR快閃(并行)接口和內(nèi)部NAND(串行)快閃陣列。
圖7是圖解說明更新圖4和6的所述串行閃存設(shè)備200的處理的流程圖。
所述微處理器100根據(jù)存儲在微處理器的內(nèi)部ROM中的例程,可從所述串行閃存設(shè)備200中的引導(dǎo)RAM 222接收快閃配置表(FCT)(步驟S510)。當(dāng)FCT被確定無效時(shí),用于引導(dǎo)所述程序所必要的代碼,諸如應(yīng)用代碼、引導(dǎo)代碼和引導(dǎo)代碼裝載程序不存在于所述串行閃存設(shè)備中,并且因此需要初始編程所述串行閃存設(shè)備。諸如專用USB線纜或UART線纜的串行線纜被用來初始編程并更新所述串行閃存設(shè)備。
將所述串行線纜連接到所述引導(dǎo)系統(tǒng),使得更新所述串行閃存設(shè)備(步驟S520),并利用所述串行線纜從主機(jī)程序提供器下載主機(jī)下載程序到所述串行閃存設(shè)備。
通過所述串行線纜將所述主機(jī)下載程序下載到微處理器100的內(nèi)部RAM130(步驟S530),并且臨時(shí)存儲在微處理器100的內(nèi)部RAM 130中的主機(jī)下載程序接著被編程到所述串行閃存設(shè)備的NAND快閃陣列(步驟S540)。
圖8是圖解說明用于更新圖4示出的串行閃存設(shè)備200的引導(dǎo)系統(tǒng)的操作的組合流程圖、框圖和存儲器映射圖。
執(zhí)行存儲在微處理器100的內(nèi)部ROM 120中的監(jiān)視程序來檢查所述串行閃存設(shè)備200中的引導(dǎo)RAM 222的快閃配置表(FCT)(路徑S1)。由于所述NAND快閃陣列260在開始時(shí)(在最初的編程之前)是空的,因此所述FCT不存在所述串行閃存設(shè)備200的引導(dǎo)RAM 222中。從而,由于所述FCT是無效的,因此監(jiān)視程序執(zhí)行環(huán)回(loop-back)測試。所述環(huán)回測試是一個檢查是否連接下載線纜的處理。當(dāng)連接了所述下載線纜時(shí),所述監(jiān)視程序執(zhí)行是否已經(jīng)從主機(jī)程序提供器500接收到表示更新開始的特定命令的監(jiān)視。
當(dāng)已經(jīng)從主機(jī)程序提供器500接收到指示更新開始的特定命令(AT++LOAD)時(shí)(路徑S2),所述監(jiān)視程序強(qiáng)迫執(zhí)行同樣存儲在微處理器100的內(nèi)部ROM 120中的第一更新代碼,也就是第一級鏈接(FSL)。
所述第一級鏈接(FSL)程序使所述微處理器100通過所述線纜從所述主機(jī)程序提供器500接收第二更新代碼550,也就是第二級鏈接(SSL),并將所述SSL復(fù)制到微處理器100的內(nèi)部RAM 130中(路徑S3)。然后,由所述微處理器100片內(nèi)執(zhí)行存儲在所述內(nèi)部RAM 130中的所述SSL。
所述SSL程序等待來自下載程序560的“加載”命令(AT##B)。當(dāng)所述SSL接收“加載”命令(AT##B)時(shí)(路徑S4),所述NAND快閃陣列260通過從所述主機(jī)程序提供器500下載應(yīng)用代碼540、引導(dǎo)代碼,也就是OneNAND復(fù)制驅(qū)動程序(OCD)530、以及引導(dǎo)代碼裝載程序,也就是OCD裝載程序520(路徑S5),并將該代碼寫入所述NAND快閃陣列260來編程。
圖9是圖解說明利用圖4所示的串行閃存設(shè)備200的引導(dǎo)系統(tǒng)的流程圖。
當(dāng)電源接通(START)時(shí),所述串行閃存設(shè)備200(圖4中所示)將快閃配置表(FCT)和OCD裝載程序裝載到緩沖器RAM(引導(dǎo)RAM)(圖8示出的222)(步驟S710)。所述FCT可提供用于利用圖4和6示出的串行閃存設(shè)備200引導(dǎo)微處理器100所必要的信息。例如,所述快閃配置表(FCT)可形成表1所示。
表1

所述引導(dǎo)標(biāo)記(Boot Flag)表示用于設(shè)置“默認(rèn)”更新線纜的標(biāo)記。例如,當(dāng)將引導(dǎo)標(biāo)記設(shè)置為USB時(shí),所述USB線纜是用于更新所述串行閃存設(shè)備的默認(rèn)更新線纜,以及當(dāng)將引導(dǎo)標(biāo)記設(shè)置為UART時(shí),所述UART線纜是用于更新所述串行閃存設(shè)備的默認(rèn)更新線纜。
所述IROM監(jiān)視器延遲(IROM Monitor Delay)表示內(nèi)部ROM監(jiān)視程序在環(huán)回測試過程中等待的時(shí)間周期。所述環(huán)回測試將在下面描述。假設(shè)所述主機(jī)程序提供器通過更新線纜連接,運(yùn)行在微處理器100中的監(jiān)視程序?qū)⒆址畟魉徒o所述更新線纜,然后等待預(yù)定時(shí)間以檢查是否正確地的接收所述傳送的字符串。例如,在微處理器100中運(yùn)行的監(jiān)視程序?qū)⒆址癆BC”傳送到所述更新線纜并等待100ms。當(dāng)在100ms中微處理器100通過所述更新線纜返回接收到字符串“ABC”時(shí),環(huán)回測試是成功的。
所述應(yīng)用分支地址(Application Branch Address)表示在能夠執(zhí)行的狀態(tài)中應(yīng)用代碼的進(jìn)入地址。所述OCD大小(OCD Size)表示所述引導(dǎo)代碼OCD的大小。
所述存儲在內(nèi)部ROM中的主初始程序代碼從引導(dǎo)RAM接收所述快閃配置表(FCT)(步驟S720)。在確定所述FCT有效之后,當(dāng)所述下載線纜沒有連接時(shí),執(zhí)行從所述內(nèi)部ROM 130跳轉(zhuǎn)到OCD裝載程序,并由微處理器100執(zhí)行所述OCD裝載程序(步驟S730)。
所述OCD裝載程序可包括將所述OCD傳送到微處理器100的內(nèi)部RAM130的例程(步驟S740)。所述OCD裝載程序?qū)τ谙铝性蚴潜匾摹K鯫CD可包括初始化由所述微處理器100使用的主存儲器300的例程、用于將所述應(yīng)用代碼裝載(例如,復(fù)制)到所述主存儲器300的例程、用于管理其它NAND塊的應(yīng)用例程等等。大(large-sized)的應(yīng)用可以不被序列地(連續(xù)地)排列在所述串行閃存設(shè)備中。換句話說,具有大于一個塊的大小的應(yīng)用可分散(分段)在所述串行閃存中,因此所述OCD可包括序列地聚集所述分散的(分段的)程序的例程,以將所聚集的程序以可執(zhí)行的形式傳送給所述主存儲器300。此外,所述OCD可包括用于檢查錯誤塊的例程,用于檢查應(yīng)用代碼的有效性的例程和/或用于檢查安全性代碼的例程。因此,所述OCD的大小可大于所述引導(dǎo)RAM 222的大小。在這種情況下,所述OCD沒有被裝載到所述引導(dǎo)RAM 222中,而是被裝載到內(nèi)部RAM 120或主存儲器300中,以便所述OCD可直接地執(zhí)行所述引導(dǎo)處理。因此,對于將所述OCD傳送到諸如微處理器100的內(nèi)部RAM 120或主存儲器300的能夠隨機(jī)存取的足夠大的存儲器設(shè)備而言,OCD裝載程序是必須的。
傳送所述OCD到內(nèi)部RAM 130或主存儲器300的OCD裝載程序不需要用于初始化所述內(nèi)部RAM 130或主存儲器300的例程,以便所述OCD裝載程序的大小足夠小來被裝載到所述引導(dǎo)RAM中。所述OCD在被傳送到所述微處理器100的內(nèi)部RAM 130或所述主存儲器300中之后被執(zhí)行。
如果所述OCD已經(jīng)被傳送到內(nèi)部RAM 130并在那兒片內(nèi)執(zhí)行,那么所述OCD初始化所述主存儲器300(步驟S750)并且然后將所述應(yīng)用代碼復(fù)制到所述主存儲器中(步驟S760)。所述應(yīng)用代碼可以包括OS程序和各種應(yīng)用程序。
當(dāng)所述應(yīng)用代碼被復(fù)制到所述主存儲器之后,執(zhí)行從所述OCD跳轉(zhuǎn)到所述應(yīng)用代碼(步驟S770)。
圖10是圖解說明利用圖4示出的串行閃存設(shè)備200的可選引導(dǎo)系統(tǒng)的操作的組合流程圖、框圖和存儲器映射圖。
當(dāng)所述串行閃存設(shè)備200的電源接通時(shí),所述串行閃存設(shè)備200將存儲在所述NAND快閃陣列260中的1KB數(shù)據(jù)裝載到它的引導(dǎo)RAM 222中(路徑S1)。所述1KB數(shù)據(jù)包括快閃配置表(FCT)261和存儲在所述NAND快閃陣列260中的OCD裝載程序262。然后,執(zhí)行存儲在所述內(nèi)部ROM 120中的主初始程序以檢查裝載在所述串行閃存設(shè)備200中的引導(dǎo)RAM 222中的FCT 223的有效性(路徑S2)。作為檢查FCT的結(jié)果,當(dāng)沒有連接更新線纜時(shí),所述監(jiān)視程序執(zhí)行跳轉(zhuǎn)到裝載在所述串行閃存設(shè)備200的引導(dǎo)RAM 222中的OCD裝載程序224的地址,以執(zhí)行(例如,片內(nèi)執(zhí)行)裝載在所述引導(dǎo)RAM 222中的OCD裝載程序(路徑S3)。
所述OCD裝載程序224將存儲在NAND快閃陣列260中的OCD 263裝載(復(fù)制)到微處理器100的內(nèi)部RAM 130中(路徑S4)。通過數(shù)據(jù)RAM 221所述OCD 263從串行閃存設(shè)備200的NAND快閃陣列260傳送(復(fù)制)到微處理器100的內(nèi)部RAM 130(路徑S4)。在將所述OCD 263傳送(復(fù)制)到微處理器100的內(nèi)部RAM 130之后,執(zhí)行從所述OCD裝載程序224跳轉(zhuǎn)到裝載到所述內(nèi)部RAM 130的OCD 263。
所述OCD 263初始化所述主存儲器300(路徑S5)。然后,OCD 263傳送(復(fù)制)存儲在NAND快閃陣列260中的應(yīng)用代碼264到所述主存儲器300。所述應(yīng)用代碼264通過數(shù)據(jù)RAM 221從串行閃存設(shè)備200被傳送(復(fù)制)到所述主存儲器300。在將應(yīng)用代碼264傳送(復(fù)制)到主存儲器300之后,所述OCD 263執(zhí)行跳轉(zhuǎn)到裝載在所述主存儲器300中的應(yīng)用代碼310。
圖11、12和13是圖解說明根據(jù)本發(fā)明示例性實(shí)施例的對于引導(dǎo)系統(tǒng)的引導(dǎo)和更新處理的流程圖。將利用UART或USB來描述更新所述引導(dǎo)系統(tǒng)的操作。然而,該描述僅僅是圖解說明本發(fā)明的,也可利用諸如通過NAND快閃陣列260的隨機(jī)存取的其它方法、通過執(zhí)行應(yīng)用程序、或操作系統(tǒng)升級程序、或“系統(tǒng)備份”文件、或“系統(tǒng)恢復(fù)”文件、或系統(tǒng)“休眠”文件、或由遠(yuǎn)程用戶(“網(wǎng)絡(luò)管理員”)上傳的可執(zhí)行文件的微處理器來執(zhí)行更新引導(dǎo)系統(tǒng)的操作。
參見圖11,當(dāng)電源接通時(shí),初始化所述引導(dǎo)系統(tǒng)(步驟S902)。例如,根據(jù)存儲在微處理器100的內(nèi)部ROM 120中的基本SOC的值來初始化所述微處理器,并且將在串行閃存設(shè)備200中的NAND快閃陣列260的一些可執(zhí)行代碼裝載到串行閃存設(shè)備200的引導(dǎo)RAM 222中。
在初始化所述引導(dǎo)系統(tǒng)之后,存儲在微處理器100的內(nèi)部ROM 120中的主初始程序通過檢查所述FCT來檢查復(fù)制在串行閃存設(shè)備200的引導(dǎo)RAM222中的快閃配置表(FCT)(或可執(zhí)行代碼)是否有效(步驟S904)。當(dāng)復(fù)制在串行閃存設(shè)備200的引導(dǎo)RAM 222中的快閃配置表(FCT)(或可執(zhí)行代碼)無效時(shí),執(zhí)行關(guān)于所述串行閃存設(shè)備200的初始下載或更新的操作,并將參考附圖13進(jìn)行描述。當(dāng)復(fù)制在串行閃存設(shè)備200的引導(dǎo)RAM 222中的快閃配置表(FCT)(或可執(zhí)行代碼)有效時(shí),確定FCT中的UART標(biāo)記的狀態(tài)(是否設(shè)置為“是”或“否”)(步驟S906)。當(dāng)設(shè)置了所述UART標(biāo)記(決定步驟S906的分支“是”)時(shí),所述UART線纜為默認(rèn)的更新線纜。
當(dāng)設(shè)置了所述UART標(biāo)記(決定步驟S906的分支“是”)時(shí),執(zhí)行環(huán)回測試(步驟S908),并確定所述環(huán)回測試是否成功或失敗(步驟S910)。當(dāng)所述環(huán)回測試成功(決定步驟S910的分支“是”)時(shí),執(zhí)行對于串行閃存設(shè)備200(例如,OneNAND快閃)的最初的下載或更新(步驟S920)。當(dāng)所述環(huán)回測試沒有成功(決定步驟S910的分支“否”)時(shí),不執(zhí)行更新,以便執(zhí)行引導(dǎo)所述微處理器系統(tǒng)的普通處理(A,參見圖12)。(引導(dǎo)所述微處理器系統(tǒng)的處理將參考圖12進(jìn)行描述)。
另一方面,當(dāng)沒有設(shè)置所述UART標(biāo)記時(shí)(決定步驟S904的分支“否”),確定USB標(biāo)記的狀態(tài)(是否設(shè)置或沒有設(shè)置)(步驟S912)。當(dāng)設(shè)置了USB標(biāo)記時(shí)(決定步驟S912的分支“是”),所述USB線纜為默認(rèn)的更新線纜。如果設(shè)置了USB標(biāo)記(決定步驟S912的分支“是”),確定是否激活第二管腳(決定步驟S916)。所述第二管腳指示所述USB線纜是否對應(yīng)于所述更新線纜或一般的線纜。當(dāng)所述第二管腳被激活時(shí)(決定步驟S916的分支“是”),連接的USB線纜是一般的USB線纜,以便可立即執(zhí)行圖12示出的引導(dǎo)所述系統(tǒng)的處理,而不更新所述串行閃存設(shè)備200。當(dāng)所述第二管腳沒有激活時(shí)(決定步驟S916的分支“否”),執(zhí)行根據(jù)USB標(biāo)準(zhǔn)的初始化或啟動(boot-up)(步驟S918)。在根據(jù)USB標(biāo)準(zhǔn)初始化或啟動之后,可更新所述串行閃存設(shè)備(例如,OneNAND快閃)(步驟S920)。
當(dāng)沒有設(shè)置USB標(biāo)記時(shí)(決定步驟S912的分支“否”),不確定默認(rèn)更新在串行閃存設(shè)備的引導(dǎo)RAM 222或緩沖器RAM 220的大小不夠大的情況下,如上所述執(zhí)行引導(dǎo)微處理器系統(tǒng)。然而,當(dāng)串行閃存設(shè)備200包括足夠大的引導(dǎo)RAM 222時(shí),那么可不需要OCD裝載程序。
將參考圖14和15來描述根據(jù)包括足夠大的引導(dǎo)RAM 222(除去OCD裝載程序)的串行閃存設(shè)備200來引導(dǎo)微處理器系統(tǒng)。
圖14是圖解說明利用包括足夠大的引導(dǎo)RAM 222的圖4中的串行閃存設(shè)備200的引導(dǎo)處理的流程圖。
當(dāng)電源接通時(shí),包括足夠大的引導(dǎo)RAM(圖15中的226)(例如,16KB)的串行閃存設(shè)備200(圖4)執(zhí)行將快閃配置表(FCT)(圖15中的227)和引導(dǎo)代碼(OCD)(圖15中的228)裝載(復(fù)制)到串行閃存設(shè)備200中的引導(dǎo)RAM 226(步驟S1010)。所述FCT是提供用于利用串行閃存設(shè)備200引導(dǎo)系統(tǒng)所必要的信息以及用于確定它的有效性的校驗(yàn)和的快閃配置表。
存儲在微處理器100的內(nèi)部ROM 120中的主初始程序從傳送閃存設(shè)備200的引導(dǎo)RAM 222接收所述FCT(步驟S1020)。當(dāng)所述FCT有效時(shí),確定所述OCD是否裝載到所述引導(dǎo)RAM 222中(步驟S1030)。監(jiān)視程序基于可執(zhí)行引導(dǎo)代碼(OCD)的大小確定是否將所述可執(zhí)行代碼(OCD)裝載到所述引導(dǎo)RAM 222中。例如,在所述引導(dǎo)RAM 222的大小是16KB(例如,圖15中的引導(dǎo)RAM 226)并且所述OCD的大小比較小(例如,10KB)的情況下,所述OCD可立即并全部地裝載到所述引導(dǎo)RAM 222中以便片內(nèi)執(zhí)行(XiP)。
當(dāng)所述OCD被裝載到所述引導(dǎo)RAM 222中時(shí),所述監(jiān)視程序執(zhí)行跳轉(zhuǎn)到裝載在所述引導(dǎo)RAM 222中的OCD(步驟S1090)。所述OCD初始化主存儲器300(步驟S1060)并將應(yīng)用代碼(存儲在NAND快閃陣列260中)復(fù)制到所述主存儲器300中(步驟S1070)。然后,所述OCD執(zhí)行跳轉(zhuǎn)到所述應(yīng)用代碼(步驟S1080)。
另一方面,當(dāng)所述OCD沒被裝載在所述引導(dǎo)RAM 222中時(shí),所述OCD裝載程序被裝載到所述引導(dǎo)RAM 222中,因此,所述主初始程序片內(nèi)執(zhí)行引導(dǎo)RAM 222中的OCD裝載程序(步驟S1040)。然后,所述OCD裝載程序?qū)⑺鯫CD傳送(復(fù)制)到所述微處理器100中的內(nèi)部RAM 120(步驟S1050)并執(zhí)行所述OCD。所述OCD初始化所述主存儲器300(步驟S1060),然后將所述應(yīng)用代碼復(fù)制到所述主存儲器300中(步驟S1070)。然后,所述OCD線纜,所以要確定第一管腳的狀態(tài)(是否被激活)(決定步驟S914)。所述第一管腳指示是否連接了USB線纜。當(dāng)?shù)谝还苣_被激活時(shí)(決定步驟S914的分支“是”),連接了USB線纜,所以如圖11示出執(zhí)行包括步驟S916的下一個步驟。
當(dāng)?shù)谝还苣_沒有激活時(shí)(決定步驟S914的分支“否”),所述USB線纜沒被連接,并執(zhí)行環(huán)回測試(步驟S908)。然后,執(zhí)行步驟S910以下的步驟。
參見圖12,監(jiān)視程序執(zhí)行已經(jīng)裝載(復(fù)制)到引導(dǎo)RAM 222中、用于引導(dǎo)所述系統(tǒng)的所述OCD裝載程序(步驟S922)。所述OCD裝載程序?qū)CD傳送(復(fù)制)到內(nèi)部RAM 222(步驟S924)以便片內(nèi)執(zhí)行。然后,執(zhí)行傳送到內(nèi)部RAM 222中的OCD。
首先,所述OCD初始化所述主存儲器300(步驟S926)。當(dāng)所述主存儲器300被初始化之后,所述OCD將存儲在所述串行閃存設(shè)備200的NAND快閃陣列260中的應(yīng)用代碼復(fù)制到主存儲器300(步驟S928)。當(dāng)所述應(yīng)用代碼被復(fù)制到所述主存儲器時(shí),所述OCD執(zhí)行跳轉(zhuǎn)到在所述主存儲器中復(fù)制的應(yīng)用代碼(步驟S930)。
參見圖13,當(dāng)在串行閃存設(shè)備200的引導(dǎo)RAM 222中復(fù)制的快閃配置表(FCT)(或可執(zhí)行代碼)無效時(shí),所述監(jiān)視程序檢查所述第一管腳的狀態(tài),以確定所述第一管腳是否被激活(步驟S932)。當(dāng)所述第一管腳被激活時(shí)(決定步驟S932的分支“是”),連接所述USB線纜,以便確定第二管腳是否被激活(決定步驟S934)。當(dāng)所述第二管腳被激活時(shí)(決定步驟S934的分支“是”),所述連接的USB線纜是更新的線纜,因此初始化所述USB(步驟S936),并將主機(jī)程序提供器的主機(jī)程序編程到所述串行閃存設(shè)備200(例如,OneNAND快閃)中(步驟S938)。當(dāng)所述第二管腳沒有被激活時(shí)(決定步驟S934的分支“否”),所述連接的USB線纜不是更新的線纜,因此輸出錯誤信息(步驟S944),并在此再次執(zhí)行步驟S932以下的步驟。
當(dāng)所述第一管腳沒有被激活(決定步驟S932的分支“否”)時(shí),執(zhí)行環(huán)回測試(步驟S940)以確定所述UART線纜是否適當(dāng)?shù)夭僮?。然后,確定所述環(huán)回測試是否成功或失敗(步驟S942)。如果所述環(huán)回測試成功(決定步驟S942的分支“是”),則將主機(jī)程序提供器的主機(jī)程序編程到所述串行閃存設(shè)備200(例如,OneNAND快閃)中(步驟S938)。如果環(huán)回測試失敗(決定步驟S942的分支“否”),則輸出錯誤消息(步驟S944)并再次執(zhí)行步驟S932。執(zhí)行跳轉(zhuǎn)到所述應(yīng)用代碼(步驟S1080)。
圖15是圖解說明使用包括足夠大的引導(dǎo)RAM 226的圖4中的串行閃存設(shè)備200引導(dǎo)微處理系統(tǒng)的可替換處理的組合流程圖、框圖和存儲器映射圖。
當(dāng)電源接通時(shí),所述串行閃存設(shè)備200將存儲在NAND快閃陣列260中的快閃配置表(FCT)261和可執(zhí)行引導(dǎo)代碼266裝載(復(fù)制)到引導(dǎo)RAM 226中(路徑S1)。所述(16KB的)可執(zhí)行引導(dǎo)代碼OCD 228(266)和所述FCT227(265)具有等于或小于所述引導(dǎo)RAM 226的大小(例如,16KB)的大小。然后,微處理器100的內(nèi)部ROM 120中的監(jiān)視程序檢查裝載在所述串行閃存設(shè)備200的引導(dǎo)RAM 226中的FCT 227的有效性(路徑S2)。作為檢查FCT的結(jié)果,當(dāng)更新線纜沒被連接時(shí),監(jiān)視程序的執(zhí)行跳轉(zhuǎn)到可執(zhí)行引導(dǎo)代碼OCD 228的地址,以便片內(nèi)執(zhí)行在引導(dǎo)RAM 226中的OCD(路徑S3)。
所述OCD 228初始化所述主存儲器300(路徑S4)。然后,所述OCD將存儲在NAND快閃陣列260中的應(yīng)用代碼267傳送(復(fù)制)到所述主存儲器300(路徑S5)。
圖15中的引導(dǎo)系統(tǒng)包括具有相對于存儲在NAND快閃陣列260中的所述快閃配置表(FCT)261和可執(zhí)行引導(dǎo)代碼266的大小足夠大的大小的引導(dǎo)RAM 226,因此,所述OCD可被直接裝載并在所述引導(dǎo)RAM 226中被片內(nèi)執(zhí)行。
圖16是圖解說明利用圖4的串行閃存設(shè)備200的可替換的引導(dǎo)處理流程圖。
當(dāng)電源接通時(shí),圖4的串行閃存設(shè)備200將快閃配置表(FCT)和可執(zhí)行引導(dǎo)代碼(OCD)裝載程序裝載到緩沖器RAM 220(圖6或圖17)中,諸如為引導(dǎo)RAM保留的部分(圖6或圖17中的222)(步驟S1210)。所述FCT提供用于執(zhí)行利用所述串行閃存設(shè)備200來引導(dǎo)系統(tǒng)所必要的信息。例如,所述FCT可構(gòu)造為如圖1所示的。本領(lǐng)域的普通技術(shù)人員可以理解所述FCT可具有各種其他的和不同的數(shù)據(jù)結(jié)構(gòu)和內(nèi)容。
在微處理器100的內(nèi)部ROM 120中的監(jiān)視程序(圖4)從引導(dǎo)RAM 222接收所述FCT(步驟S1220)。當(dāng)所述FCT有效時(shí),所述監(jiān)視程序執(zhí)行引導(dǎo)處理。
所述監(jiān)視程序執(zhí)行內(nèi)部RAM中的OCD裝載程序(步驟S1230)。所述OCD裝載程序包括用于初始化所述主存儲器300的例程、以及用于將所述OCD裝載(例如,復(fù)制)到所述主存儲器300的例程。當(dāng)執(zhí)行所述OCD裝載程序以便包括用于初始化所述主存儲器300的例程以及用于將所述OCD裝載(例如,復(fù)制)到所述主存儲器300的例程時(shí),所述OCD裝載程序的大小可大于圖7和圖8中的OCD裝載程序的大小。然而,在所述OCD裝載程序被裝載到引導(dǎo)RAM中并包括用于初始化所述主存儲器300的例程和用于將所述OCD裝載(復(fù)制)到所述主存儲器300的例程的情況下,可執(zhí)行根據(jù)本發(fā)明的下列示例性實(shí)施例的引導(dǎo)操作。
所述OCD裝載程序初始化所述主存儲器300(步驟S1240)并且然后將可執(zhí)行引導(dǎo)代碼OCD(263)復(fù)制到所述主存儲器300(步驟S1250)。所述OCD可以包括用于將應(yīng)用代碼264裝載(例如,復(fù)制)到主存儲器300中的例程。如上所述,所述可執(zhí)行引導(dǎo)代碼OCD 263可包括將大的應(yīng)用代碼264復(fù)制到所述主存儲器300的各種例程。在將所述可執(zhí)行引導(dǎo)代碼OCD 263裝載(復(fù)制)到所述主存儲器300之后,片內(nèi)執(zhí)行在所述主存儲器300中的所述可執(zhí)行引導(dǎo)代碼OCD。
所述OCD將存儲的應(yīng)用代碼264裝載(例如,復(fù)制)到所述主存儲器300中(步驟S1260)。所述存儲的應(yīng)用代碼264可包括操作系統(tǒng)(OS)程序和各種應(yīng)用程序的一部分或全部。
當(dāng)存儲的應(yīng)用代碼264被復(fù)制到所述主存儲器300時(shí),片內(nèi)執(zhí)行在主存儲器300中的所述應(yīng)用代碼(步驟S1270)。
圖17是圖解說明利用圖4的串行閃存設(shè)備200引導(dǎo)微處理器系統(tǒng)的可替換處理的組合流程圖、框圖和存儲器映射圖。
當(dāng)電源接通時(shí),所述串行閃存設(shè)備200將存儲在NAND快閃陣列260中的1KB數(shù)據(jù)裝載到引導(dǎo)RAM 222中(路徑S1)。所述存儲的1KB數(shù)據(jù)包括快閃配置表(FCT)261和可執(zhí)行的引導(dǎo)代碼(OCD)裝載程序262。然后,在微處理器的內(nèi)部ROM 120中的監(jiān)視程序檢查在串行閃存設(shè)備200的引導(dǎo)RAM 222中的復(fù)制的FCT 223的有效性(路徑S2)。作為檢查所述復(fù)制的FCT223的結(jié)果,當(dāng)所述更新線纜沒被連接時(shí),監(jiān)視程序執(zhí)行跳轉(zhuǎn)到可執(zhí)行引導(dǎo)代碼(OCD)裝載程序224的地址,從而片內(nèi)執(zhí)行在引導(dǎo)RAM 222中裝載(復(fù)制)的OCD裝載程序(路徑S3)。
所述OCD裝載程序224初始化所述主存儲器300(路徑S4)。然后,所述OCD裝載程序224將OCD 263傳送(復(fù)制)到所述主存儲器300(路徑S5)。所述OCD 263通過數(shù)據(jù)RAM 221被傳送(復(fù)制)到所述主存儲器300。執(zhí)行所述傳送(復(fù)制)到主存儲器300的OCD 320,并且所述OCD將存儲的應(yīng)用代碼264傳送(復(fù)制)到所述主存儲器300。應(yīng)用代碼264通過所述數(shù)據(jù)RAM 221被傳送(復(fù)制)到所述主存儲器300(路徑S6)。在將應(yīng)用代碼264傳送(復(fù)制)到所述主存儲器300之后,所述OCD執(zhí)行在所述主存儲器300中裝載的應(yīng)用代碼310。
如上所述,根據(jù)本發(fā)明示例性實(shí)施例的引導(dǎo)系統(tǒng)的方法通過利用具有隨機(jī)存取(并行,“NOR”快閃)接口的NAND閃存可以低成本地引導(dǎo)微處理器系統(tǒng),同時(shí)確保包括ROM的微處理器的靈活性。
在將可執(zhí)行的引導(dǎo)代碼(和/或具有用于將所述引導(dǎo)代碼傳送到所述微處理器的內(nèi)部存儲器的例程的引導(dǎo)代碼裝載程序)存儲在具有隨機(jī)存儲接口的NAND閃存設(shè)備時(shí),即使具有隨機(jī)存取(并行)接口的NAND閃存設(shè)備的RAM存儲緩沖器的大小不大,根據(jù)本發(fā)明示例性實(shí)施例的引導(dǎo)所述微處理器系統(tǒng)的方法也可引導(dǎo)所述系統(tǒng)。
權(quán)利要求
1.一種使用閃存設(shè)備來引導(dǎo)微處理器系統(tǒng)的方法,該閃存設(shè)備具有串行閃存陣列和含有隨機(jī)存取接口的RAM緩沖器,該方法包括當(dāng)開啟電源時(shí),將存儲在所述串行閃存陣列的引導(dǎo)代碼裝載程序裝載到所述RAM緩沖器中;執(zhí)行存儲在微處理器的只讀存儲器(ROM)中的例程,包括執(zhí)行所述引導(dǎo)代碼裝載程序;根據(jù)所述引導(dǎo)代碼裝載序,將存儲在所述串行閃存陣列中的引導(dǎo)代碼裝載到所述微處理器的內(nèi)部RAM中;根據(jù)所述引導(dǎo)代碼,將存儲在所述串行閃存陣列中的應(yīng)用代碼裝載到主存儲器中;和執(zhí)行所述應(yīng)用代碼。
2.如權(quán)利要求1所述的方法,其中,所述ROM是所述微處理器中的內(nèi)部ROM。
3.如權(quán)利要求1所述的方法,其中,執(zhí)行存儲在所述微處理器的只讀存儲器(ROM)中的例程包括確定用于更新存儲在串行閃存陣列中的引導(dǎo)代碼的線纜是否被連接;和如果所述線纜沒有被連接,則執(zhí)行裝載在所述RAM緩沖器中的引導(dǎo)代碼裝載程序。
4.如權(quán)利要求3所述的方法,其中,執(zhí)行存儲在所述微處理器的只讀存儲器(ROM)的例程還包括在連接所述線纜時(shí),更新所述串行閃存陣列的內(nèi)容。
5.如權(quán)利要求3所述的方法,其中,執(zhí)行所述引導(dǎo)代碼裝載程序還包括在確定所述線纜是否被連接之前,在電源接通時(shí)接收裝載在RAM緩沖器中的快閃配置表(FCT)的配置信息。
6.如權(quán)利要求1所述的方法,其中將所述應(yīng)用代碼裝載到所述主存儲器包括初始化所述主存儲器;和將所述應(yīng)用代碼裝載到所述主存儲器中。
7.一種微處理器系統(tǒng),包括微處理器,其包括內(nèi)部ROM和內(nèi)部RAM,其中,該內(nèi)部ROM存儲了由所述微處理器可執(zhí)行的第一代碼;主存儲器;和閃存設(shè)備,包括存儲由所述微處理器可執(zhí)行的第二代碼的串行閃存陣列,具有隨機(jī)存取接口的RAM緩沖器,并被配置來在電源接通時(shí)將第二代碼裝載到所述RAM緩沖器中的第一預(yù)定位置的有限狀態(tài)機(jī),其中,從所述內(nèi)部ROM裝載的第一代碼的例程控制微處理器以執(zhí)行在所述RAM緩沖器中的所述第二代碼。
8.如權(quán)利要求7所述的系統(tǒng),其中,所述串行閃存陣列還存儲由所述微處理器可執(zhí)行的第三和第四代碼。
9.如權(quán)利要求8所述的系統(tǒng),其中,所述微處理器根據(jù)在RAM緩沖器中執(zhí)行的第二代碼的例程將所述第三代碼裝載到所述內(nèi)部RAM中,根據(jù)在內(nèi)部RAM中執(zhí)行的第三代碼的例程將所述第四代碼裝載到所述主存儲器中,并且然后在所述主存儲器中執(zhí)行所述第四代碼。
10.如權(quán)利要求9所述的系統(tǒng),其中,所述第二代碼是引導(dǎo)代碼裝載程序,所述第三代碼是引導(dǎo)代碼,而所述第四代碼是應(yīng)用代碼。
11.如權(quán)利要求10所述的系統(tǒng),其中,從所述內(nèi)部ROM裝載的第一代碼的例程包括確定用于更新所述串行閃存陣列的內(nèi)容的線纜是否被連接的第一確定程序;及當(dāng)所述線纜沒有被連接時(shí),將執(zhí)行跳轉(zhuǎn)到裝載在所述RAM緩沖器中的引導(dǎo)代碼裝載程序的程序。
12.如權(quán)利要求11所述的系統(tǒng),其中,從所述內(nèi)部ROM裝載的第一代碼的例程還包括,當(dāng)所述線纜被連接時(shí),更新所述串行閃存陣列的內(nèi)容的更新程序。
13.如權(quán)利要求10所述的系統(tǒng),其中,所述第二代碼的例程包括初始化所述主存儲器的初始化程序;和將存儲在所述串行閃存陣列中的所述應(yīng)用代碼裝載到所述主存儲器中的裝載程序。
14.如權(quán)利要求7所述的系統(tǒng),其中,所述有限狀態(tài)機(jī)在電源接通時(shí)將快閃配置表(FCT)裝載到RAM緩沖器的第二預(yù)定位置中,和從所述內(nèi)部ROM裝載的第一代碼的例程包括在確定所述線纜是否被連接之前,從裝載在RAM緩沖器的FCT接收配置信息。
15.一種閃存設(shè)備,包括串行閃存陣列;RAM緩沖器;有限狀態(tài)機(jī),其被配置來在所述串行閃存陣列和所述RAM緩沖器之間傳送數(shù)據(jù);和隨機(jī)存取接口,其被配置來使能對裝載在所述RAM緩沖器中的數(shù)據(jù)的隨機(jī)存取,其中,所述有限狀態(tài)機(jī)被配置為在電源接通時(shí),將存儲在所述串行閃存陣列中的第一可執(zhí)行代碼裝裝載到所述RAM緩沖器中。
16.如權(quán)利要求15所述的設(shè)備,其中所述第一可執(zhí)行代碼是引導(dǎo)代碼,以及所述有限狀態(tài)機(jī)被配置為在電源接通時(shí),將存儲在所述串行閃存陣列中的所述引導(dǎo)代碼傳送到所述RAM緩沖器中的第一預(yù)定位置。
17.如權(quán)利要求16所述的設(shè)備,其中,所述串行閃存陣列存儲可由微處理器執(zhí)行的應(yīng)用代碼,及所述引導(dǎo)代碼包括用于將所述應(yīng)用代碼裝載到微處理器的主存儲器的例程。
18.如權(quán)利要求15所述的設(shè)備,其中,所述串行閃存陣列被配置為存儲第二可執(zhí)行代碼,以及所述第一可執(zhí)行代碼包括用于將所述第二可執(zhí)行代碼裝載到所述微處理器中的內(nèi)部RAM的例程。
19.如權(quán)利要求18所述的設(shè)備,其中,所述串行閃存陣列被配置來存儲第三可執(zhí)行代碼,以及所述第二可執(zhí)行代碼包括用于將所述第三可執(zhí)行代碼裝載到所述微處理器中的主存儲器的例程。
20.如權(quán)利要求19所述的設(shè)備,其中,所述第一可執(zhí)行代碼是引導(dǎo)代碼裝載程序,所述第二可執(zhí)行代碼是引導(dǎo)代碼,而所述第三可執(zhí)行代碼是應(yīng)用代碼,以及所述引導(dǎo)代碼的例程包括初始化所述微處理器的主存儲器的初始化程序;和將所述應(yīng)用代碼裝載到所述主存儲器中的裝載程序。
21.一種利用存儲在串行閃存陣列中的代碼引導(dǎo)微處理器系統(tǒng)的方法,包括當(dāng)電源接通時(shí),將存儲在所述串行閃存陣列中的引導(dǎo)代碼裝載到RAM緩沖器中的第一預(yù)定位置,所述RAM緩沖器可操作地連接到所述串行閃存陣列并可由微處理器隨機(jī)存?。粓?zhí)行裝載在所述RAM緩沖器中的引導(dǎo)代碼;通過執(zhí)行所述引導(dǎo)代碼,將存儲在所述串行閃存陣列中的應(yīng)用代碼裝載到微處理器的主存儲器中;以及執(zhí)行在所述主存儲器中的所述應(yīng)用代碼。
22.如權(quán)利要求21所述的方法,還包括在電源接通時(shí),將來自存儲在所述串行閃存陣列中的快閃配置表(FCT)的快閃配置信息裝載到所述RAM緩沖器的第二預(yù)定位置。
23.如權(quán)利要求21所述的方法,其中,執(zhí)行所述引導(dǎo)代碼包括接收存儲在所述串行閃存陣列中的快閃配置表(FCT)的快閃配置信息。
24.如權(quán)利要求21所述的方法,其中,執(zhí)行所述引導(dǎo)代碼包括初始化所述主存儲器。
25.一種引導(dǎo)系統(tǒng),包括包括ROM的微處理器;主存儲器;存儲應(yīng)用代碼和引導(dǎo)代碼的串行閃存;RAM緩沖器;和有限狀態(tài)機(jī),被配置來當(dāng)電源接通時(shí)將存儲在所述串行閃存中的所述引導(dǎo)代碼裝載到所述RAM緩沖器中,其中,所述微處理器根據(jù)所述ROM的例程執(zhí)行所述引導(dǎo)代碼,然后根據(jù)在RAM緩沖器中執(zhí)行的引導(dǎo)代碼的例程將所述應(yīng)用代碼裝載到所述主存儲器,并且然后執(zhí)行在所述主存儲器中的所述應(yīng)用代碼。
26.如權(quán)利要求25所述的系統(tǒng),其中所述ROM是微處理器的內(nèi)部ROM,以及所述微處理器執(zhí)行在所述微處理器的內(nèi)部RAM中的ROM的例程。
27.如權(quán)利要求25所述的系統(tǒng),其中,所述ROM的例程包括用于確定所述引導(dǎo)代碼是否被裝載到所述RAM緩沖器中的確定程序;和如果所述引導(dǎo)代碼被裝載在所述RAM緩沖器中則執(zhí)行所述引導(dǎo)代碼的程序。
28.如權(quán)利要求25所述的系統(tǒng),其中,所述引導(dǎo)代碼的例程包括初始化所述主存儲器的初始化程序;及將所述應(yīng)用代碼裝載到所述主存儲器中的裝載程序。
29.一種利用閃存設(shè)備來引導(dǎo)微處理器系統(tǒng)的方法,該閃存設(shè)備具有串行閃存陣列和含有隨機(jī)存取接口的RAM緩沖器,該方法包括當(dāng)開啟電源時(shí),將存儲在所述串行閃存陣列的引導(dǎo)代碼裝載程序裝載到所述RAM緩沖器中;執(zhí)行在微處理器中的內(nèi)部ROM的例程;根據(jù)所述內(nèi)部ROM的例程來執(zhí)行在所述RAM緩沖器中的所述引導(dǎo)代碼裝載程序;根據(jù)所述引導(dǎo)代碼裝載程序來初始化所述微處理器的主存儲器;根據(jù)所述引導(dǎo)代碼裝載程序而將存儲在所述串行閃存陣列中的引導(dǎo)代碼裝載到所述主存儲器;根據(jù)所述引導(dǎo)代碼裝載程序來執(zhí)行在所述主存儲器中的所述引導(dǎo)代碼;根據(jù)所述引導(dǎo)代碼而將存儲在所述串行閃存陣列中的應(yīng)用代碼裝載到所述主存儲器;和執(zhí)行在所述主存儲器中的所述應(yīng)用代碼。
30.如權(quán)利要求29所述的方法,其中,執(zhí)行所述內(nèi)部ROM的例程包括確定用于更新存儲在所述串行閃存陣列的內(nèi)容的線纜是否被連接;和如果所述線纜沒有被連接,則跳轉(zhuǎn)到裝載在所述RAM緩沖器中的引導(dǎo)代碼裝載程序。
31.如權(quán)利要求30所述的方法,其中,執(zhí)行所述內(nèi)部ROM的例程還包括如果所述線纜被連接,則更新所述串行閃存陣列的內(nèi)容。
32.如權(quán)利要求30所述的方法,其中,執(zhí)行所述內(nèi)部ROM的例程還包括在確定所述線纜是否被連接之前,當(dāng)電源接通時(shí)從所述串行閃存陣列裝載到所述RAM緩沖器中的快閃配置表(FCT)接收快閃配置信息。
33.一種引導(dǎo)系統(tǒng),包括包括內(nèi)部ROM的微處理器;用于存儲應(yīng)用代碼和第一可執(zhí)行代碼的串行閃存陣列;RAM緩沖器;和配置來當(dāng)電源接通時(shí)將所述第一可執(zhí)行代碼裝載到所述RAM緩沖器中的有限狀態(tài)機(jī),其中,所述微處理器將所述應(yīng)用代碼裝載到主存儲器中,并且然后執(zhí)行所述應(yīng)用代碼。
34.如權(quán)利要求33所述的引導(dǎo)系統(tǒng),其中,所述微處理器被配置為在所述有限狀態(tài)機(jī)將所述第一可執(zhí)行代碼裝載到所述RAM緩沖器之后,執(zhí)行微處理器的內(nèi)部RAM中所述內(nèi)部ROM的例程;和其中,所述微處理器根據(jù)所述內(nèi)部ROM的例程來執(zhí)行在RAM緩沖器中的第一可執(zhí)行代碼。
35.如權(quán)利要求34所述的引導(dǎo)系統(tǒng),其中,所述串行閃存陣列還存儲第二可執(zhí)行代碼;和所述微處理器根據(jù)內(nèi)部ROM的例程執(zhí)行所述第一可執(zhí)行代碼,并根據(jù)引導(dǎo)代碼裝載程序的例程,將第二可執(zhí)行代碼裝載到所述主存儲器或微處理器的內(nèi)部RAM。
36.如權(quán)利要求34所述的引導(dǎo)系統(tǒng),其中,所述內(nèi)部ROM的例程包括確定用于更新所述串行閃存陣列的內(nèi)容的線纜是否被連接的確定程序;和如果所述線纜沒有被連接,則執(zhí)行裝載在所述RAM緩沖器中的第一可執(zhí)行代碼的程序。
37.如權(quán)利要求36所述的引導(dǎo)系統(tǒng),其中,所述內(nèi)部ROM的例程還包括如果所述線纜被連接,則更新所述串行閃存陣列的內(nèi)容的更新程序。
38.如權(quán)利要求36所述的引導(dǎo)系統(tǒng),其中,所述有限狀態(tài)機(jī)在電源接通時(shí),將存儲在所述串行閃存陣列中的快閃配置表(FCT)裝載到所述RAM緩沖器,和所述內(nèi)部ROM的例程還包括在確定所述線纜是否被連接之前,讀取裝載在所述RAM緩沖器中裝載的FCT的程序。
39.一種閃存設(shè)備,包括串行閃存,用于存儲應(yīng)用代碼、具有用于將所述應(yīng)用代碼加載到微處理器的主存儲器的例程的引導(dǎo)代碼、和具有用于將所述引導(dǎo)代碼加載到微處理器中的內(nèi)部RAM的的例程的引導(dǎo)代碼裝載程序;可由所述微處理器隨機(jī)存取的RAM緩沖器,其被配置來緩沖所述串行閃存陣列的內(nèi)容;和有限狀態(tài)機(jī),被配置來在電源接通時(shí)將所述引導(dǎo)代碼裝載程序裝載到所述RAM緩沖器。
40.如權(quán)利要求39所述的設(shè)備,其中,當(dāng)在所述RAM緩沖器中執(zhí)行所述引導(dǎo)代碼裝載程序時(shí),所述引導(dǎo)代碼根據(jù)所述引導(dǎo)代碼裝載程序的例程被裝載到所述主存儲器,和其中,當(dāng)在所述內(nèi)部RAM中執(zhí)行所述引導(dǎo)代碼時(shí),將所述應(yīng)用代碼裝載到所述主存儲器。
41.如權(quán)利要求40所述的設(shè)備,其中,所述引導(dǎo)代碼裝載程序的例程包括初始化所述主存儲器的初始化程序;和將所述引導(dǎo)代碼復(fù)制到所述主存儲器中的裝載程序。
42.一種利用RAM緩沖器進(jìn)行串行閃存陣列的內(nèi)容更新的方法,其具有隨機(jī)存取接口,所述方法包括將存儲在所述串行閃存陣列中的信息裝載到所述RAM緩沖器,其便于確定存儲在所述串行閃存中的可執(zhí)行代碼是否有效;確定從所述串行閃存陣列裝載的可執(zhí)行代碼是否有效;和當(dāng)存儲在所述串行閃存中的可執(zhí)行代碼無效時(shí),檢查是否連接了線纜。
43.如權(quán)利要求42所述的方法,還包括當(dāng)所述線纜被連接時(shí),執(zhí)行存儲在微處理器的ROM中、并被裝載在所述微處理器的內(nèi)部RAM中的第一更新代碼;和根據(jù)所述第一更新代碼的例程,將通過所述線纜傳送的第二代碼編程到所述串行閃存。
44.如權(quán)利要求43所述的方法,其中,所述第二代碼包括由所述微處理器可執(zhí)行的應(yīng)用代碼;和具有用于將所述應(yīng)用代碼裝載到微處理器的主存儲器的例程的引導(dǎo)代碼。
45.如權(quán)利要求44所述的方法,其中,所述第二代碼還包括具有用于將所述引導(dǎo)代碼裝載到所述微處理器的內(nèi)部RAM中的例程的引導(dǎo)代碼裝載程序;和表示引導(dǎo)標(biāo)記和應(yīng)用代碼的分支地址的快閃配置表(FCT),其中所述引導(dǎo)標(biāo)記表示默認(rèn)線纜的類型。
46.如權(quán)利要求44所述的方法,還包括當(dāng)存儲在所述串行閃存中的可執(zhí)行代碼無效并且所述線纜沒有被連接時(shí),輸出錯誤消息。
47.如權(quán)利要求44所述的方法,還包括當(dāng)存儲在所述串行閃存中的可執(zhí)行代碼是有效時(shí),檢查設(shè)置在引導(dǎo)標(biāo)記中的默認(rèn)線纜是否被連接;當(dāng)所述默認(rèn)線纜被連接時(shí),將通過所述默認(rèn)線纜傳送的所述第二代碼裝載到所述微處理器的內(nèi)部RAM;和編程所述第二代碼到所述串行閃存中。
48.如權(quán)利要求47所述的方法,還包括當(dāng)所述默認(rèn)線纜沒有被連接時(shí),檢查是否連接了非默認(rèn)線纜;當(dāng)所述非默認(rèn)線纜被連接時(shí),將通過所述非默認(rèn)線纜裝載的第三代碼裝載到所述微處理器的內(nèi)部RAM;和將通過所述非默認(rèn)線纜裝載的所述第三代碼編程到所述串行閃存中。
全文摘要
本發(fā)明涉及一種利用具有隨機(jī)存取(并行,例如NOR快閃類型)接口的串行(例如NAND類型)閃存陣列來引導(dǎo)微處理系統(tǒng)的方法和裝置。所述方法包括根據(jù)所述微處理器的只讀存儲器(ROM)的例程,當(dāng)開啟電源時(shí)將存儲在所述串行(例如NAND類型)閃存陣列中的引導(dǎo)代碼裝載程序裝載到RAM;根據(jù)所述引導(dǎo)代碼裝載程序,將存儲在所述串行閃存中的引導(dǎo)代碼裝載到所述微處理器的內(nèi)部或外部(主)RAM中;根據(jù)所述引導(dǎo)代碼,將存儲在所述串行閃存中的應(yīng)用代碼裝載到主(RAM)存儲器中;以及執(zhí)行所述應(yīng)用代碼。相比較基于NOR快閃的系統(tǒng),所述系統(tǒng)以較低花費(fèi)制造,并同時(shí)確保了微處理器的靈活性。
文檔編號G06F9/445GK1975670SQ20061006390
公開日2007年6月6日 申請日期2006年11月15日 優(yōu)先權(quán)日2005年11月15日
發(fā)明者吳志雄, 蔡殷錫, 樸信奎 申請人:三星電子株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
河西区| 蚌埠市| 漳浦县| 宜良县| 广安市| 柘荣县| 获嘉县| 内乡县| 永安市| 松原市| 余干县| 公主岭市| 石河子市| 剑川县| 益阳市| 四会市| 来安县| 余姚市| 宁河县| 五莲县| 竹北市| 诏安县| 墨江| 大余县| 汕尾市| 郑州市| 大邑县| 清徐县| 分宜县| 麻城市| 夹江县| 中西区| 任丘市| 滕州市| 敖汉旗| 沙雅县| 枣阳市| 塔城市| 棋牌| 恩施市| 湖州市|