專利名稱:嵌入式系統(tǒng)軟件加載裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng),特別的,涉及一種針對嵌入式控制與處理系統(tǒng)的軟件快速加載的裝置和方法。
本發(fā)明的核心思想如下在系統(tǒng)正常運(yùn)行的情況下,單板軟件是從主板上的BOOT Flash的BOOT區(qū)啟動(dòng)的。初始情況下,BOOT區(qū)中沒有任何版本,系統(tǒng)無法啟動(dòng)。此時(shí)將編程控制卡插到主板的編程卡接口上(該接口引出了主板CPU的控制線、數(shù)據(jù)線和地址線),編程卡上有兩塊BOOT芯片(BOOT芯片中一般存放的是系統(tǒng)引導(dǎo)、初始化程序,負(fù)責(zé)嵌入式系統(tǒng)的最小系統(tǒng)初始化與軟件版本的加載,即將大容量Flash中的程序拷貝至系統(tǒng)RAM中,并啟動(dòng)RAM內(nèi)的程序),BOOT1與BOOT2,其中BOOT1存放的是編程卡控制程序,由于控制程序比較簡短,整個(gè)程序可以放入BOOT1執(zhí)行;BOOT2存放的是調(diào)試好的主板的BOOT程序或軟件版本,BOOT1中的控制程序要將BOOT2中的數(shù)據(jù)寫入主板上的BOOTFlash(BOOT Flash為主板上的大容量Flash存儲(chǔ)芯片,它被分割為BOOT區(qū)與Program Memory區(qū),與一般的Flash芯片的空間分配不同,也不同于一般的小容量BOOT ROM)。上電后,主板上的編程卡控制邏輯就會(huì)把系統(tǒng)的初始控制權(quán)移交給編程控制卡,系統(tǒng)將從編程控制卡的BOOT1啟動(dòng),把位于卡上的BOOT2中的程序加載到主板BOOT Flash的BOOT區(qū)。同樣,對于軟件版本的加載操作與此類似。編程操作完成后,取下編程控制卡,重新上電主板即可從BOOT Flash引導(dǎo)并啟動(dòng)軟件版本。整個(gè)編程過程可通過擴(kuò)展后的編程卡上的指示燈表示(見圖6)。
本發(fā)明構(gòu)造了一種嵌入式系統(tǒng)軟件加載裝置,包括主板和編程卡;所述的主板包括嵌入式CPU、后臺(tái)接口、RAM、調(diào)試與外圍接口、BOOT Flash和編程卡接口;所述的嵌入式CPU通過所述的后臺(tái)接口接收數(shù)據(jù),數(shù)據(jù)從所述的嵌入式CPU送至所述的調(diào)試與外圍接口,經(jīng)所述調(diào)試與外圍接口對應(yīng)的其它器件處理后由所述后臺(tái)接口發(fā)送到背板。所述的編程卡接口接收嵌入式CPU的控制信號和數(shù)據(jù),進(jìn)行編程卡片選控制、通過所述的嵌入式CPU對所述的BOOTFlash進(jìn)行寫保護(hù)和模式譯碼;所述的編程卡包括BOOT1、BOOT2和連接器。通過所述的編程卡接口將所述嵌入式CPU的地址總線、數(shù)據(jù)總線、總線控制信號、片選信號連接至所述的BOOT1與所述的BOOT2;所述的編程卡接口還包括可編程邏輯器件CPLD(Complex ProgrammableLogic Device)和與編程卡連接的連接插座。所述的可編程邏輯器件CPLD進(jìn)行編程卡與主板的片選控制當(dāng)編程卡在位時(shí),所述可編程邏輯器件CPLD將主板上所述嵌入式CPU的BOOT片選信號指向所述編程卡上的BOOT1;當(dāng)編程卡不在位時(shí),所述的BOOT片選信號被指向主板上所述的BOOT Flash;所述可編程邏輯器件CPLD還對主板BOOT Flash的BOOT區(qū)進(jìn)行寫保護(hù)當(dāng)編程卡不在位時(shí),將屏蔽對主板BOOT Flash中BOOT區(qū)的寫操作;所述的BOOT Flash內(nèi)部空間分為BOOT區(qū)、隔離區(qū)和Program Memory區(qū)三個(gè)部分;所述的BOOT區(qū)大小由所述的編程卡接口CPLD中的寫保護(hù)功能確定;所述的隔離區(qū)大小也由編程卡接口CPLD的寫保護(hù)功能確定,余空間為所述的Program Memory區(qū);所述的CPLD包括片選控制邏輯和寫保護(hù)控制邏輯,所述的片選控制邏輯判斷當(dāng)前編程卡是否在位,如果在位,則將CS0信號連接至編程卡BOOT1;如果編程卡不在位,則為正常啟動(dòng)流程,CS0連接至主板BOOT Flash,主板由所述的BOOT Flash中的BOOT區(qū)啟動(dòng);所述的寫保護(hù)控制當(dāng)編程卡不在位時(shí),在邏輯中根據(jù)當(dāng)前模式及地址讀寫范圍,屏蔽對BOOT區(qū)的寫信號;所述的CPLD還包括模式譯碼邏輯,根據(jù)編程卡的模式撥碼開關(guān)設(shè)置實(shí)現(xiàn)多種工作模式的譯碼;所述的編程卡還包括大容量Flash,存放較大的軟件版本;撥碼開關(guān),設(shè)定三種工作模式BOOT下載模式,調(diào)試接口模式和軟件版本下載模式;編程指示LED,指示編程過程與編程結(jié)果;調(diào)試接口,接收由編程卡接口從主板引出的信號。
本發(fā)明還提出了一種嵌入式系統(tǒng)軟件加載方法,包括以下步驟1、判別工作模式,如果是調(diào)試接口模式,則轉(zhuǎn)步驟4,如果是軟件版本下載模式,則轉(zhuǎn)步驟3,否則判斷是BOOT下載模式;2、進(jìn)行BOOT下載,下載完畢后轉(zhuǎn)步驟5;
3、進(jìn)行軟件版本下載,轉(zhuǎn)步驟5;4、進(jìn)行接口調(diào)試,轉(zhuǎn)步驟9;5、校驗(yàn)下載數(shù)據(jù);6、判斷下載是否正確,如不正確則轉(zhuǎn)步驟8;7、標(biāo)記判斷正確,轉(zhuǎn)步驟9;8、標(biāo)記燒寫錯(cuò)誤;9、結(jié)束。
本發(fā)明提出的嵌入式系統(tǒng)軟件快速下載裝置和方法,只需在主板的邏輯中加入編程卡在位、工作模式以及片選控制的處理,使得編程卡簡單易行,可適用于任何嵌入式系統(tǒng)的BOOT、軟件版本的加載、升級。整個(gè)加載程序在主板嵌入式CPU中執(zhí)行,不需要PC與專用編程器,降低了生產(chǎn)成本,提高了效率。由于主板上不再采用插座連接小容量BOOT,也提高了系統(tǒng)的可靠性,同時(shí)由于大容量Flash Memory可以方便的配置為不同總線寬度,因而對于啟動(dòng)時(shí)總線寬度大于8位的嵌入式系統(tǒng)也是適用的。
圖1是現(xiàn)有的嵌入式系統(tǒng)(如PowerPC系列、MIPS系列、ARM系列)版本加載示意圖。板上存儲(chǔ)器件包括隨機(jī)存儲(chǔ)器RAM(Random Access Memory)、BOOT、Flash Memory等,其中BOOT一般采用小容量EEPROM芯片,程序采用編程器燒入,由于調(diào)試、BOOT改版等需要,該芯片需要經(jīng)常擦寫,故只能通過插座焊接到主板上。在BOOT引導(dǎo)后,由后臺(tái)或調(diào)試口下載軟件版本到板上大容量Flash。在板上不能對BOOT ROM芯片執(zhí)行寫操作,故無法對BOOT程序在線升級。由于現(xiàn)有的EEPROM芯片編程速度較Flash Memory慢得多,而且需要PC機(jī)與專用的編程器,這種方法存在諸如生產(chǎn)效率低、成本高等缺點(diǎn)。由于BOOT芯片需要采用插座連接到主板,增加了系統(tǒng)的不可靠性。另外,BOOT的總線寬度一般只能固定為8位,限制了系統(tǒng)的通用性,特別的,不適用于有些對于BOOT寬度大于8位的嵌入式CPU,如采用MPC7xx系列構(gòu)成的主從系統(tǒng)。(本方法通過對圖中A、B兩部分的改進(jìn),并提供了編程卡裝置,實(shí)現(xiàn)了現(xiàn)場快速軟件下載。)圖2是本發(fā)明所述的軟件快速加載裝置結(jié)構(gòu)圖。根據(jù)圖5所示,在系統(tǒng)主板上將主板的BOOT Flash分為兩個(gè)獨(dú)立的讀寫區(qū)域,將主板的BOOT程序與軟件版本分別放在BOOT Flash的這兩個(gè)區(qū)域中,從而避免采用傳統(tǒng)的小容量BOOT ROM+Flash Memory的結(jié)構(gòu),這種結(jié)構(gòu)采用連接器件將BOOT ROM連接至PCB(Printed Circuit Board),震動(dòng)與插座老化降低了系統(tǒng)的可靠性,更重要的,這種結(jié)構(gòu)無法進(jìn)行BOOT的在線升級。在本裝置中,主要包括主板和編程卡兩個(gè)部分,其中,主板包括嵌入式CPU、后臺(tái)接口、RAM、外圍接口、BOOTFlash和編程卡接口等部分,編程卡至少包括以下幾個(gè)部分BOOT1 ROM、BOOT2 ROM、連接器,其中BOOT1 ROM存儲(chǔ)編程卡的控制程序,BOOT2 ROM存儲(chǔ)主板的主板BOOT程序或軟件版本。編程卡上不帶CPU和電源,通過與主板的編程卡接口連接獲得電源與其它需要的信號,同時(shí)編程卡通過編程卡接口向主板給出模式設(shè)置信號(編程卡接口結(jié)構(gòu)見圖3所示)。主板上的嵌入式CPU執(zhí)行編程卡上BOOT1 ROM存儲(chǔ)的編程卡控制程序,自動(dòng)將BOOT2 ROM中的主板BOOT程序或軟件版本寫入主板上BOOT Flash不同的兩個(gè)區(qū)域,這樣,在生產(chǎn)過程中或工程現(xiàn)場版本更新時(shí),就無需PC監(jiān)控和專用編程器。從而實(shí)現(xiàn)BOOT的快速升級與版本的現(xiàn)場下載。而且由于主板上不再使用小容量BOOT芯片及插座,降低了主板成本,提高了可靠性。此外,由于大容量Flash可以方便的配置成不同總線寬度,因而可適用于非8位啟動(dòng)總線寬度的嵌入式CPU,大大增強(qiáng)了裝置的靈活性和通用型。
圖3是圖2中所述的主板上的編程卡接口結(jié)構(gòu)圖。該編程卡接口主要包括可編程邏輯器件CPLD和與編程卡連接的插接件。主要為編程卡提供數(shù)據(jù)總線、地址總線、片選控制以及主板BOOT Flash的寫保護(hù)。圖中,C部分為編程卡向編程卡接口提供的模式信息,由圖6中的撥碼開關(guān)完成;D部分為主板嵌入式CPU提供編程卡工作的各種信號。編程卡的電源由該接口提供。
圖4是圖3中CPLD完成的主要功能片選控制與寫保護(hù)邏輯的功能框圖。在邏輯芯片CPLD中主要完成如下功能片選控制,一般的嵌入式CPU中上電默認(rèn)片選為CS0,用于BOOT的片選。當(dāng)編程卡在位時(shí),嵌入式CPU將執(zhí)行編程卡BOOT1 ROM上的加載程序。由于與主板正常上電的程序入口不同,所以需由主板編程卡接口中的CPLD判斷當(dāng)前編程卡是否在位,如果在位,則將CS0信號連接至編程卡BOOT1 ROM。如果編程卡不在位,則為正常啟動(dòng)流程,CS0連接至主板BOOT Flash,主板由BOOT Flash啟動(dòng)。
寫保護(hù)控制,由于主板上的BOOT Flash是可讀寫的,當(dāng)編程卡不在位時(shí),為防止程序誤操作將BOOT區(qū)程序改寫,在邏輯中根據(jù)當(dāng)前模式及地址讀寫范圍,屏蔽對BOOT區(qū)的寫信號。如果當(dāng)前BOOT Flash的寫操作由CS0發(fā)起,且地址在BOOT Flash的BOOT區(qū)與隔離區(qū)以內(nèi),則由編程卡接口的CPLD屏蔽該次寫操作,從而保護(hù)主板BOOT Flash的BOOT區(qū)被非法改寫。
此外,根據(jù)圖6擴(kuò)展的編程卡結(jié)構(gòu),在CPLD中還實(shí)現(xiàn)了模式譯碼,根據(jù)編程卡的模式撥碼開關(guān)設(shè)置實(shí)現(xiàn)多種工作模式的譯碼,即BOOT ROM下載模式、Flash版本下載模式、調(diào)試模式等三種工作模式,具體情況參見圖7。
圖5是主板BOOT Flash的區(qū)間劃分與各區(qū)間的讀寫信號分配示意圖。與圖1中B部分Flash Memory相比,本方法將Flash Memory的內(nèi)部空間分為兩部分,即BOOT區(qū)與Program Memory區(qū),并根據(jù)編程卡在位信號對各區(qū)間的分配不同讀寫權(quán)限。BOOT區(qū)的大小可由主板編程卡接口CPLD中的寫保護(hù)功能確定。為防止編程時(shí)發(fā)生BOOT區(qū)與Program Memory地址重疊,在它們中間插入了隔離區(qū),該空間大小也由編程卡接口CPLD的寫保護(hù)功能確定,余下空間為Program Memory區(qū)。當(dāng)編程卡在位時(shí),主板上整個(gè)區(qū)間由CS3讀寫,此時(shí)CS0指向編程卡BOOT1;當(dāng)編程卡不在位時(shí),CS0指向主板Flash Memory,對于BOOT區(qū)與隔離區(qū),CS0只能進(jìn)行讀操作,對于Program Memory區(qū)間,可以進(jìn)行讀寫操作,該功能由編程卡接口中的CPLD完成,從而實(shí)現(xiàn)對主板BOOT Flash的BOOT區(qū)的硬件寫保護(hù)。
由圖2對編程卡進(jìn)行擴(kuò)展,得到圖6。圖6是本發(fā)明所述實(shí)施例的結(jié)構(gòu)圖。在圖6中對編程卡擴(kuò)展了大容量Flash,可以放入大的軟件版本,增加編程卡的適用性;增加了撥碼開關(guān),實(shí)現(xiàn)多種工作模式的選擇;增加了編程指示LED,用于指示編程過程與編程結(jié)果;還增加了調(diào)試接口,該調(diào)試接口信號由編程卡接口從主板引出,可供開發(fā)時(shí)使用。具體實(shí)現(xiàn)的時(shí)候有以下三個(gè)步驟第一步,對于圖6所示擴(kuò)展后的編程卡,需設(shè)置編程控制卡工作模式。編程控制卡有三種預(yù)留工作模式BOOT ROM下載模式、Flash版本下載模式、調(diào)試模式,模式設(shè)置由編程控制卡上的撥碼開關(guān)設(shè)置完成。BOOT ROM下載模式即通過主板CPU執(zhí)行編程卡BOOT1的控制程序?qū)⒆龊玫闹靼錌OOT程序(放入編程卡BOOT2中)快速寫入主板Flash Memory的BOOT區(qū)(主板BOOT Flash區(qū)域劃分見圖5)。Flash版本下載與BOOT ROM下載模式類似,不同的是它將編程卡存儲(chǔ)器上的軟件版本寫入主板BOOT Flash的Program Memory區(qū)。調(diào)試模式即通過編程卡提供調(diào)試接口,不執(zhí)行軟件下載操作,該模式在主板BOOT程序與軟件版本開發(fā)、調(diào)試時(shí)用,調(diào)試完成的BOOT程序與軟件版本可通過該模式下載到編程卡存儲(chǔ)器BOOT2,然后編程卡可以工作于BOOT ROM下載模式與Flash版本下載模式。第二步,連接編程控制卡,然后打開主板電源(編程控制卡電源由主板連接插座引入),主板通過連接插座得到編程控制卡在位指示以及編程卡工作模式后,主板的控制邏輯就會(huì)把系統(tǒng)的初始片選指向編程控制卡BOOT1所對應(yīng)的地址空間,而把主板上的BOOT Flash的片選指向系統(tǒng)中的另外一片地址空間,然后系統(tǒng)就會(huì)執(zhí)行編程卡上的加載程序,將編程卡上的BOOT2的程序或軟件版本下載到主板BOOT Flash相應(yīng)區(qū)域。第三步,等待編程控制卡上面的狀態(tài)指示燈的指示,直至單板軟件加載完畢。關(guān)閉電源,取下編程控制卡。版本更新完畢后,主板可脫離編程卡運(yùn)行。重新上電后,主板由BOOT Flash引導(dǎo)、啟動(dòng)。
圖7是本發(fā)明所述的編程卡工作方法流程圖。如果編程卡在位,則首先執(zhí)行編程卡上的控制程序。編程程序啟動(dòng)后,首先判斷編程卡工作模式,分別為BOOT下載模式該模式將編程板內(nèi)的BOOT程序?qū)懭胫靼錌OOT Flash中的BOOT區(qū),只有在該模式下才允許對BOOT區(qū)進(jìn)行寫操作;調(diào)試接口模式該模式提供了調(diào)試接口,用于將調(diào)試完成的BOOT、軟件版本下載到編程卡上的存儲(chǔ)區(qū);軟件版本下載模式該模式與BOOT下載模式類似,不同的是該模式將軟件版本下載到主板BOOT Flash中的Program Memory區(qū)。在下載操作完成后,校驗(yàn)編程數(shù)據(jù)是否正確,并做出相應(yīng)指示后,結(jié)束程序的執(zhí)行。
該編程卡結(jié)構(gòu)非常簡單,成本低廉,整個(gè)編程過程由主板嵌入式CPU完成,無需使用其它輔助儀器、設(shè)備,同時(shí),在主板上不再使用小容量BOOT ROM,降低了系統(tǒng)成本。將BOOT放入主板BOOT Flash后,通過編程卡解決了BOOT編程與軟件下載的問題,實(shí)現(xiàn)了BOOT程序的現(xiàn)場升級與軟件版本的快速下載。通過對主板BOOT Flash的不同配置,也可以實(shí)現(xiàn)不同數(shù)據(jù)總線寬度的BOOT引導(dǎo)方式。
權(quán)利要求
1.一種嵌入式系統(tǒng)軟件加載裝置,包括主板,其特征在于,還包括編程卡;所述的主板包括嵌入式CPU、后臺(tái)接口、RAM、調(diào)試與外圍接口、BOOT Flash和編程卡接口;所述的嵌入式CPU通過所述的后臺(tái)接口接收數(shù)據(jù),數(shù)據(jù)從所述的嵌入式CPU送至所述的調(diào)試與外圍接口,經(jīng)所述調(diào)試與外圍接口對應(yīng)的其它器件處理后由所述后臺(tái)接口發(fā)送到背板;所述的編程卡接口接收嵌入式CPU的控制信號和數(shù)據(jù),進(jìn)行編程卡片選控制、通過所述的嵌入式CPU對所述的BOOT Flash進(jìn)行寫保護(hù)和模式譯碼;所述的編程卡包括BOOT1、BOOT2和連接器;通過所述的編程卡接口將所述嵌入式CPU的地址總線、數(shù)據(jù)總線、總線控制信號、片選信號連接至所述的BOOT1與所述的BOOT2。
2.如權(quán)利要求1所述的嵌入式系統(tǒng)軟件加載裝置,其特征在于,所述的編程卡接口還包括可編程邏輯器件CPLD和與編程卡連接的連接插座;所述的可編程邏輯器件CPLD進(jìn)行編程卡與主板的片選控制當(dāng)編程卡在位時(shí),所述可編程邏輯器件CPLD將主板上所述嵌入式CPU的BOOT片選信號指向所述編程卡上的BOOT1;當(dāng)編程卡不在位時(shí),所述的BOOT片選信號被指向主板上所述的BOOT Flash;所述可編程邏輯器件CPLD還對主板BOOT Flash的BOOT區(qū)進(jìn)行寫保護(hù)當(dāng)編程卡不在位時(shí),將屏蔽對主板BOOT Flash中BOOT區(qū)的寫操作。
3.如權(quán)利要求1所述的嵌入式系統(tǒng)軟件加載裝置,其特征在于,所述的BOOTFlash內(nèi)部空間分為BOOT區(qū)、隔離區(qū)和Program Memory區(qū)三個(gè)部分;所述的BOOT區(qū)和所述的隔離區(qū)大小都由所述的編程卡接口CPLD中的寫保護(hù)功能確定,余下空間為所述的Program Memory區(qū)。
4.如權(quán)利要求1所述的嵌入式系統(tǒng)軟件加載裝置,其特征在于,所述的編程卡還包括大容量Flash,用于存放較大的軟件版本;撥碼開關(guān),用于設(shè)定三種工作模式BOOT下載模式、調(diào)試接口模式和軟件版本下載模式;編程指示LED,用于指示編程過程與編程結(jié)果;調(diào)試接口,用于接收由編程卡接口從主板引出的信號。
5.如權(quán)利要求2或4所述的嵌入式系統(tǒng)軟件加載裝置,其特征在于,所述的CPLD實(shí)現(xiàn)片選控制邏輯和寫保護(hù)控制邏輯,所述的片選控制邏輯判斷當(dāng)前編程卡是否在位,如果在位,則將CS0信號連接至編程卡BOOT1;如果編程卡不在位,則為正常啟動(dòng)流程,CS0連接至主板BOOT Flash,主板由所述的BOOT Flash中的Flash Memory啟動(dòng);所述的寫保護(hù)控制當(dāng)編程卡不在位時(shí),在邏輯中根據(jù)當(dāng)前模式及地址讀寫范圍,屏蔽對BOOT區(qū)的寫信號。
6.如權(quán)利要求5所述的嵌入式系統(tǒng)軟件加載裝置,其特征在于,所述的CPLD還實(shí)現(xiàn)模式譯碼邏輯,根據(jù)編程卡的模式撥碼開關(guān)設(shè)置實(shí)現(xiàn)多種工作模式的譯碼。
7.一種嵌入式系統(tǒng)軟件加載方法,包括以下步驟1)判別工作模式,如果是調(diào)試接口模式,則執(zhí)行步驟4),如果是軟件版本下載模式,則執(zhí)行步驟3),否則判斷是BOOT下載模式;2)進(jìn)行BOOT下載,下載完畢后執(zhí)行步驟5);3)進(jìn)行軟件版本下載,執(zhí)行步驟5);4)進(jìn)行接口調(diào)試,執(zhí)行步驟9);5)校驗(yàn)下載數(shù)據(jù);6)判斷下載是否正確,如不正確則執(zhí)行步驟8);7)標(biāo)記判斷正確,執(zhí)行步驟9);8)標(biāo)記燒寫錯(cuò)誤;9)結(jié)束。
全文摘要
本發(fā)明提出一種嵌入式系統(tǒng)軟件加載裝置,包括主板和編程卡,編程卡包括BOOT1、BOOT2和連接器件,BOOT1為編程卡的控制程序,BOOT2為主板的主板BOOT程序或軟件版本??ㄉ蟽H需要編程控制程序與需下載的軟件版本,通過編程卡接口上的連接插座與主板相連,利用主板上的嵌入式CPU執(zhí)行編程卡BOOT1上的編程控制程序,將編程卡BOOT2上的軟件版本或BOOT程序加載到主板上的BOOTFlash。通過設(shè)定編程控制卡的工作模式,可以實(shí)現(xiàn)BOOT程序、軟件版本等快速下載,還可以提供調(diào)試接口。在主板的BOOT Flash中按存儲(chǔ)內(nèi)容不同分為BOOT區(qū)與軟件版本區(qū),同時(shí)在BOOT區(qū)與軟件版本區(qū)插入了一定長度的隔離區(qū),防止BOOT區(qū)與軟件版本區(qū)發(fā)生重疊。本裝置通用性好,設(shè)置靈活,可適用于任何嵌入式系統(tǒng)的BOOT、軟件版本的加載、升級,系統(tǒng)的可靠性較高。
文檔編號G06F1/16GK1425963SQ0114266
公開日2003年6月25日 申請日期2001年12月11日 優(yōu)先權(quán)日2001年12月11日
發(fā)明者石松, 馬立軍, 鐘爽莉 申請人:深圳市中興通訊股份有限公司上海第二研究所