《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 多核DSP的BootLoader程序的實現

多核DSP的BootLoader程序的實現

2008-09-09
作者:劉 慧 林海虹 劉 智

  摘? 要: TI的大多數DSP芯片。內部都有片內掩模的BootLoader程序,用于將用戶程序通過片外EPROM、串口或I/O口裝載到片內高速RAM中,以保證用戶程序能夠高速運行。介紹了BootLoader程序的多種工作方式" title="工作方式">工作方式,并以雙核" title="雙核">雙核DSP——TMS320VC5421為例詳細闡述了多核" title="多核">多核DSP的16位并行EPROM的BootLoader程序的實現。

  關鍵詞: TMS320VC5421? BootLoader? 上電" title="上電">上電自舉

?

  DSP芯片的BootLoader程序用于實現用戶程序上電自舉" title="自舉">自舉,它有多種工作方式。上電自舉就是將用戶存放在片外的非易失性、慢速的存儲器中的程序裝載到片內易失的、高速的存儲空間中,以保證用戶程序在DSP核內的高速運行。

  多核DSP是指由多個獨立的DSP子核集成的DSP芯片,且所有DSP子核共享一套片外總線。由于每個DSP子核內部都有其自身獨立的掩模BootLoader程序,當DSP芯片上電或復位時,所有DSP子核都將自行啟動自身獨立的BootLoader程序,實現用戶程序的上電自舉。所以,多核DSP的BootLoader程序的實現方法與單核DSP的BootLoader程序的實現方法有較大的差異。為此,本文立足于實踐,以雙核DSP—TMS320VC5421的16位并行EPROM的BootLoader程序的工作方式為例,詳細闡述了多核DSP的BootLoader程序的實現方法。

1 BootLoader程序簡介

1.1 BootLoader程序的四種工作方式

  一般的DSP都采用常見的BootLoader程序工作方式來實現用戶程序的上電自舉:

????·處理器通信口(主端口)HPI方式——通過DSP芯片與PC機或DSP芯片與其它DSP芯片之間的主機通信端口實現上電自舉;

  ·8位或16位并行EPROM方式——通過DSP內核的DMA通道實現上電自舉;

  ·8位或16位并行I/O方式——通過DSP芯片的片外并行I/O接口實現上電自舉;

  ·8位或16位串行口方式——通過DSP芯片的串行端口實現上電自舉。

  在以上四種工作方式中,最常用的是16位并行EPROM方式。即在DSP芯片上電或復位時,通過DMA通道將存儲在核外EPROM中的程序以16位形式存儲到核內的程序空間中。

1.2 16位并行EPROM方式的Boot表

  各種方式的BootLoader程序都有其固定格式的Boot表,用來實現用戶程序的上電自舉。16位并行EPROM方式的Boot表如表1所示。表中的第1表項存放BootLoader程序工作方式控制字,用于DSP芯片上電或復位時確認該Boot表是否為16位并行EPROM工作方式的Boot表。該表項內容為10AAH,表示DSP內核認為該Boot表是16位并行EPROM工作方式的BootLoader程序的Boot表;否則DSP內核認為該Boot表不是16位并行EPROM的方式的Boot表;第2表項存放DSP特殊寄存器SWWSR在上電或復位時被賦予的初始化數值;第3表項存放DSP特殊寄存器BSCR在上電或復位時被賦予的初始化數值;第4表項存放用戶程序將要被存放在DSP核內程序空間的頁地址;第5表項存放用戶程序將要被存放到DSP核內程序空間的頁內偏移地址;從第6表項開始依次存放用戶程序第m段代碼的長度N。用戶程序第m段代碼將要被存放到DSP核內程序空間的頁地址,用戶程序第m段代碼將要被存放到DSP核內程序空間的頁內偏移地址,用戶程序第m段代碼的第1個字,第2個字,……,第N個字;Boot表的最后表項存放Boot表結束字0000H,表示Boot表到此結束。因此DSP內核要實現BootLoader程序,在上電復位后首先要申請到片外數據、地址總線的控制權,然后再根據Boot表完成用戶程序上電自舉過程。

