《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > DSP+FLASH引導裝載系統的設計與實現

DSP+FLASH引導裝載系統的設計與實現

2008-10-29
作者:楊力波 潘志鉑

  摘? 要: 介紹了利用DSP編程實現對FLASH的讀寫操作,設計并實現了一個引導裝載" title="引導裝載">引導裝載系統的模型,給出了一個簡單的測試用的實例。整個方案有較大的靈活性和實用性。?

  關鍵詞: 數字信號處理器? FLASH存儲器? 引導裝載?

?

  在一些脫機運行的DSP系統中,用戶代碼需要在加電后自行裝載運行。DSP系統的引導裝載(Bootload)是指在系統加電時,DSP將一段存儲在外部的非易失性存儲器中的代碼移植" title="代碼移植">代碼移植到內部的高速存儲單元中去執行。這樣既利用了外部的存儲單元擴展DSP本身有限的ROM資源,又充分發揮了DSP內部資源的效能。盡管用戶代碼在一段時期相對是固定的,但是如果直接將其掩膜到內部ROM中去的話,一方面受容量以及價格的限制,另一方面則在系統代碼升級上顯得不是很靈活方便。FLASH是一種高密度、非易失性的電可擦寫存儲器,而且單位存儲比特的價格比傳統的EPROM要低,十分適合于低功耗、小尺寸和高性能的便攜式系統。除了可以采用專用的硬件編程器把代碼灌入FLASH中之外,也可以利用現成的DSP通過軟件編程" title="軟件編程">軟件編程來實現同樣的功能。本文論述的正是如何通過DSP軟件編程來實現對FLASH的讀寫操作,并介紹一個簡單的系統引導裝載方案的實現。?

1 系統描述?

  本系統由DSP(TMS320VC5410)及外部的FLASH(M29W400T)以及相關的電源管理單元等構成。DSP與FLASH的連接如圖1所示。DSP與FLASH是主從關系,由DSP的相關輸出管腳控制FLASH的擦除和讀寫。其中,A0~A17為地址線,D0~D15為數據線,/MSTRB為存儲選通信號,R/W是讀寫脈沖信號,/OE和/WE分別為讀使能和寫使能,/CE為片使能,/BYTE為8位或16位數據模式選擇(圖中接高電壓為16位模式)。FLASH用于存放引導程序" title="引導程序">引導程序段和用戶代碼,由DSP軟件編程來寫入。當系統脫機加電時,DSP首先從外部FLASH指定的引導程序段的起始位置處開始執行引導裝載。所謂引導裝載,就是將原先存儲在FLASH中的用戶代碼移植到DSP內部的高速執行單元,然后將程序指針設置為用戶代碼的起始地址。這樣,接下來就可以利用DSP資源高速執行用戶代碼了。?

?

?

2 DSP對FLASH的操作?

2.1 DSP及FLASH簡介?

  TMS320VC5410是TI公司的C54x系列的定點DSP,具有低功耗和高速度,常用于便攜式系統開發。其內部存儲資源包括256Kb的可掩膜ROM以及可高速運行的128Kb的DARAM和896Kb的SARAM。ROM中固化了TI提供的引導裝載代碼,本方案采用自編的引導程序。?

  ST公司的M29W400系列的FLASH容量為4Mb,分為11個不同大小的塊結構,支持8位或16位操作模式。通過特殊的命令字序列可以對每一塊獨立進行擦除和讀寫。與以往的FLASH相比,它由外部單電壓供電,無需額外提供高電壓即可實現擦除及寫入,因而在系統設計上無需考慮特殊的電平匹配。本方案采用16位模式。?

2.2 地址映射方式?

  由于用DSP操作FLASH,必然涉及到FLASH的實際地址在DSP中的映射方式。TMS320VC5410的地址空間如圖2所示,包括數據空間和程序空間,具體的映射方式由DSP內部的一些寄存器決定。它使用頁面擴展機制,最多可以尋址8192Kb的程序空間。假設FLASH的起始地址0x0000和DSP的起始地址0x0000重合,那么FLASH中只有對應于DSP外部空間的那部分地址,才是DSP可見的。比如,本方案中采用微處理器模式(MP=1)且OVLY=1時,則DSP第0頁程序空間中可見的FLASH的地址范圍為0x8000~0xFFFF。?

?

