專利名稱:一種片上系統(tǒng)啟動(dòng)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式設(shè)備領(lǐng)域,尤其涉及一種SoC(System on Chip,片上系統(tǒng))啟動(dòng) 的方法和裝置。
背景技術(shù):
SoC是一種高度集成化、固件化的系統(tǒng)集成芯片。它是以應(yīng)用為中心,對(duì)功能、性 能、可靠性、成本、體積、功耗等綜合指標(biāo)嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng),它是包含完整的硬件 與軟件系統(tǒng),可以完成特定功能的微小型計(jì)算機(jī)系統(tǒng)。SoC主要由嵌入式處理器(CPU(Central Processing Unit,中央處理單元)或 DSP (Digital Signal Processing,數(shù)字信號(hào)處理))、存儲(chǔ)器、相關(guān)支撐硬件、嵌入式操作系 統(tǒng)及應(yīng)用軟件等組成,從狹義角度講,它是信息系統(tǒng)核心的芯片集成,是將系統(tǒng)關(guān)鍵部件集 成在一塊芯片上;從廣義角度講,SoC是一個(gè)微小型系統(tǒng)。SoC是由硬件與軟件兩部分組成,它的構(gòu)成可以是系統(tǒng)級(jí)芯片控制邏輯模塊、微處 理器/微控制器CPU內(nèi)核模塊、數(shù)字信號(hào)處理器DSP模塊、嵌入的存儲(chǔ)器模塊、和外部進(jìn)行 通訊的接口模塊、含有ADC(Analog to Digital Converter,模數(shù)轉(zhuǎn)換器)/DAC(Digital to Analog Converter,數(shù)模轉(zhuǎn)換器)的模擬前端模塊、電源提供和功耗管理模塊,對(duì)于一個(gè)無(wú) 線SoC還有射頻前端模塊、用戶定義邏輯以及微電子機(jī)械模塊,更重要的是一個(gè)SoC芯片內(nèi) 嵌有基本軟件模塊或可載入的用戶軟件等。SoC的軟件部分主要包括Boot loader,系統(tǒng)內(nèi)核和應(yīng)用軟件,并且在很多SoC軟 件系統(tǒng)中,系統(tǒng)內(nèi)核與應(yīng)用軟件視為一個(gè)整體密不可分。Boot loader是硬件系統(tǒng)加電或 復(fù)位后執(zhí)行的第一段代碼,它的主要任務(wù)包括初始化必要的硬件環(huán)境,裝載并執(zhí)行系統(tǒng)內(nèi) 核。SoC在上電或復(fù)位時(shí),通常會(huì)從一個(gè)特定的內(nèi)部地址開(kāi)始按固定的硬件邏輯加載 并開(kāi)始執(zhí)行代碼、或直接開(kāi)始執(zhí)行代碼,而這個(gè)地址處存放的就是系統(tǒng)的Boot loader程 序,由于在硬件設(shè)計(jì)完成流片之后,該代碼不可改變,我們亦稱該代碼為“固件”。現(xiàn)在的SoC —般都是將Boot loader代碼保存在固件中,當(dāng)SoC上電之后,通過(guò)某 一特定的接口從外部加載系統(tǒng)程序并執(zhí)行,通過(guò)這樣的方式來(lái)啟動(dòng)SoC,具體的SoC外接通 用啟動(dòng)設(shè)備的系統(tǒng)結(jié)構(gòu)圖如圖1所示。由于SoC芯片在流片后固件不可更改的特性,而該 固件在SoC的初始化與系統(tǒng)的加載過(guò)程中扮演了決定性的角色,一旦SoC的外部啟動(dòng)環(huán)境 (接口或設(shè)備)發(fā)生了改變,將直接導(dǎo)致SoC不能工作。因此,本領(lǐng)域需要一種更為靈活的 Boot loader 方法。
發(fā)明內(nèi)容
本發(fā)明提供一種片上系統(tǒng)啟動(dòng)的方法和裝置,用以解決現(xiàn)有技術(shù)中存在的片上系 統(tǒng)只能從固定的接口或設(shè)備以固定配置啟動(dòng)、一旦外界啟動(dòng)環(huán)境改變片上系統(tǒng)將無(wú)法啟動(dòng) 的問(wèn)題。
本發(fā)明的一種片上系統(tǒng)啟動(dòng)的方法,包括以下步驟步驟1、片上系統(tǒng)上電并啟動(dòng)初始引導(dǎo)程序后,枚舉所有可啟動(dòng)接口 ;步驟2、依次讀取每個(gè)啟動(dòng)接口的測(cè)試數(shù)據(jù),當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上啟動(dòng) 設(shè)備且該啟動(dòng)設(shè)備不唯一時(shí),從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟動(dòng)。其中,所述測(cè)試數(shù)據(jù)包括用以指示當(dāng)前接口是否已連接上啟動(dòng)設(shè)備的指示參數(shù)。具體的,所述測(cè)試數(shù)據(jù)還包括用以指示啟動(dòng)接口優(yōu)先級(jí)的優(yōu)先級(jí)參數(shù)。進(jìn)一步的,所述步驟2中,當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè) 備不唯一時(shí),依次檢測(cè)并獲取所有連接上啟動(dòng)設(shè)備的啟動(dòng)接口及其優(yōu)先級(jí)參數(shù),將其中優(yōu) 先級(jí)最高的接口作為啟動(dòng)接口,從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟動(dòng)。所述步驟2還包括當(dāng)檢測(cè)到枚舉的所有啟動(dòng)接口均未連接上啟動(dòng)設(shè)備時(shí),輸出 錯(cuò)誤信息。本發(fā)明還提供一種片上系統(tǒng)啟動(dòng)的裝置,包括接口枚舉模塊,用于在系統(tǒng)上電并啟動(dòng)初始引導(dǎo)程序后,枚舉所有可啟動(dòng)接口 ;啟動(dòng)接口獲取模塊,用于依次讀取每個(gè)啟動(dòng)接口的測(cè)試數(shù)據(jù),當(dāng)檢測(cè)到某個(gè)啟動(dòng) 接口已連接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè)備唯一時(shí),從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟 動(dòng)。其中,所述測(cè)試數(shù)據(jù)包括用以指示當(dāng)前接口是否已連接上啟動(dòng)設(shè)備的指示參數(shù)。所述測(cè)試數(shù)據(jù)還包括用以指示啟動(dòng)接口優(yōu)先級(jí)的優(yōu)先級(jí)參數(shù)。進(jìn)一步的,所述啟動(dòng)接口獲取模塊,還用于當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上啟動(dòng) 設(shè)備且該啟動(dòng)設(shè)備不唯一時(shí),依次檢測(cè)并獲取所有連接上啟動(dòng)設(shè)備的啟動(dòng)接口及其優(yōu)先級(jí) 參數(shù),將其中優(yōu)先級(jí)最高的接口作為啟動(dòng)接口,從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟 動(dòng)。所述啟動(dòng)接口獲取模塊,還用于當(dāng)檢測(cè)到枚舉的所有啟動(dòng)接口均未連接上啟動(dòng)設(shè) 備時(shí),輸出錯(cuò)誤信息。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明采用的方法取得了硬件與軟件通用性設(shè)計(jì)上的進(jìn)步,有效地降低了系統(tǒng)的 硬件成本和片上系統(tǒng)SoC成本,并且當(dāng)外界平臺(tái)發(fā)生變化,需要SoC以不同的接口及模式啟 動(dòng)的時(shí)候,在SoC芯片不重新流片、不修改固件版本、不作其它修改的前提下,能自動(dòng)地適 應(yīng)該需求,達(dá)到了 SoC集成時(shí)的更高適應(yīng)性及更廣的適應(yīng)范圍,提高了 SoC芯片啟動(dòng)及集成 時(shí)的適用性及健壯性,降低了系統(tǒng)的硬件成本與SoC成本,并有效地延長(zhǎng)了 SoC的有效生命 周期。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖進(jìn)行簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是 本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。圖1為現(xiàn)有技術(shù)中SoC外接通用啟動(dòng)設(shè)備的系統(tǒng)結(jié)構(gòu)圖;圖2為本發(fā)明提供的一種片上系統(tǒng)啟動(dòng)方法流程圖3為本發(fā)明實(shí)施例中提供的SoC外接可選啟動(dòng)設(shè)備的系統(tǒng)結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例提供的SoC枚舉啟動(dòng)設(shè)備流程圖;圖5為本發(fā)明實(shí)施例提供的又一 SoC枚舉啟動(dòng)設(shè)備流程圖;圖6為本發(fā)明實(shí)施例提供的又一 SoC外接可選啟動(dòng)設(shè)備的系統(tǒng)結(jié)構(gòu)圖;圖7為本發(fā)明實(shí)施例提供的SOC系統(tǒng)啟動(dòng)主體流程圖;圖8為本發(fā)明提供的一種片上系統(tǒng)啟動(dòng)裝置結(jié)構(gòu)圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。針對(duì)現(xiàn)有技術(shù)中SoC只能從固定的接口或設(shè)備以固定配置啟動(dòng),當(dāng)外界啟動(dòng)環(huán)境 一旦改變SoC將無(wú)法啟動(dòng)的問(wèn)題,本發(fā)明提供了一種片上系統(tǒng)啟動(dòng)的方法和裝置,使SoC能 自行枚舉SoC的多個(gè)接口嘗試啟動(dòng)接口或設(shè)備,通過(guò)枚舉行為,在SoC的外部啟動(dòng)環(huán)境(接 口或設(shè)備)發(fā)生了改變之后,SoC將枚舉有效的啟動(dòng)接口或設(shè)備,一旦枚舉成功,則從有效 的啟動(dòng)接口啟動(dòng),并采用多段式引導(dǎo)的方法,提高了 SoC啟動(dòng)的適應(yīng)性及靈活性,并且針對(duì) 不同的SoC集成平臺(tái)來(lái)配置不同的啟動(dòng)時(shí)硬件參數(shù)的方式,來(lái)優(yōu)化其啟動(dòng)性能。本發(fā)明并 不需要對(duì)外接的啟動(dòng)接口或設(shè)備本身作任何修改,同時(shí)也不需要修改任何SoC內(nèi)部硬件電 路即可實(shí)現(xiàn)。具體的,本發(fā)明提供的一種片上系統(tǒng)啟動(dòng)的方法,如圖2所示,包括以下步驟步驟S201、片上系統(tǒng)上電并啟動(dòng)初始弓I導(dǎo)程序后,枚舉所有可啟動(dòng)接口。步驟S202、依次讀取每個(gè)啟動(dòng)接口的測(cè)試數(shù)據(jù),當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上 啟動(dòng)設(shè)備且該啟動(dòng)設(shè)備唯一時(shí),從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟動(dòng)。其中,測(cè)試數(shù)據(jù)包括用以指示當(dāng)前接口是否已連接上啟動(dòng)設(shè)備的指示參數(shù)。該測(cè)試數(shù)據(jù)還可以包括用以指示啟動(dòng)接口優(yōu)先級(jí)的優(yōu)先級(jí)參數(shù)。具體的,該步驟還進(jìn)行以下操作當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè)備不唯一時(shí),依次檢測(cè)并獲 取所有連接上啟動(dòng)設(shè)備的啟動(dòng)接口及其優(yōu)先級(jí)參數(shù),將其中優(yōu)先級(jí)最高的接口作為啟動(dòng)接 口,從該接口加載后續(xù)的弓I導(dǎo)程序完成系統(tǒng)啟動(dòng)。當(dāng)檢測(cè)到枚舉的所有啟動(dòng)接口均未連接上啟動(dòng)設(shè)備時(shí),輸出錯(cuò)誤信息。本發(fā)明提供的方法,有效地降低了系統(tǒng)的硬件成本和SoC成本,并且當(dāng)外界平臺(tái) 發(fā)生變化,需要SoC以不同的接口及模式啟動(dòng)的時(shí)候,在SoC芯片不重新流片、不修改固件 版本、不作其它修改的前提下,能自動(dòng)地適應(yīng)該需求,達(dá)到了 SoC集成時(shí)的更高適應(yīng)性及更 廣的適應(yīng)范圍,提高了 SoC芯片啟動(dòng)及集成時(shí)的適用性及健壯性,降低了系統(tǒng)的硬件成本 與SoC成本,并有效地延長(zhǎng)了 SoC的有效生命周期。下面通過(guò)一較佳的實(shí)施例來(lái)詳細(xì)闡述本發(fā)明提供的片上系統(tǒng)啟動(dòng)的方法的具體 實(shí)現(xiàn)過(guò)程。圖3為本發(fā)明的SoC外接可選啟動(dòng)設(shè)備的系統(tǒng)結(jié)構(gòu)圖,如圖所示,該系統(tǒng)包括SoC芯片、啟動(dòng)設(shè)備和多個(gè)可選的啟動(dòng)接口,且該系統(tǒng)存儲(chǔ)有多個(gè)引導(dǎo)程序,分別存儲(chǔ)在SoC芯 片固件內(nèi)的第一引導(dǎo)模塊內(nèi)和啟動(dòng)設(shè)備中的第二引導(dǎo)模塊和第三引導(dǎo)模塊內(nèi)。其中,第一 弓I導(dǎo)模塊用于最初的SoC芯片的初始化,以及枚舉有效的可啟動(dòng)接口。優(yōu)選的,第一引導(dǎo)模塊枚舉啟動(dòng)接口的實(shí)施方式,如圖4所示,具體包括以下步 驟步驟S401、在系統(tǒng)上電啟動(dòng)之后,啟動(dòng)第一引導(dǎo)模塊內(nèi)的引導(dǎo)程序,該引導(dǎo)程序?qū)?硬件進(jìn)行必要的初始化。步驟S402、對(duì)所有的可啟動(dòng)接口進(jìn)行枚舉,并對(duì)當(dāng)前枚舉接口進(jìn)行必要的初始化 工作,其初始化工作也可以在步驟S401中一并進(jìn)行。步驟S403、讀取當(dāng)前枚舉接口的測(cè)試數(shù)據(jù)。其中,測(cè)試數(shù)據(jù)包括用以指示當(dāng)前接口是否已連接上啟動(dòng)設(shè)備的指示參數(shù),通過(guò) 判斷該指示參數(shù)是否有效來(lái)判定當(dāng)前接口是否連接上啟動(dòng)設(shè)備。指示參數(shù)有效表示從啟動(dòng) 設(shè)備讀取過(guò)來(lái)的真實(shí)數(shù)據(jù),表示當(dāng)前接口已連接上啟動(dòng)設(shè)備;指示參數(shù)無(wú)效表示當(dāng)前啟動(dòng) 接口的數(shù)據(jù)輸入線上默認(rèn)高電平或低電平,表示當(dāng)前接口沒(méi)有連接啟動(dòng)設(shè)備,而是處于懸 空狀態(tài)。在實(shí)際操作中,判斷測(cè)試數(shù)據(jù)內(nèi)的指示參數(shù)是否有效可以通過(guò)判斷指示位是否全 O或全1,或是符合某個(gè)特定的值,如果不是全O或全1,或符合某個(gè)特定的值,則判定當(dāng)前的 接口已經(jīng)連接上存儲(chǔ)設(shè)備且可從該接口啟動(dòng),否則,表示當(dāng)前接口沒(méi)有連接啟動(dòng)設(shè)備或非 啟動(dòng)設(shè)備,而是處于懸空狀態(tài)。步驟S404、分析讀取的測(cè)試數(shù)據(jù),判斷該測(cè)試數(shù)據(jù)內(nèi)的指示參數(shù)是否有效,若是, 則判定當(dāng)前的接口已經(jīng)連接上啟動(dòng)設(shè)備且可從該接口啟動(dòng),執(zhí)行步驟S405;否則執(zhí)行步驟 S406。步驟S405、從當(dāng)前枚舉的接口讀取第二引導(dǎo)模塊,繼續(xù)下一步的引導(dǎo)過(guò)程。步驟S406、判定當(dāng)前枚舉接口未連接上啟動(dòng)設(shè)備,該枚舉過(guò)程失敗。步驟S407、判斷是否存在未枚舉的接口,如果存在,枚舉下一啟動(dòng)接口,并返回步 驟S403 ;如果不存在,則代表所有的接口均不為啟動(dòng)接口,即均未與啟動(dòng)設(shè)備連接上,執(zhí)行 步驟S408。步驟S408、所有的接口已枚舉完畢,不存在可啟動(dòng)接口,啟動(dòng)失敗,輸出出錯(cuò)信息。如圖5所示,為第一引導(dǎo)模塊枚舉啟動(dòng)接口的又一實(shí)施方式,該實(shí)施方式所述的 片上系統(tǒng)外接可選啟動(dòng)設(shè)備的系統(tǒng)結(jié)構(gòu)圖如圖6所示,其中多個(gè)啟動(dòng)接口均連接有啟動(dòng)設(shè) 備,該實(shí)施方式枚舉啟動(dòng)接口的具體過(guò)程,包括以下步驟步驟S501、在系統(tǒng)上電啟動(dòng)之后,啟動(dòng)第一引導(dǎo)模塊內(nèi)的引導(dǎo)程序,并通過(guò)該引導(dǎo) 程序?qū)τ布M(jìn)行必要的初始化。步驟S502、清空啟動(dòng)接口隊(duì)列。該啟動(dòng)接口隊(duì)列用來(lái)保存所有已枚舉成功的可啟 動(dòng)接口以及讀取到的測(cè)試數(shù)據(jù)。步驟S503、對(duì)所有的可啟動(dòng)接口進(jìn)行枚舉,并對(duì)當(dāng)前的接口進(jìn)行必要的初始化工 作,其初始化工作也可以在步驟S501中一并進(jìn)行。步驟S504、讀取當(dāng)前枚舉接口的測(cè)試數(shù)據(jù)。其中,測(cè)試數(shù)據(jù)內(nèi)部包括判斷啟動(dòng)接口是否連接上啟動(dòng)設(shè)備的指示參數(shù)和表示該
6啟動(dòng)接口優(yōu)先級(jí)的優(yōu)先級(jí)參數(shù)。步驟S505、分析讀取的測(cè)試數(shù)據(jù),判斷其中啟動(dòng)接口的指示參數(shù)是否符合預(yù)設(shè)的 特征值,如果符合,表示該測(cè)試數(shù)據(jù)有效,判定出當(dāng)前的接口已經(jīng)連接上啟動(dòng)設(shè)備且可從該 接口啟動(dòng),執(zhí)行步驟S506 ;否則,表示該測(cè)試數(shù)據(jù)無(wú)效,執(zhí)行步驟S507。步驟S506、將該啟動(dòng)接口及其測(cè)試數(shù)據(jù)中的優(yōu)先級(jí)參數(shù)添加到啟動(dòng)接口隊(duì)列中, 執(zhí)行步驟S507。步驟S507、判斷所有的啟動(dòng)接口是否已枚舉完畢,如果尚有接口未被枚舉,繼續(xù)枚 舉下一啟動(dòng)接口,并轉(zhuǎn)向步驟S504,如果已枚舉完畢,則執(zhí)行步驟S508。步驟S508、判斷啟動(dòng)接口隊(duì)列是否為空,如果為空,表示沒(méi)有找到可以啟動(dòng)的接 口,轉(zhuǎn)向步驟S511,否則轉(zhuǎn)入步驟S509。步驟S509、從啟動(dòng)接口隊(duì)列中獲取優(yōu)先級(jí)最高的接口作為啟動(dòng)。步驟S510、從當(dāng)前的啟動(dòng)接口讀取第二引導(dǎo)模塊,繼續(xù)下一步的引導(dǎo)過(guò)程。步驟S511、所有的啟動(dòng)接口已枚舉完畢,不存在可啟動(dòng)接口,啟動(dòng)失敗,輸出出錯(cuò) fn息O下面詳細(xì)闡述本發(fā)明實(shí)施例中片上系統(tǒng)啟動(dòng)的整體流程,如圖7所示,具體包括 以下步驟步驟S701、在系統(tǒng)上電啟動(dòng)之后,首先執(zhí)行固件中第一引導(dǎo)模塊內(nèi)的引導(dǎo)程序,該 弓I導(dǎo)程序首先對(duì)硬件進(jìn)行必要的初始化。步驟S702、第一引導(dǎo)模塊開(kāi)始枚舉啟動(dòng)接口,并且尋找啟動(dòng)設(shè)備。該枚舉過(guò)程可以 根據(jù)具體啟動(dòng)設(shè)備的數(shù)量來(lái)進(jìn)行選擇執(zhí)行。步驟S703、當(dāng)獲取可啟動(dòng)接口之后,從該啟動(dòng)接口讀取第二弓I導(dǎo)模塊。步驟S704、讀取第二引導(dǎo)模塊完畢之后,對(duì)第二引導(dǎo)模塊進(jìn)行校驗(yàn),如果校驗(yàn)出 錯(cuò),輸出出錯(cuò)信息,并轉(zhuǎn)入步驟S703,或直接終止引導(dǎo);如果校驗(yàn)成功,則轉(zhuǎn)入步驟S705。步驟S705、執(zhí)行第二引導(dǎo)模塊,該模塊可能對(duì)SoC硬件進(jìn)行優(yōu)化,以提高其啟動(dòng)性 能,并且該模塊可重新修改其啟動(dòng)接口及相關(guān)配置,以更好地適應(yīng)特定平臺(tái)的需求。需要說(shuō)明的是,第二引導(dǎo)模塊可保存在SoC外部可改寫(xiě)或非改寫(xiě)儲(chǔ)存介質(zhì)上,由 廠商在客戶搭好芯片集成平臺(tái)之后,根據(jù)客戶的系統(tǒng)集成平臺(tái)修改其第二引導(dǎo)模板代碼, 再提供給客戶,以適應(yīng)客戶的集成平臺(tái)并提高其啟動(dòng)性能;但是修改不是絕對(duì)必要的,要視 客戶的集成環(huán)境的硬件是否與廠商設(shè)計(jì)時(shí)是否兼容、客戶是否滿足該啟動(dòng)性能而定。具體的,在現(xiàn)有的普遍實(shí)施方案中,為了使SOC產(chǎn)品能兼容較多的集成平臺(tái),特別 是在采用無(wú)固定存儲(chǔ)設(shè)備而由集成平臺(tái)提供啟動(dòng)數(shù)據(jù)的方案中,一般將SOC芯片的啟動(dòng)接 口的傳輸性能指標(biāo)(包括但不限于接口位寬、接口頻率等)定得較低,以達(dá)到能與較多型 號(hào)的集成平臺(tái)正常通訊的需要。這樣將導(dǎo)致SOC芯片在啟動(dòng)時(shí)需要花費(fèi)較多的傳輸時(shí)間; 并且為了讓不同版本的SOC系統(tǒng)及應(yīng)用程序代碼所有的數(shù)據(jù)均被讀入,現(xiàn)在的方案一般都 折衷采用讀取遠(yuǎn)遠(yuǎn)超過(guò)SOC系統(tǒng)及應(yīng)用程序代碼長(zhǎng)度的數(shù)據(jù)的方式來(lái)達(dá)到目的,這樣將使 SOC芯片在啟動(dòng)時(shí)浪費(fèi)較多的傳輸時(shí)間。本發(fā)明的第二引導(dǎo)模塊是儲(chǔ)存在非固件中的,是 根據(jù)不同的客戶集成平臺(tái)修改的,在被第一引導(dǎo)模塊載入后并運(yùn)行后,將根據(jù)該客戶集成 平臺(tái)的特性對(duì)SOC芯片重新進(jìn)行配置,該配置將在保證數(shù)據(jù)傳輸?shù)恼_性的前提下最大可 能地提高SOC芯片啟動(dòng)接口的傳輸性能;并且只讀取SOC系統(tǒng)及應(yīng)用程序本身長(zhǎng)度的數(shù)據(jù);這樣將大大減少啟動(dòng)接口上的數(shù)據(jù)傳輸時(shí)間,提高SOC的啟動(dòng)速度并減少了客戶集成平臺(tái) 的相應(yīng)操作時(shí)間。更進(jìn)一步地,可以在第二引導(dǎo)模塊(也可以是第三引導(dǎo)模塊)中集成解 壓縮模塊,對(duì)接收到的數(shù)據(jù)進(jìn)行解壓縮處理,這將進(jìn)一步減少啟動(dòng)接口上的數(shù)據(jù)傳輸時(shí)間。步驟S706、第二引導(dǎo)模塊按新的配置讀取第三引導(dǎo)模塊。步驟S707、讀取第三引導(dǎo)模塊完畢之后,對(duì)第三引導(dǎo)模塊進(jìn)行校驗(yàn),如果校驗(yàn)出 錯(cuò),輸出出錯(cuò)信息,并轉(zhuǎn)入步驟S706,或直接終止引導(dǎo);如果校驗(yàn)成功,則轉(zhuǎn)入步驟S708。步驟S708、執(zhí)行第三引導(dǎo)模塊,且從第三引導(dǎo)模塊讀取系統(tǒng)及應(yīng)用程序代碼。其 中,第三引導(dǎo)模塊模塊可能包括調(diào)試所用的樁程序、仿真器所用模塊、網(wǎng)絡(luò)支持模塊、復(fù)雜 輸出模塊,以及系統(tǒng)及應(yīng)程序的裝載模塊、解壓模塊等復(fù)雜功能。步驟S709、讀取系統(tǒng)及應(yīng)用程序代碼完畢后,由第三引導(dǎo)模塊對(duì)其進(jìn)行校驗(yàn),如 果校驗(yàn)出錯(cuò),輸出出錯(cuò)信息,轉(zhuǎn)入步驟S708,或直接終止引導(dǎo)。如果校驗(yàn)成功,則轉(zhuǎn)入步驟 S710。步驟S710、該步驟為可選步驟,針對(duì)系統(tǒng)及應(yīng)用程序代碼被壓縮的情況,解壓已校 驗(yàn)的系統(tǒng)及應(yīng)用程序代碼,將其移動(dòng)到指定的位置。步驟S711、第三引導(dǎo)模塊將控制權(quán)交出,開(kāi)始執(zhí)行系統(tǒng)及應(yīng)用程序,完成了整個(gè)啟 動(dòng)過(guò)程。本發(fā)明提供的SoC啟動(dòng)的方法,取得了硬件與軟件通用性設(shè)計(jì)上的進(jìn)步,有效地 降低了系統(tǒng)的硬件成本和SoC成本,并且當(dāng)外界平臺(tái)發(fā)生變化,需要SoC以不同的接口及模 式啟動(dòng)的時(shí)候,在SoC芯片不重新流片、不修改固件版本、不作其它修改的前提下,能自動(dòng) 地適應(yīng)該需求,達(dá)到了 SoC集成時(shí)的更高適應(yīng)性及更廣的適應(yīng)范圍,提高了 SoC芯片啟動(dòng)及 集成時(shí)的適用性及健壯性,降低了系統(tǒng)的硬件成本與SoC成本,并有效地延長(zhǎng)了 SoC的有效 生命周期。本發(fā)明還提供一種片上系統(tǒng)啟動(dòng)的裝置,如圖8所示,包括接口枚舉模塊810,用于在系統(tǒng)上電并啟動(dòng)初始引導(dǎo)程序后,枚舉所有可啟動(dòng)接 Π ;啟動(dòng)接口獲取模塊820,用于依次讀取每個(gè)啟動(dòng)接口的測(cè)試數(shù)據(jù),當(dāng)檢測(cè)到某個(gè)啟 動(dòng)接口已連接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè)備唯一時(shí),從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟 動(dòng)。其中,測(cè)試數(shù)據(jù)包括用以指示當(dāng)前接口是否已連接上啟動(dòng)設(shè)備的指示參數(shù)。該測(cè)試數(shù)據(jù)還可以包括用以指示啟動(dòng)接口優(yōu)先級(jí)的優(yōu)先級(jí)參數(shù)。 進(jìn)一步的,啟動(dòng)接口獲取模塊820,還用于當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上啟動(dòng)設(shè) 備且該啟動(dòng)設(shè)備不唯一時(shí),依次檢測(cè)并獲取所有連接上啟動(dòng)設(shè)備的啟動(dòng)接口及其優(yōu)先級(jí)參 數(shù),將其中優(yōu)先級(jí)最高的接口作為啟動(dòng)接口,從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟動(dòng)。啟動(dòng)接口獲取模塊820,還用于當(dāng)檢測(cè)到枚舉的所有啟動(dòng)接口均未連接上啟動(dòng)設(shè) 備時(shí),輸出錯(cuò)誤信息。本發(fā)明提供的裝置,有效地降低了系統(tǒng)的硬件成本和SoC成本,并且當(dāng)外界平臺(tái) 發(fā)生變化,需要SoC以不同的接口及模式啟動(dòng)的時(shí)候,在SoC芯片不重新流片、不修改固件 版本、不作其它修改的前提下,能自動(dòng)地適應(yīng)該需求,達(dá)到了 SoC集成時(shí)的更高適應(yīng)性及更 廣的適應(yīng)范圍,提高了 SoC芯片啟動(dòng)及集成時(shí)的適用性及健壯性,降低了系統(tǒng)的硬件成本與SoC成本,并有效地延長(zhǎng)了 SoC的有效生命周期。 顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
一種片上系統(tǒng)啟動(dòng)的方法,其特征在于,包括以下步驟步驟1、片上系統(tǒng)上電并啟動(dòng)初始引導(dǎo)程序后,枚舉所有可啟動(dòng)接口;步驟2、依次讀取每個(gè)啟動(dòng)接口的測(cè)試數(shù)據(jù),當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè)備唯一時(shí),從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟動(dòng)。
2.如權(quán)利要求1所述的方法,其特征在于,所述測(cè)試數(shù)據(jù)包括用以指示當(dāng)前接口是否 已連接上啟動(dòng)設(shè)備的指示參數(shù)。
3.如權(quán)利要求2所述的方法,其特征在于,所述測(cè)試數(shù)據(jù)還包括用以指示啟動(dòng)接口優(yōu) 先級(jí)的優(yōu)先級(jí)參數(shù)。
4.如權(quán)利要求3所述的方法,其特征在于,所述步驟2中,當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連 接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè)備不唯一時(shí),依次檢測(cè)并獲取所有連接上啟動(dòng)設(shè)備的啟動(dòng)接口及 其優(yōu)先級(jí)參數(shù),將其中優(yōu)先級(jí)最高的接口作為啟動(dòng)接口,從該接口加載后續(xù)的引導(dǎo)程序完 成系統(tǒng)啟動(dòng)。
5.如權(quán)利要求1所述的方法,其特征在于,所述步驟2還包括當(dāng)檢測(cè)到枚舉的所有啟動(dòng)接口均未連接上啟動(dòng)設(shè)備時(shí),輸出錯(cuò)誤信息。
6. 一種片上系統(tǒng)啟動(dòng)的裝置,其特征在于,包括接口枚舉模塊,用于在系統(tǒng)上電并啟動(dòng)初始引導(dǎo)程序后,枚舉所有可啟動(dòng)接口 ;啟動(dòng)接口獲取模塊,用于依次讀取每個(gè)啟動(dòng)接口的測(cè)試數(shù)據(jù),當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口 已連接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè)備唯一時(shí),從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟動(dòng)。
7.如權(quán)利要求6所述的裝置,其特征在于,所述測(cè)試數(shù)據(jù)包括用以指示當(dāng)前接口是否 已連接上啟動(dòng)設(shè)備的指示參數(shù)。
8.如權(quán)利要求7所述的裝置,其特征在于,所述測(cè)試數(shù)據(jù)還包括用以指示啟動(dòng)接口優(yōu) 先級(jí)的優(yōu)先級(jí)參數(shù)。
9.如權(quán)利要求8所述的裝置,其特征在于,所述啟動(dòng)接口獲取模塊,還用于當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè) 備不唯一時(shí),依次檢測(cè)并獲取所有連接上啟動(dòng)設(shè)備的啟動(dòng)接口及其優(yōu)先級(jí)參數(shù),將其中優(yōu) 先級(jí)最高的接口作為啟動(dòng)接口,從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟動(dòng)。
10.如權(quán)利要求6所述的裝置,其特征在于,所述啟動(dòng)接口獲取模塊,還用于當(dāng)檢測(cè)到枚舉的所有啟動(dòng)接口均未連接上啟動(dòng)設(shè)備 時(shí),輸出錯(cuò)誤信息。
全文摘要
本發(fā)明公開(kāi)了一種片上系統(tǒng)啟動(dòng)的方法和裝置,該方法包括片上系統(tǒng)上電并啟動(dòng)初始引導(dǎo)程序后,枚舉所有可啟動(dòng)接口;依次讀取每個(gè)啟動(dòng)接口的測(cè)試數(shù)據(jù),當(dāng)檢測(cè)到某個(gè)啟動(dòng)接口已連接上啟動(dòng)設(shè)備且該啟動(dòng)設(shè)備唯一時(shí),從該接口加載后續(xù)的引導(dǎo)程序完成系統(tǒng)啟動(dòng)。所述裝置包括接口枚舉模塊和啟動(dòng)接口獲取模塊。本發(fā)明提供的方法解決了現(xiàn)有技術(shù)中存在的片上系統(tǒng)只能從固定的接口或設(shè)備以固定配置啟動(dòng)、一旦外界啟動(dòng)環(huán)境改變片上系統(tǒng)將無(wú)法啟動(dòng)的問(wèn)題。
文檔編號(hào)G06F9/445GK101930373SQ20091014776
公開(kāi)日2010年12月29日 申請(qǐng)日期2009年6月19日 優(yōu)先權(quán)日2009年6月19日
發(fā)明者翁云峰 申請(qǐng)人:中興通訊股份有限公司