劉 鵬,趙 備,2,馬振國(guó)
(1.浙江大學(xué)生物醫(yī)學(xué)工程與儀器科學(xué)學(xué)院,杭州310027;2.杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院,杭州310027)
一種DSP實(shí)時(shí)動(dòng)態(tài)切換應(yīng)用程序的方法
劉 鵬1,趙 備1,2,馬振國(guó)1
(1.浙江大學(xué)生物醫(yī)學(xué)工程與儀器科學(xué)學(xué)院,杭州310027;2.杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院,杭州310027)
集群實(shí)時(shí)多任務(wù)要求數(shù)字信號(hào)處理器(DSP)能夠?qū)崟r(shí)動(dòng)態(tài)切換應(yīng)用程序。為此,在分析DSP自啟動(dòng)方式的基礎(chǔ)上,使用大容量Nor Flash作為自啟動(dòng)應(yīng)用程序的緩存,提出一種在CAN總線網(wǎng)絡(luò)中可為多DSP系統(tǒng)實(shí)時(shí)動(dòng)態(tài)切換應(yīng)用程序的方法。實(shí)驗(yàn)結(jié)果表明,有緩存機(jī)制的平均自啟動(dòng)時(shí)間明顯小于無緩存機(jī)制,且在緩存命中的條件下可提高集群內(nèi)DSP自啟動(dòng)的實(shí)時(shí)性。
數(shù)字信號(hào)處理器;CAN總線;自啟動(dòng);實(shí)時(shí);動(dòng)態(tài)切換
在以數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)為計(jì)算節(jié)點(diǎn)的高性能嵌入式計(jì)算集群中,為提高系統(tǒng)的可靠性和復(fù)用能力,需DSP節(jié)點(diǎn)能夠?qū)崟r(shí)切換不同的應(yīng)用程序[1]。在實(shí)際的DSP應(yīng)用系統(tǒng)中,需要將DSP系統(tǒng)的應(yīng)用程序和引導(dǎo)加載程序(Bootloader)做成自啟動(dòng)應(yīng)用程序(簡(jiǎn)稱為自啟動(dòng)程序),并存儲(chǔ)到Nor Flash中,在系統(tǒng)上電或復(fù)位時(shí)通過Bootloader程序?qū)lash中的應(yīng)用程序拷貝到DSP的高速存儲(chǔ)器中去執(zhí)行,完成系統(tǒng)的自啟動(dòng)并運(yùn)行應(yīng)用程序。對(duì)于DSP系統(tǒng)來說,切換應(yīng)用程序本質(zhì)是在DSP復(fù)位時(shí)選擇不同的自啟動(dòng)程序,即實(shí)現(xiàn)DSP的動(dòng)態(tài)加載自啟動(dòng)程序。
當(dāng)前關(guān)于DSP實(shí)現(xiàn)動(dòng)態(tài)加載的方法主要有2類:(1)從主機(jī)啟動(dòng)(HPI)方式動(dòng)態(tài)加載運(yùn)行程序[2-3];(2)通過串口、CAN等總線在線擦除和燒寫DSP自啟動(dòng)程序到Nor Flash中然后復(fù)位自啟動(dòng)[4-5]。前者需要專門的上位機(jī)和HPI連線,增加了DSP集群外圍的復(fù)雜性,后者需要燒寫Nor Flash,而Nor Flash特性是讀快寫慢,且兩者在每次動(dòng)態(tài)加載應(yīng)用程序時(shí)都需要從外部拷貝應(yīng)用程序到本地,存在數(shù)據(jù)傳輸?shù)臅r(shí)間延遲,不適合實(shí)時(shí)性要求較高的環(huán)境。
本文在分析了DSP自啟動(dòng)原理和CAN總線網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,結(jié)合Nor Flash容量遠(yuǎn)遠(yuǎn)大于DSP自啟動(dòng)應(yīng)用程序規(guī)模的狀況,提出了用DSP節(jié)點(diǎn)的Nor Flash作為對(duì)CAN總線網(wǎng)絡(luò)中所有自啟動(dòng)程序在本地的緩存空間的方法,并設(shè)計(jì)與之相適應(yīng)的NorFlash換頁和緩存機(jī)制,以及CAN總線網(wǎng)絡(luò)應(yīng)用層協(xié)議。
2.1 空間映射
本文選用TMS320C6701 DSP進(jìn)行說明,其他型號(hào)DSP大同小異。該DSP是TI公司推出的高性能通用32位浮點(diǎn)數(shù)字處理器,有32位地址總線,總的存儲(chǔ)器尋址空間為4 GB,對(duì)應(yīng)有2種映射模式,即map0和map1,片上集成32位外部存儲(chǔ)器接口(Extended M emory Interface,EM IF),將片外存儲(chǔ)器空間和片上外設(shè)存儲(chǔ)器空間分成4個(gè)時(shí)序可編程的空間,即CE0,CE1,CE2,CE3[6]。本文設(shè)計(jì)中將CE0映射到16 MB SDRAM空間,CE1映射到4 MB Flash空間,CE2映射到FPGA的地址空間,CE3保留不做映射。本文選用map1內(nèi)存映射模式,小端模式,通過EM IF從32 bit Flash自啟動(dòng),根據(jù)相應(yīng)規(guī)格手冊(cè)[7],將BOOTMODE[4:0]設(shè)置為11101。整個(gè)內(nèi)存空間映射如圖1所示。
圖1 DSP內(nèi)存空間映射
2.2 自啟動(dòng)流程
通常DSP提供了3種BOOT工作方式:非啟動(dòng)方式,從ROM啟動(dòng)方式,從主機(jī)啟動(dòng)方式[7]。本文采用從ROM啟動(dòng)方式,即從Nor Flash啟動(dòng)方式。當(dāng)DSP上電或復(fù)位時(shí),通過增強(qiáng)型直接內(nèi)存存?。‥nhanced Directed Memory Access,EDMA)方式以Flash默認(rèn)時(shí)序把CE1空間開始處的64 KB內(nèi)容拷貝到DSP地址0開始處的64 KB空間,即片內(nèi)數(shù)據(jù)存儲(chǔ)器IDRAM,這段內(nèi)容中含有Bootloader引導(dǎo)加載程序,然后Bootloader拷貝加載Flash中的應(yīng)用程序到相應(yīng)的地址空間,之后跳轉(zhuǎn)到初始化C語言運(yùn)行時(shí)環(huán)境的入口-c-init00處,完成初始化并運(yùn)行應(yīng)用程序,從而完成整個(gè)自啟動(dòng)流程[7-8]。整個(gè)過程如圖2所示。
圖2 自啟動(dòng)流程
由圖1 DSP內(nèi)存空間映射可知,CE1空間最大只能映射到4 MB Flash。自啟動(dòng)程序存儲(chǔ)在CE1空間中。若運(yùn)行其他自啟動(dòng)程序也需要將其映射到CE1空間,所以本文設(shè)計(jì)了CE1動(dòng)態(tài)映射機(jī)制,即Flash分頁方法。每個(gè)DSP節(jié)點(diǎn)本身原有一份自啟動(dòng)程序,若將其他DSP節(jié)點(diǎn)的自啟動(dòng)程序緩存到本地Flash其他區(qū)間并進(jìn)行管理,需要研究自啟動(dòng)程序的緩存策略以及定義CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議。
3.1 Flash分頁和分區(qū)
本文Flash選用2片256 M bit容量的Nor Flash,組成64 MB Flash。需要注意的是,該DSP的EM IF總線對(duì)于CE1空間,在寫操作時(shí)默認(rèn)將地址右移2位,所以每次寫都至少需要寫4個(gè)字節(jié)[7]。
CE1空間是4 MB,本文將一個(gè)4 MB稱為頁,64 MB的Flash可以分為64/4=16頁,需要FPGA提供額外的4個(gè)引腳作為頁選線,即FLASH-PAGE[3:0][9-10]。每個(gè)4 MB的頁,可以存儲(chǔ)一份DSP自啟動(dòng)程序。DSP EM IF、FPGA、Flash連接圖如圖3所示。
圖3 DSP EM IF,F(xiàn)PGA,F(xiàn)lash連接圖
圖3 中IO[57:54]即為Flash-PAGE[3:0],通過這4根頁選線,就可實(shí)現(xiàn)DSP CE1中Flash空間的動(dòng)態(tài)翻頁。選好某一頁后,給復(fù)位線一個(gè)復(fù)位脈沖,DSP復(fù)位自啟動(dòng),從復(fù)位前已經(jīng)選好的Flash頁空間中讀取自啟動(dòng)程序,從而實(shí)現(xiàn)應(yīng)用程序的實(shí)時(shí)切換。
當(dāng)需要的自啟動(dòng)程序不在本地Flash時(shí),需要從CAN網(wǎng)絡(luò)中載入相應(yīng)的自啟動(dòng)程序。為了區(qū)分DSP中原有的自啟動(dòng)程序和從CAN網(wǎng)絡(luò)中載入的自啟動(dòng)程序,將Flash中的程序空間劃分為:系統(tǒng)區(qū),用戶區(qū)和記錄區(qū)。
如圖4所示,系統(tǒng)區(qū)為Flash的第0頁,即Flash -PAGE[3:0]全為0,存儲(chǔ)通過Flash Burn工具燒寫的自啟動(dòng)程序。用戶區(qū)為Flash的除第0頁和最后一頁外的其他所有頁,存儲(chǔ)通過CAN網(wǎng)絡(luò)載入到本地的自啟動(dòng)程序。為了記錄Flash用戶區(qū)有哪些自啟動(dòng)程序,需要對(duì)CAN網(wǎng)絡(luò)中自啟動(dòng)程序進(jìn)行編號(hào)并將Flash中所有自啟動(dòng)程序的編號(hào)存儲(chǔ)到Flash的最后一頁,即Flash-PAGE[3:0]都為1,最后1頁稱為記錄區(qū)。本文采用自然數(shù)對(duì)自啟動(dòng)程序進(jìn)行編號(hào),使用Bootloader所在的64 KB空間的最后一個(gè)字節(jié)來存儲(chǔ)編號(hào),這樣可以標(biāo)識(shí)28=256種自啟動(dòng)程序。使用Flash Burn工具給每片DSP的Flash系統(tǒng)區(qū)燒寫自啟動(dòng)程序時(shí),需要在Flash的第0頁的第64 K個(gè)字節(jié)燒寫入該自啟動(dòng)程序的編號(hào)。
圖4 Flash分區(qū)
3.2 自啟動(dòng)程序的緩存策略
本文DSP Flash用戶空間可以存儲(chǔ)14種自啟動(dòng)程序,空間占滿后,當(dāng)要啟動(dòng)第15種自啟動(dòng)程序時(shí),需要從CAN網(wǎng)絡(luò)中載入該程序,這樣會(huì)覆蓋某個(gè)自啟動(dòng)程序。為保證應(yīng)用程序切換的實(shí)時(shí)性,需要設(shè)計(jì)相應(yīng)的Flash用戶區(qū)中自啟動(dòng)程序的緩存策略。
DSP Flash用戶區(qū)的自啟動(dòng)程序相當(dāng)于該DSP所在的CAN網(wǎng)絡(luò)空間中自啟動(dòng)程序(即所有其他DSP模塊的自啟動(dòng)程序)在本地的緩存,該結(jié)構(gòu)可類比于PC機(jī)中內(nèi)存是磁盤的緩存。因此,緩存策略和PC機(jī)的相似,主要有FIFO程序置換算法、最優(yōu)程序置換算法、LRU程序置換算法、基于計(jì)數(shù)的置換算法等[11-12]。其中簡(jiǎn)單有效的是FIFO程序置換算法和LRU程序置換算法。一般的PC機(jī)內(nèi)存緩沖策略都選用LRU算法[11]。與PC機(jī)模型不同的是,嵌入式系統(tǒng)為了提高實(shí)時(shí)性,需要減少對(duì)Flash的擦寫次數(shù),而LRU算法不論是否從CAN網(wǎng)絡(luò)中調(diào)入自啟動(dòng)程序,都需要擦寫Flash記錄區(qū)的內(nèi)容,且一般應(yīng)用場(chǎng)景下CAN總線網(wǎng)絡(luò)規(guī)模不是很大,自啟動(dòng)程序種類不是很多,緩存命中率也比較高,所以本文選用擦寫Flash次數(shù)相對(duì)比較少的FIFO程序置換算法。
FIFO程序置換算法的本質(zhì)是,為每個(gè)自啟動(dòng)程序記錄下載到Flash用戶區(qū)的時(shí)間,每當(dāng)需要置換某個(gè)程序時(shí),選擇已有的最舊的程序。該算法需要在Flash記錄區(qū)維護(hù)一個(gè)FIFO隊(duì)列來管理Flash用戶區(qū)中所有自啟動(dòng)程序編號(hào),當(dāng)需要的自啟動(dòng)程序直接在Flash中命中時(shí),F(xiàn)lash記錄區(qū)不需要任何擦寫,否則需要從CAN網(wǎng)絡(luò)中載入需要的自啟動(dòng)程序以及擦寫Flash記錄區(qū)內(nèi)容。整個(gè)FIFO程序置換過程如圖5所示。
圖5 FIFO程序置換過程
3.3 CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議
由于CAN總線協(xié)議規(guī)范只定義了開放式通信系統(tǒng)互聯(lián)參考模型(Open System Interconnection Reference M odel,OSI/RM)中的物理層和數(shù)據(jù)鏈路層[13-15],本文方案需要自定義應(yīng)用層的協(xié)議以實(shí)現(xiàn)DSP節(jié)點(diǎn)從CAN網(wǎng)絡(luò)調(diào)入自啟動(dòng)程序。
DSP節(jié)點(diǎn)從CAN網(wǎng)絡(luò)中調(diào)入自啟動(dòng)程序到本地Flash用戶區(qū),主要分為2個(gè)過程:(1)本節(jié)點(diǎn)向CAN網(wǎng)絡(luò)中發(fā)送尋求某編號(hào)自啟動(dòng)程序所在的DSP節(jié)點(diǎn)的can-id的廣播請(qǐng)求,并將得到的第一個(gè)請(qǐng)求的can-id作為遠(yuǎn)端節(jié)點(diǎn)can-id;(2)本節(jié)點(diǎn)向遠(yuǎn)端節(jié)點(diǎn)發(fā)送請(qǐng)求點(diǎn)對(duì)點(diǎn)傳輸該自啟動(dòng)程序的命令,且遠(yuǎn)端節(jié)點(diǎn)響應(yīng)該請(qǐng)求。
CAN網(wǎng)絡(luò)需要實(shí)現(xiàn)廣播通信和點(diǎn)對(duì)點(diǎn)通信。為了實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,必須有一個(gè)表示通信雙方身份信息的標(biāo)識(shí)符,即can-id,對(duì)于每個(gè)數(shù)據(jù)幀的標(biāo)識(shí)符,需要源節(jié)點(diǎn)can-id,目的節(jié)點(diǎn)can-id,還有請(qǐng)求應(yīng)答表示位,大的數(shù)據(jù)會(huì)分成多幀,需要對(duì)每個(gè)數(shù)據(jù)幀添加序號(hào)[16-17]。CAN協(xié)議的標(biāo)準(zhǔn)幀只有11位標(biāo)識(shí)符,不能滿足要求,本文采用擴(kuò)展幀,有29位標(biāo)識(shí)符。這29位標(biāo)識(shí)符的分配如圖6所示。
圖6 29位標(biāo)識(shí)符
節(jié)點(diǎn)can-id用8位表示,因?yàn)閏an協(xié)議規(guī)定每幀標(biāo)識(shí)符的最高7位不能全為1,所以can-id的表示范圍為0~253。目的節(jié)點(diǎn)can-id可以是一個(gè)具體的節(jié)點(diǎn)can-id,也可以是廣播can-id。由于總線仲裁時(shí),標(biāo)識(shí)符越小擁有越高的優(yōu)先級(jí)[9],因此本文選用can-id為0作為廣播can-id,以提高廣播的優(yōu)先級(jí)?!敖Y(jié)束”位表示本幀是最后一個(gè)幀?!罢?qǐng)求/應(yīng)答”位區(qū)分請(qǐng)求幀和應(yīng)答幀?!皫蛱?hào)”表示本幀在本次發(fā)送中的順序?!白詥?dòng)程序編號(hào)/Flash sector序號(hào)”在廣播數(shù)據(jù)幀中表示請(qǐng)求調(diào)入的自啟動(dòng)程序的編號(hào),在點(diǎn)對(duì)點(diǎn)數(shù)據(jù)幀中表示Flash sector序號(hào)?!按_認(rèn)”位表示接收者向發(fā)送者發(fā)送確認(rèn)消息。
本文選用一幀有8個(gè)字節(jié)。Flash的一個(gè)sector有128 KB,由于兩片F(xiàn)lash并在一起,因此是2個(gè)sector同時(shí)進(jìn)行擦寫,共有256 KB,需要215個(gè)幀,作為一個(gè)序列。每一個(gè)請(qǐng)求要求目的節(jié)點(diǎn)發(fā)送一個(gè)序列,一個(gè)最大4 MB的自啟動(dòng)程序,需要有16個(gè)請(qǐng)求,2 MB的自啟動(dòng)程序,需要有8個(gè)請(qǐng)求。
為了使節(jié)點(diǎn)同時(shí)支持廣播通信和點(diǎn)對(duì)點(diǎn)通信,將CAN濾波器設(shè)置為雙濾波器。一個(gè)濾波器支持廣播通信,即接收廣播幀;一個(gè)濾波器支持點(diǎn)對(duì)點(diǎn)通信,使節(jié)點(diǎn)接收“目的節(jié)點(diǎn)can-id”與本節(jié)點(diǎn)can-id相匹配的幀[16-17]。
類似于互聯(lián)網(wǎng)中HTTP協(xié)議的請(qǐng)求/應(yīng)答模型,在每個(gè)DSP的應(yīng)用程序中加入一個(gè)守護(hù)任務(wù),負(fù)責(zé)監(jiān)聽CAN網(wǎng)絡(luò)中要求自己傳輸自啟動(dòng)程序的請(qǐng)求。該任務(wù)設(shè)置較低的優(yōu)先級(jí),由DSP/BIOS scheduler負(fù)責(zé)調(diào)度,這樣的設(shè)置可以保證響應(yīng)廣播請(qǐng)求的DSP節(jié)點(diǎn)沒有在執(zhí)行繁重的任務(wù),有較多CPU資源來執(zhí)行接下來的點(diǎn)對(duì)點(diǎn)自啟動(dòng)程序的傳輸任務(wù)。整個(gè)自啟動(dòng)程序傳輸過程如圖7所示。
圖7 自啟動(dòng)程序傳輸過程
由于DSP自啟動(dòng)時(shí),整個(gè)C語言環(huán)境沒有建立,因此不能直接寫測(cè)量時(shí)間的函數(shù)。
DSP自啟動(dòng)時(shí),主要時(shí)間消耗在從Flash中拷貝自啟動(dòng)程序到IPRAM,IDRAM,SDRAM等空間。為簡(jiǎn)化,假定自啟動(dòng)程序都在2 MB大小。采用在DSP自啟動(dòng)完成后,拷貝2 MB Flash內(nèi)容到SDRAM來模擬自啟動(dòng)所消耗的時(shí)間。實(shí)驗(yàn)結(jié)果表明,平均消耗時(shí)間為0.2 s左右。通過自啟動(dòng)點(diǎn)燈實(shí)驗(yàn),秒表記錄自啟動(dòng)時(shí)間小于0.5 s。
從CAN網(wǎng)絡(luò)中載入自啟動(dòng)程序的消耗時(shí)間主要分為從CAN網(wǎng)絡(luò)中傳輸自啟動(dòng)程序的消耗時(shí)間和擦寫Flash空間的消耗時(shí)間。實(shí)驗(yàn)中使用2個(gè)DSP模塊組成簡(jiǎn)單的CAN網(wǎng)絡(luò)來測(cè)量相應(yīng)的消耗時(shí)間。多次測(cè)量消耗時(shí)間的平均值在11 s,其中從CAN網(wǎng)絡(luò)中傳輸2 MB自啟動(dòng)程序的總消耗時(shí)間平均在4 s左右,擦寫2 MB Flash的總消耗時(shí)間平均在7 s左右,擦寫128 KB,即1個(gè)sector,耗時(shí)約0.7 s。
根據(jù)以上得到的實(shí)驗(yàn)測(cè)量數(shù)據(jù),用符合正態(tài)分布的隨機(jī)數(shù)生成器來模擬實(shí)際應(yīng)用中整個(gè)CAN網(wǎng)絡(luò)環(huán)境下的DSP節(jié)點(diǎn)動(dòng)態(tài)切換應(yīng)用程序的場(chǎng)景,并進(jìn)行M atlab編程仿真。圖8是模擬有10種自啟動(dòng)程序的CAN網(wǎng)絡(luò)中,當(dāng)DSP節(jié)點(diǎn)有5頁緩存空間,即網(wǎng)絡(luò)中自啟動(dòng)程序數(shù)目的一半時(shí),隨機(jī)切換應(yīng)用程序50次在本地未命中的分布。1代表未命中,需要從CAN網(wǎng)絡(luò)中載入自啟動(dòng)程序,0代表命中,直接從本地自啟動(dòng),整個(gè)命中率接近70%。
圖8 緩存未命中分布
在有100種DSP自啟動(dòng)程序的CAN網(wǎng)絡(luò)中,隨著DSP節(jié)點(diǎn)Flash用戶區(qū)緩存頁數(shù)的增加,LRU程序置換算法與FIFO程序置換算法相比,多消耗的時(shí)間百分比的模擬結(jié)果如圖9所示。
圖9 多消耗時(shí)間百分比的模擬結(jié)果
當(dāng)Flash用戶區(qū)的頁數(shù)大于CAN網(wǎng)絡(luò)中自啟動(dòng)程序種類數(shù)目的70%時(shí),F(xiàn)IFO算法相較于LRU算法,對(duì)DSP自啟動(dòng)實(shí)時(shí)性提高的百分比呈幾何級(jí)數(shù)增長(zhǎng);當(dāng)Flash用戶區(qū)的頁數(shù)小于CAN網(wǎng)絡(luò)中自啟動(dòng)程序種類數(shù)目的50%時(shí),兩者相當(dāng);當(dāng)Flash用戶空間的頁數(shù)比CAN網(wǎng)絡(luò)中自啟動(dòng)程序種類的數(shù)目的一半稍多時(shí),F(xiàn)IFO算法稍差于LRU算法,但差別不明顯。所以本文選擇了FIFO程序置換算法作為Flash用戶區(qū)的緩存算法。
在有100種DSP自啟動(dòng)程序的CAN網(wǎng)絡(luò)中,選用FIFO緩存算法,隨著DSP節(jié)點(diǎn)Flash用戶區(qū)緩存頁數(shù)的增加,自啟動(dòng)所需時(shí)間與沒有緩存機(jī)制的自啟動(dòng)時(shí)間的百分比的模擬結(jié)果如圖10所示。當(dāng)Flash頁數(shù)為CAN網(wǎng)絡(luò)中自啟動(dòng)程序種類數(shù)目的50%時(shí),均攤后的平均自啟動(dòng)時(shí)間是沒有緩存機(jī)制的自啟動(dòng)時(shí)間的35%左右??梢婋S著Flash用戶區(qū)緩存頁數(shù)的增加,DSP節(jié)點(diǎn)自啟動(dòng)平均消耗時(shí)間下降,并基本呈線性下降關(guān)系,增加Flash用戶區(qū)頁數(shù)可以較顯著地提高DSP自啟動(dòng)的實(shí)時(shí)性。
圖10 自啟動(dòng)消耗時(shí)間隨緩存增加的變化結(jié)果
本文基于DSP的自啟動(dòng)機(jī)制和大容量Nor Flash,設(shè)計(jì)了一種在CAN總線網(wǎng)絡(luò)中可供DSP實(shí)時(shí)切換應(yīng)用程序的方法。實(shí)驗(yàn)及仿真結(jié)果表明,增加Nor Flash容量和采用FIFO程序置換算法,可明顯提高集群內(nèi)DSP自啟動(dòng)的實(shí)時(shí)性。今后將結(jié)合FIFO算法和LRU算法,進(jìn)一步優(yōu)化自啟動(dòng)程序緩存策略,使得不論緩存頁數(shù)目多少,緩存命中率都能達(dá)到最優(yōu)。
[1] 杜金榜,鐘小鵬,王躍科.多DSP并行處理系統(tǒng)的設(shè)計(jì)與開發(fā)[J].計(jì)算機(jī)測(cè)量與控制,2006,14(5):658-660.
[2] 趙建波,胡文若,習(xí) 勇,等.基于ARM的TMS320C6455 DSP HPI的動(dòng)態(tài)程序加載設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2013,39(6):14-16.
[3] 黃 飛,喬純捷,王躍科,等.網(wǎng)絡(luò)互聯(lián)型多DSP并行處理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2007,33(23):230-242.
[4] 李聲飛,代華山.基于串口通信的DSP程序動(dòng)態(tài)加載技術(shù)[J].電訊技術(shù),2011,51(6):121-124.
[5] Liu Dan,W ang Baorui.Design of Shared Bus DSP Board in Vector Network Analyzer[J].Measurement Science and Instrumentation,2013,4(4):317-320.
[6] Texas Instruments Incorporated.TMS320C6000 DSP External Memory Interface(EM IF)Reference Guide(spru266e)[EB/OL].(2008-04-01).http://www.ti. com/lit/ug/spru266e/spru266e.pdf.
[7] Texas Instruments Incorporated.Creating a Second-Level Bootloader for FLASH Bootloading on TMS320C6000 Platform With Code Composer Studio(spra999a)[EB/OL].(2006-05-01).http://www.ti.com/lit/an/spra999a/spra 999a.pdf.
[8] 徐 菲,劉同懷,黃 魯.基于Flash的TMS320V C5416 DSP系統(tǒng)自舉實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2006,28(4):68-70.
[9] 廖亞風(fēng),王正勇,何小海.基于DM 642的FLASH多頁加載方法研究與實(shí)現(xiàn)[J].四川大學(xué)學(xué)報(bào):自然科學(xué)版,2012,49(6):1269-1274.
[10] 李興友,游志勝.基于DM 642的大容量FLASH引導(dǎo)加載方法研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2005,25(8):1939-1941.
[11] Silberschatz A,Galvin P B,Gagne G.Operating System Concepts[M].[S.1.]:Johm Wiley&Sons,2005.
[12] Lee H,Bahn H,Shin K G.Page Repalcement for Writing References in NAND Flash Based Virtual Memory System s[J].Computing Science and Engineering,2014,8(3):157-172.
[13] 王邦繼,劉慶想,李相強(qiáng),等.CAN總線應(yīng)用層協(xié)議的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(20):14-16.
[14] 李曉靜,張侃諭.基于CAN總線的溫室群控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010,36(1):245-247.
[15] Guan Xiaochun,Wu Guichu,Chen Xiaojing.Design of Multi-DSP Communication System Based on CAN Bus[C]//Procedings of International Conference on Electrical and Control Engineering.Wuhan,China:[s.n.],2010:762-766.
[16] 董 珂,李克強(qiáng),馮能蓮,等.CAN總線技術(shù)及其在混合動(dòng)力電動(dòng)車上的應(yīng)用[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2003,43(8):1130-1133.
[17] 李源鴻,敖振浪.CAN總線實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信和群組廣播的方法[J].廣東氣象,2002(4):28-29.
編輯 索書志
A Method for DSP Real-time Dynamically Switching Application Program s
LIU Peng1,ZHAO Bei1,2,MA Zhenguo1
(1.School of Biomedical Engineering&Instrument Science,Zhejiang University,Hangzhou 310027,China;2.School of Computing,Hangzhou Dianzi University,Hangzhou 310027,China)
In order to meet the requirements of real-time multiple tasks,Digital Signal Processor(DSP)should have the ability to switch applications dynamically in real time.Based on the analysis of the boot mode of DSP,and using large volume Nor Flash as caches of self-boot applications,this paper gives a solution of timely switch applications for multi-DSP system that employs CAN as control bus.Experimental result shows that the average boot time with cache is much less than that without cache,and under the condition of cache hit,applications can be switched in real time using this solution.
Digital Signal Processor(DSP);CAN bus;boot;real-time;dynamic switch
劉 鵬,趙 備,馬振國(guó).一種DSP實(shí)時(shí)動(dòng)態(tài)切換應(yīng)用程序的方法[J].計(jì)算機(jī)工程,2015,41(11):84-88.
英文引用格式:Liu Peng,Zhao Bei,Ma Zhenguo.A Method for DSP Real-time Dynamically Switching Application Program s[J].Computer Engineering,2015,41(11):84-88.
1000-3428(2015)11-0084-05
A
TP399
10.3969/j.issn.1000-3428.2015.11.015
浙江省自然科學(xué)基金資助項(xiàng)目(Y1101336)。
劉 鵬(1990-),男,碩士研究生,主研方向:嵌入式計(jì)算,數(shù)字信號(hào)處理;趙 備、馬振國(guó),博士。
2014-11-24
2014-12-18 E-m ail:dp90219@gmail.com