?

  在擦除或讀寫FLASH之前,必須先執行相應的命令字序列,即在指定的FLASH地址處寫入指定的指令代碼。而整個FLASH地址空間并非和DSP的地址空間一一對應,所以需要考慮地址的重映射。?

  現以對FLASH寫入為例。未考慮地址重映射時,命令字序列如下所示:?

  FlashWrite(0x5555L,0x00AA );//1st cycle? ?

  FlashWrite(0x2AAAL,0x0055 );//2nd cycle ?

  FlashWrite(0x5555L,0x00A0 );//Program command ?

  FlashWrite(myaddress,mydata );//put mydata into myaddress?

  由圖2可知,當MP=1和OVLY=1時,FLASH地址0x5555L和0x2AAAL在DSP中位于外部空間之外,是不可見的。這樣DSP執行上述語句時,根本沒有對FLASH進行相應的操作,從而導致即使FLASH地址myaddress是DSP可見的,也無法實現數據寫入的功能。?

  仔細分析FLASH的命令字序列可知,前三句命令字序列中真正起作用的地址位是A0~A14,而高地址位A15~A17可以是任意值。于是考慮加一個偏移量0x8000,使得重映射后的FLASH地址在DSP中是可見的。修改后的代碼如下所示:?

  #define OFFSET 0x8000?

  FlashWrite((0x5555L+OFFSET),0x00AA); //1st cycle? ?

  FlashWrite((0x2AAAL+OFFSET),0x0055); //2nd cycle ?

  FlashWrite((0x5555L+OFFSET),0x00A0);//Program command ?

  FlashWrite(myaddress,mydata);//put mydata into myaddress?

  這樣,在DSP中就可以對外部FLASH進行寫入操作了,前提是FLASH地址myaddress在DSP中可見。擦除和讀操作也要對照圖2作類似的地址重映射,不一一累述。?

2.3 擦除和讀寫過程描述?

  在DSP將數據寫入FLASH之前,先要刪除數據所在塊,然后才能重新寫入。擦除和寫操作之前都要執行相應的命令字序列,而讀操作則可以直接進行。而且要寫入的數據部分應為引導程序段以及用戶代碼是經過編譯、連接后的目標代碼,且為FLASH可識別的HEX格式。?

3 引導裝載模型設計?

3.1 引導裝載原理?

  加電前,DSP設置為微處理器模式(MP=1)。加電后,DSP首先執行0xFF80處的中斷向量表" title="向量表">向量表起始處的跳轉命令,轉向0xF800處的引導程序段并實現代碼移植功能。完畢后,再次跳轉到移植后的用戶程序段的起始地址并執行之。?

3.2 邏輯功能分塊?

  引導裝載系統包括引導程序段、用戶程序段、中斷向量表和連接命令文件四部分。引導程序段負責將用戶程序段和中斷向量表裝載到目標地址,用戶程序段是實現用戶系統功能的核心代碼,中斷向量表包括加電后的跳轉處理和中斷服務程序的入口,連接命令文件則是分配各個程序段在DSP地址空間中的位置。?

3.3 具體代碼實現?

  引導程序段(load.asm)如下:?

??????? .def load_start ?

??? ??? .sect ″load_prg″ ?

load_start: ?

??????? ssbx intm?????????? ;關中斷?

??????? rsbx??? sxm?????????;符號擴展模式設置為0?

??? ??? ld #0,dp???????????;定義數據頁指針為0?

??? ??? nop?

??? ??? nop?

??? ??? nop ?

?????? ?ld #0ff80h,a?? ??????? ;移植中斷向量表,0xff80為中斷向量表的舊起始地址?

??????? stm #VECT_NEW, ar1 ??? ;VECT_NEW表示中斷向量表的新起始地址?

??????? rpt #(VECT_LEN-1) ? ;VECT_LEN表示中斷向量表的長度?

??????? reada *ar1+ ?

??? ??? nop ?

?? ???? ld #MAIN_OLD,a?? ;移植用戶程序段,MAIN_OLD表示用戶程序段的舊起始 地址?

??????? stm #MAIN_NEW,ar1 ;MAIN_NEW表示用戶程序段的新起始地址?

??????? rpt #(MAIN_LEN-1) ? ;MAIN_LEN表示用戶程序段的長度?

??????? reada *ar1+ ?

endboot: ?

??? ??? orm #020h,@1dh???? ;設置OVLY=1,使得內部RAM同時映射到DSP數據和程序空間?

????? ? ld #MAIN_NEW,a ?

????????bacc a????????????? ;程序指針指向用戶程序段的起始地址?

??????? .end?

??? 用戶程序段(main.asm)如下:?

??????? .def main_start?

??????? .sect ″main_prg″?

main_start:?

??????? USER_PRG??????????? ;此處添加用戶程序段?

??????? .end?

??? 中斷向量表(vect.asm)如下:?

??????? .mmregs ?