?

?

1.3 16位并行EPROM工作方式Boot表的生成

  所有BootLoader程序所需的Boot表的數據結構都是通過執行包含-v548參數的鏈接命令和Hex500轉換命令的程序形成的。在鏈接過程中確定用戶程序和數據的存放地址,在Hex500轉換過程中定義BootLoader程序的工作方式和用戶程序執行的入口地址等。

  為了生成16位并行EPROM方式的Boot表,首先,在鏈接程序時必須設置-v548選項;然后使用TI公司DSP開發工具自帶的HEX500.EXE文件,根據用戶的COFF格式的代碼生成Boot表中的相應內容。

  HEX500.EXE可執行文件一般使用以下幾種參數:

  (1) *.out : 用戶的COFF格式的程序;

  (2) -e?? : 確定用戶程序的入口點;

  (3) -a?? : 以ASCII形式,根據用戶的*.out文件輸出對應的HEX文件;

  (4) -boot: 實現用戶程序的裝載;

  (5) -bootorg : 確定生成哪種形式的Boot表;

  (6) -memwidth: 確定引導方式的位數;

  (7) -O *.hex : 輸出的HEX文件的名稱。

  例如:

  hex500 ti.out? /*根據ti.out文件生成Boot表*/

  -e 0x4000????? /*用戶程序的入口點為0x4000*/

  -a???????????? /*以ASCII形式輸出HEX文件*/

  -boot????????? /*裝載用戶的程序ti.out*/

  -bootorg PARALLEL

???????????????????/*生成并行EPROM方式的Boot表*/

  -memwidth 16?? /*生成16位的Boot表*/

  -o ti.hex??????/*生成的HEX文件名為ti.hex*/

  執行完該HEX500.EXE命令后,系統會創建一個文件名為ti.hex的ASCII文件,然后用戶根據ti.hex文件內容對EPROM進行編程就能產生上述的16位并行EPROM工作方式的Boot表。

2 多核DSP的BootLoader程序的實現

  目前TI公司已經不再局限于生產單核DSP。為了提高用戶程序運行的效率,TI公司又推出了2核、4核等多核DSP。在實現多核DSP上電自舉時,每一個子核都需要申請片外總線的控制權。對于單核DSP而言,只有一個DSP內核,對應一個BootLoader程序,DSP核可以永遠擁有片外總線的控制權。但對于多核DSP而言,由于只有一套片外總線,所以片外總線的控制權不允許也不可能永遠被其中的某一個DSP子核所擁有。因此,多核DSP需要片外總線仲裁機制,以避免片外總線沖突。

  下面以雙核DSP—TMS320VC5421的16位并行EPROM方式的BootLoader程序實現過程為例,詳細闡述多核DSP的BootLoader程序的實現。

2.1 TMS320VC5421結構簡介

  TMS320VC5421 16位定點雙核DSP,它集中了早期TMS320C54X系列DSP的優點,并提供了許多新的功能。其內部結構與TMS320C54X系列的其它款式DSP有很大的不同,其簡單結構框圖如圖1所示。

?

?

  由于每個DSP子核的工作頻率是100MHz,所以它的工作速率可達到200MIPS,且它的每一個DSP子核都具備單核DSP(如TMS320VC5402)的所有特性。