??? ??? .ref main_start ?

??? ??? .ref load_start ?

??? ??? .def reset ?

??? ??? .def nmi ?

??? ??? .sect ″.vectors″ ?

reset:? bd load_start?????? ? ? ;加電后,跳轉到自啟程序段起始地址?

??????? stm #200, sp ?

nmi:??? rete??????????????? ;此表中只包含NMI中斷入口,也可以類似添加其它中斷入口?

??????? nop?

??? ??? nop?

???? ?nop?

????? .end?

  連接命令文件(boot.cmd)的配置如下:?

??? vect.obj?

??? main.obj?

??? load.obj?

??? -o boot.out?

??? SECTIONS ?

??? { ?

??? ?? main_prg:????? ? load=MAIN_OLD,run=MAIN_NEW ?

??? ?? vectors:??????? load=0ff80h,run=VECT_NEW ?

??? ?? load_prg:????? ? load=0f800h ?

??? }?

4 寫入目標代碼?

  上述引導程序經過CCS編譯及連接后,生成的目標文件boot.out是DSP能夠識別的COFF格式。但是FLASH不支持這種格式,所以不能直接寫入FLASH中。CCS自帶有多種HEX類型的轉換程序,比如常見的有Intel格式等。但是不同的HEX類型有不同的格式和頭尾開銷,比如Intel格式中除了數據之外還有起始符、字節個數、起始地址、類型以及校驗位等各種信息,并非純粹數據的HEX格式表示。了解了Intel格式的文件結構之后,就可以從中提取出需要寫入FLASH中的代碼的HEX格式及相應的地址,即對應上面提到的mydata和myaddress。然后就可以利用上面的方法,用DSP將引導系統各個部分的代碼在脫機運行前寫入FLASH。?

5 簡單測試實例?

  利用上述方法,使得系統在脫機狀態下實現引導裝載,并且從DSP的XF端口輸出均勻脈沖波形。直接修改用戶程序段可用如下的代碼取代用戶程序段中的USER_PRG。?

??? loop:?? rsbx xf?

?????? nop?

?? ??? ssbx xf?

?? ??? nop?

????? ?b loop?

  經過編譯、連接、格式轉換以及寫入FLASH之后,系統就可以實際脫機運行了。加電一段時間后,可以通過示波器測量得到XF端口的均勻脈沖波形,證明引導裝載成功。?

參考文獻?

1 TMS320VC5410 Fixed-point Digital Signal Processor Data Manual.TI Inc.,Dec.,2000?

2 M29W400 Data Sheet.ST Inc.,Nov.,1999?

3 Software Drivers for M29F400 and M29W400 FLASH Memories.ST Inc.,March,2000?