2.2 TMS320VC5421的16位并行EPROM工作方式的BootLoader程序的選擇

  TMS320VC5421的兩個DSP子核在DSP芯片上電或復位時,能否啟動各自的BootLoader程序以完成上電自舉功能,是由每個子核自身的XIO和GPIO0/ROMEN兩個管腳決定的。在DSP芯片上電或復位時,每個DSP子核自動檢測自身的XIO和GPIO0/ROMEN兩個管腳,如果對應的XIO和GPIO0/ROMEN兩個管腳都為高電平,則啟動自身的BootLoader程序完成用戶程序的上電自舉。

  每個DSP子核啟動BootLoader程序后,采用哪一種BootLoader程序的工作方式是由各自的GPIO1管腳的狀態和各自以DMA方式從核外數據空間0000H地址單元讀入的數據決定的:檢測GPIO1管腳,如果GPIO1管腳為高電平,則采用串行口EEPROM的BootLoader工作方式,否則采用并行EPROM的BootLoader工作方式。若DSP子核的DMA通道讀入核外數據空間0000H單元中的數據為10AAH,則采用16位并行EPROM的BootLoader工作方式;若讀入的數據為xx08H或xxAAH,則采用8位并行EPROM的BootLoader工作方式。否則將重新判斷GPIO1管腳的電平,進入死循環。

2.3 TMS320VC5421的BootLoader程序片外總線沖突的解決

  DSP核的BootLoader程序總是在DSP核上電或復位時啟動,且一啟動BootLoader程序,對應的DSP核就要申請核外的總線控制權。因此為了避免多核DSP的各個DSP子核啟動BootLoader程序時引起的片外總線沖突,可通過控制每個DSP子核的復位過程,使每個DSP子核在不同的時間內啟動自身的BootLoader程序來解決片外總線沖突的問題。

  為了實現兩個DSP子核復位過程的分離,應采用如圖2所示的DSP子核復位過程控制方法。

?

  由于TMS320VC5421中A核擁有倍頻的鎖相環電路,所以首先復位A核,啟動A核的BootLoader程序,實現A核的用戶程序上電自舉。然后再由A核的用戶程序控制B核的復位過程,啟動B核的BootLoader程序,實現B核的用戶程序上電自舉。

  在A核的BootLoader程序執行完后,A核就會執行自身的用戶程序代碼。A核的用戶程序代碼釋放片外總線的控制權,并且控制B核的復位管腳,促使B核啟動自身的BootLoader程序。如果此時A核中的用戶代碼又申請片外總線控制權或正在使用片外總線,就會造成片外總線沖突。解決此沖突的辦法有如下兩個:

  ·粗略估計B核的BootLoader程序執行時間,在A核的有效程序代碼前加一個延遲程序。

  ·在A核的有效程序代碼前加入一個死循環程序,當B核BootLoader程序執行完后,B核通知A核,A核就跳出這個死循環程序,開始執行自己的有效代碼。

2.4 TMS320VC5421的16位并行EPROM工作方式的BootLoader程序的編程實現

  首先設計一個簡單的電路圖,如圖3所示。在DSP的A_XF和B_XF兩個管腳分別連接一個發光二極管,A核以2Hz的頻率點亮發光二極管,B核以10Hz的頻率點亮發光二極管。將128K的FLASH(SST39VF400A)分成兩頁,每頁為64K。FLASH的頁的選擇由TMS320VC5421的A_BDXO管腳控制。當A_BDX0為低電平,即FLASH的A16地址線為低電平時,選中FLASH的第一頁,由FLASH的A0~A15地址線選擇頁內地址,用于存放A核的16位并行EPROM工作方式的Boot表。當A_BDX0為高電平,即FLASH的A16地址線為高電平時,選中FLASH的第二頁,由FLASH的A0~A15地址線選擇頁內地址,用于存放B核的16位并行EPROM工作方式的Boot表。

CPU_A和CPU_B的程序流程圖分別如圖4和圖5所示。

?

?

?

  (1)片外總線沖突的解決

  估算B核執行BootLoader程序所需的時間后,在A核的用戶有效程序之前,加一段延遲程序。

  延遲的時間計算如下:

  TMS320VC5421DSP的DMA通道從片外數據空間讀取一個字到片內數據空間,需要7個指令周期時間。

  統計用戶程序大小,將對應Boot表中的所有段的大小相加:N1+N2+...=N。

  延遲的時間為N×7=7N個指令周期。

  由上面所述的方法可知,只需在開始執行A核的有效程序之前加一段延遲7N個指令周期的代碼即可。

  (2)生成Boot表

  對CPU_A來說,以A核程序流程圖建立一個項目Ati.msk。產生Ati.out文件后,進入該目錄的DOS環境,鍵入:

  hex500 Ati.out-a-e 0x4000h-boot-bootorg PARALLEL-memwidth 16-romwidth 16-o Ati.hex

  生成A核的16位并行EPROM工作方式的Boot表。

  對CPU_B來說,同樣以B核程序流程圖建立一個項目Bti.msk。產生Bti.out文件后,進入該目錄的DOS環境,鍵入:

  hex500 Bti.out-a -e 0x4000h-boot-bootorg PARALLEL-memwidth 16-romwidth 16-o Bti.hex

  生成B核的16位并行EPROM工作方式的Boot表。

  在實現雙核DSP的上電自舉后,A核和B核的用戶程序將會被存放在核內程序空間的不同頁面上。如從DMA的角度觀看:A核的用戶程序將被存放在A核的程序空間的第0頁上;B核的用戶程序將被存放在B核的程序空間的第2頁上。因此A核的Boot表不需要修改,而B核的Boot表中的所有存放頁地址的表項中的內容要更改為2。

  (3)FLASH編程實現

  根據FLASH芯片的控制時序,編寫一個簡單的DSP程序,用于將A核的Boot表寫入FLASH的低64K,將B核的Boot表寫入FLASH的高64K。

3 上電試驗結果

  將電路上電后,A核控制的發光二極管開始閃爍,B核控制的發光二極管也開始閃爍,且A核發光二極管閃爍頻率要低于B核發光二極管閃爍頻率。由此現象可得出:A核與B核的BootLoader實現成功,未產生片外總線沖突;A核以2Hz的頻率點亮發光二極管,B核以10Hz的頻率點亮發光二極管。

?

參考文獻

1 李 剛.數字信號微處理器的原理及其開發應用. 天津:天津大學出版社, 2000

2 TMS320VC5421 Bootloader Technical Reference. TI,2000

3 TMS320VC5421 Data Manu.TI,2000

4 汪安民.TMS320VC54XX DSP實用技術.北京:清華大學出版社,2002

5 劉易成.TMS320C54X DSP應用程序設計與開發.北京:北京航空航天大學出版社, 2002

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 19+韩国主播青草vip视频 | 国产在线观看成人免费视频 | 国产精品亚洲玖玖玖在线靠爱 | 97视频免费在线 | 免费观看a级毛片在线播放 免费观看a级网站 | 久草网在线视频 | 欧美一区高清 | 亚洲精品第一国产综合野 | 美女视频大全视频a免费九 美女视频大全网站免费 | 青青草国产免费国产是公开 | 欧美午夜成年片在线观看 | 毛片网站视频 | 三级毛片网站 | 成人影院欧美大片免费看 | 九九在线精品视频xxx | 亚洲一级毛片欧美一级说乱 | 91亚洲国产成人久久精品网址 | 400部大量精品情侣网站 | 免费一级欧美片在线观看 | 国产精品yjizz视频网一二区 | 一区 在线播放 | 农村寡妇特一级毛片 | 国产乱肥老妇精品视频 | 国产在线观看成人 | 中文字幕精品视频在线 | 香蕉视频一级片 | 久草首页在线 | 久久久精品一区二区三区 | 韩国一级特黄清高免费大片 | 欧美另类专区 | 亚洲永久中文字幕在线 | 国产制服 国产制服一区二区 | 成人久久18免费网站 | 欧美在线播放视频 | 国产性自爱拍偷在在线播放 | 亚洲午夜精品一级在线播放放 | 欧美亚洲不卡 | 一区二区三区在线 | 国产欧美日韩综合一区二区三区 | 男女免费视频 | 欧美三级中文字幕 |