4 TMS320C54x Assembly Language Tools User’s Guide.TI Inc.,Dec.,1999

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久亚洲精品欧美| 午夜精品久久久久久久99樱桃| 免费精品99久久国产综合精品| 正在播放亚洲| 国产精品国产成人国产三级| 国语自产精品视频在线看8查询8| 国产一区二区成人久久免费影院| 美女脱光内衣内裤视频久久影院| 亚洲图片在线观看| 欧美视频专区一二在线观看| 久久这里只有精品视频首页| 国产精品另类一区| 最新亚洲一区| 久久激情视频| 欧美人与性动交a欧美精品| 亚洲人成网在线播放| 欧美精品v日韩精品v国产精品| 在线视频一区二区| 久久av在线| 欧美有码在线观看视频| 亚洲精品视频免费在线观看| 亚洲自拍电影| 国产精品久久久久久久一区探花| 亚洲第一级黄色片| 亚洲美洲欧洲综合国产一区| 亚洲精品乱码久久久久| 国产精品美女久久久久久免费| 欧美在线视频a| 亚洲免费网址| 亚洲欧美一区二区激情| 亚洲小说欧美另类婷婷| 国产精品专区h在线观看| 亚洲精品色图| 亚洲午夜影视影院在线观看| 欧美三级在线视频| 99精品国产高清一区二区| 亚洲一区二区伦理| 国产精品女主播在线观看| 国产精品久久久久久久久久久久久久| 久久综合久久综合久久| 亚洲国产精品高清久久久| 你懂的网址国产 欧美| 国产精品毛片a∨一区二区三区| 久久久久综合一区二区三区| 午夜国产欧美理论在线播放| 伊人精品在线| 欧美一区午夜视频在线观看| 国产精品大片wwwwww| 亚洲小说欧美另类社区| 国产精品久久久久影院亚瑟| 国产丝袜美腿一区二区三区| 久久免费视频观看| 午夜精品一区二区三区电影天堂| 欧美日韩高清免费| 亚洲在线黄色| 国内偷自视频区视频综合| 国产精品一区在线播放| 亚洲最新视频在线播放| 国产精品第一页第二页第三页| 国产欧美日韩三级| 久久人人爽人人爽| 亚洲精品国产品国语在线app| 亚洲春色另类小说| 久久伊人精品天天| 欧美精品色网| 欧美日韩精品欧美日韩精品一| 欧美日韩一级片在线观看| 一本一道久久综合狠狠老精东影业| 国产欧美视频一区二区| 精品成人国产在线观看男人呻吟| **网站欧美大片在线观看| 亚洲免费视频在线观看| 日韩亚洲国产欧美| 亚洲日本中文字幕免费在线不卡| 久久精品在这里| 欧美在线91| 亚洲欧美日韩国产另类专区| 99精品欧美一区| 久久精品麻豆| 久久久久久久久久久一区| 亚洲国产日韩欧美一区二区三区| 久久免费视频在线观看| 欧美理论片在线观看| 国产欧美69| 在线观看欧美黄色| 久久激情一区| 黑人操亚洲美女惩罚| 欧美成年人网站| 国产精品成人一区二区艾草| 欧美精品一区二区蜜臀亚洲| 亚洲视频免费在线观看| 欧美成人一品| 久久激情视频| 国产精品久久精品日日| 国产精品午夜电影| 欧美日韩精品一本二本三本| 亚洲视频精品在线| 亚洲电影免费观看高清完整版| 亚洲欧美欧美一区二区三区| 欧美午夜精品久久久久久超碰| 久久九九精品| 在线成人av| 欧美日韩在线观看一区二区三区| 久久精品网址| 欧美成年人在线观看| 欧美日韩精品一区| 国产精品国产三级国产aⅴ浪潮| 欧美www视频| 国产精品乱码一区二三区小蝌蚪| 在线亚洲一区观看| 久久亚洲影音av资源网| 亚洲欧美日韩第一区| 国产亚洲精品自拍| 亚洲精品日韩久久| 国产日产亚洲精品| 99在线精品视频在线观看| 亚洲欧美日韩精品久久亚洲区| 亚洲欧美日韩直播| 欧美另类视频| 国产精品影视天天线| 国产精品毛片a∨一区二区三区| 亚洲欧美日韩国产精品| 精品福利电影| 韩国成人精品a∨在线观看| 国产精品亚洲不卡a| 美女视频黄免费的久久| 亚洲欧洲日夜超级视频| 欧美日韩国产成人在线免费| 国产精品成人观看视频免费| 久久精品综合网| 久久人91精品久久久久久不卡| 黄色国产精品一区二区三区| 老鸭窝91久久精品色噜噜导演| 日韩亚洲在线| 欧美精品久久99| 亚洲大片在线| 欧美日韩一区二区在线观看| 你懂的国产精品| 欧美激情乱人伦| 最新国产の精品合集bt伙计| 欧美暴力喷水在线| 国产中文一区| 国产农村妇女毛片精品久久麻豆| 欧美韩日亚洲| 欧美高清在线一区二区| 国产欧美一二三区| 亚洲午夜成aⅴ人片| 国产精品青草久久| aa日韩免费精品视频一| 国产一区二区电影在线观看| 亚洲愉拍自拍另类高清精品| 亚洲国产精品va在线看黑人动漫| 国产精品地址| 亚洲第一久久影院| 欧美日韩视频在线第一区| 亚洲男人天堂2024| 亚洲免费在线视频一区 二区| 狠狠入ady亚洲精品经典电影| 一区二区在线观看视频在线观看| 欧美另类一区二区三区| 卡一卡二国产精品| 亚洲黄页视频免费观看| 亚洲裸体视频| 国产在线拍偷自揄拍精品| 亚洲视频电影在线| 日韩视频精品在线观看| 国产精品久久久久久久久婷婷| 亚洲欧美日韩在线不卡| 激情综合网址| 久久精品欧美日韩精品| 99国产精品久久久久久久成人热| 亚洲综合欧美日韩| 亚洲视频自拍偷拍| 亚洲第一主播视频| 99精品视频网| 欧美激情性爽国产精品17p| 亚洲国语精品自产拍在线观看| 国产免费观看久久| 香蕉久久国产| 欧美ab在线视频| 亚洲韩国日本中文字幕| 午夜精品久久99蜜桃的功能介绍| 日韩视频第一页| 国产日韩欧美视频| 久久视频在线视频| 亚洲国产婷婷综合在线精品| 欧美乱人伦中文字幕在线| 亚洲视频中文字幕| 欧美理论视频| 国产精品视频一区二区三区| 免费观看一级特黄欧美大片| 国产精品一区久久久| 久久成人av少妇免费| 国产精品久久久久久久久久妞妞| 亚洲黄色尤物视频| 另类尿喷潮videofree| 欧美日韩一区二区三区免费看| 日韩一级在线| 久久久91精品国产一区二区精品| 欧美一区观看| 亚洲综合清纯丝袜自拍| 欧美日韩一区国产| 性欧美xxxx视频在线观看| 亚欧成人精品| 一区二区三区高清| 一本久道久久综合狠狠爱| 欧美视频一区二区在线观看| 国产精品大片免费观看| 校园激情久久| 亚洲综合日韩在线| 午夜亚洲福利| 欧美久久久久久久| 欧美国产免费| 国产精品久久毛片a| 国产精品户外野外| 在线播放亚洲一区| 欧美视频在线观看一区二区| 欧美一级成年大片在线观看| 亚洲欧美中文日韩在线| 久久国产主播| 久久婷婷人人澡人人喊人人爽| 国产一区二区三区无遮挡| 国产精品久久久久国产a级| 久久黄色影院| 亚洲欧美国产日韩天堂区| 亚洲精品综合在线| 国模 一区 二区 三区| 亚洲字幕一区二区| 一卡二卡3卡四卡高清精品视频| 亚洲女ⅴideoshd黑人| 亚洲午夜精品网| 99国产精品自拍| 欧美日韩一级黄| 亚洲综合首页| 久久精品国产久精国产爱| 日韩视频精品在线观看| 国产精品入口66mio| 国产精品高潮呻吟| 久久国产视频网| 欧美在线视频网站| 性久久久久久| 一区二区三欧美| 久久精品电影| 亚洲美女精品一区| 亚洲一区在线观看视频| 国产伦精品一区| 久久影院午夜片一区| 999在线观看精品免费不卡网站| 免费久久99精品国产| 一区二区三区**美女毛片| 亚洲成人原创| 久久久一区二区| 欧美精品在线观看一区二区| 亚洲欧美一区二区原创| 久久理论片午夜琪琪电影网| 韩曰欧美视频免费观看| 激情小说亚洲一区| 亚洲嫩草精品久久| 欧美日韩系列| 国产精品国产三级国产专区53| 好吊妞这里只有精品| 欧美成黄导航| 一区二区在线观看av| 欧美精品黄色| 欧美黄色小视频| 欧美亚洲综合另类| 亚洲国产精品久久久久秋霞蜜臀| 亚洲高清免费在线| 一区二区三区视频在线| 国产自产高清不卡| 欧美精品一区二区三区蜜桃| 国产精品国产三级国产| 亚洲国产aⅴ天堂久久| 欧美日韩一区精品| 在线一区二区日韩| 午夜精品久久久久久久久久久| 久久嫩草精品久久久久| 欧美午夜视频在线| 精品不卡视频| 娇妻被交换粗又大又硬视频欧美| 亚洲欧美视频| 国产三区二区一区久久| 久久这里有精品15一区二区三区| 欧美一级大片在线观看| 亚洲国产经典视频| 久久国产精品电影| 性欧美8khd高清极品| 欧美性视频网站| 欧美亚洲一区二区在线观看| 久久精品一级爱片| 91久久精品一区| 国产婷婷色一区二区三区四区| 国产日韩亚洲欧美综合| 亚洲伦理在线观看| 欧美极品一区二区三区| 香蕉视频成人在线观看| 亚洲成色999久久网站| 国产老女人精品毛片久久| 亚洲美女中文字幕| 99精品热视频| 亚洲欧美清纯在线制服| 欧美亚洲一区二区在线观看| 国产丝袜一区二区| 欧美日韩在线不卡| 亚洲免费观看高清完整版在线观看| 亚洲精品视频免费观看| 欧美精品日韩www.p站| 国产欧美日韩视频在线观看| 一区二区亚洲精品| 99视频有精品| 欧美视频在线观看 亚洲欧| 国产精品99一区| 久久激情婷婷| 久久成人一区二区| 亚洲成在人线av| 欧美日韩亚洲一区| 亚洲精品一区在线| 狠狠色丁香婷综合久久| 99re6热在线精品视频播放速度| 亚洲精美视频| 欧美午夜不卡在线观看免费| 性欧美长视频| 久久蜜桃av一区精品变态类天堂| 久久精品夜夜夜夜久久| 欧美日韩国产欧| 亚洲精选久久| 亚洲精品看片| 国产精品视频网|