《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > DSP編程技巧之:編譯流程與處理器選項

DSP編程技巧之:編譯流程與處理器選項

2015-09-18
關鍵詞: DSP 處理器

  在我們有關DSP的論壇、博客和一些互動活動中,網友經常會問一些有關“編程技巧”的問題。
  關于編程技巧的定義,也沒有一個統一的標準,例如實現一個很復雜的多層嵌套的指針設計算是一種編程熟練的體現吧;又或者用C/C++的高級特性做了很復雜的功能,但是編譯器不能完全支持,例如某種內存的動態重分配方法,這時對編譯器特性的熟悉就顯得很重要了。
  接下來我們就聊一聊DSP編程技巧里面有關編譯技巧的一些問題,具體的分類包括編譯器的選項、代碼的優化、庫文件的使用、代碼實現標準、實時運行環境等等;了解了這些具體的問題,對于解決在編譯和鏈接程序的時候經常遇到的讓人摸不著頭腦的警告和錯誤也是很有幫助的;因為程序的語法錯誤很容易被編譯器發現并定位到具體的代碼中,而鏈接器輸出的那些莫名其妙的警告是很難定位的,如果理解了編譯流程中各個環節的作用所在,就有了對癥下藥的入口。編譯器主要以TI的CCS編譯器為例,目標器件為28系列,相比6000系列的,28系列的要稍微簡單一些。
  首先要了解一下基于CCS開發的一個完整流程,以免“只見樹木,不見森林”:
  DSP編程技巧之:編譯流程與處理器選項
  因為很少有文檔把它們的具體漢語含義講清楚,所以在此我們要用通俗的語言描述一下各個部分:
  1. 在這個流程中,與我們編程效率直接相關的就是C/C++編譯器了(如果沒有使用匯編直接編寫的話),它的直接用途是將C/C++代碼編譯為針對DSP匯編指令集的匯編代碼。
  目前的C和C++語言標準有好幾個版本,CCS的編譯器目前支持的版本包括:
  C語言的C89和C99版本的ISO標準(C99部分支持,主要是與C89一樣的特性):通俗的講就是我們學過的C語言里常用的功能都是支持的,除了一些多字節字符和一些極少數的特性等。不清楚的可以參考Kernighan和Ritchie編寫的C語言書籍《The C Programming Language》第二版。
  C++語言的2003版本的的ISO標準: 可以參考Ellis和Stroustrup編寫的經典書籍《The Annotated C++ Reference Manual》。同時也支持一部分的嵌入式C++特性。因為C++的特性眾多,而許多并不適用于這樣一種嵌入式的環境,所以不支持的特性相比C要多一些。
  2. 匯編器的作用是將匯編語言代碼轉換為機器語言(目標文件),這里的匯編代碼包括前面由C/C++生成的匯編代碼和我們直接編寫的匯編代碼。
  3. 鏈接器是作用是把所有的庫文件、目標文件等鏈接成為一個可執行的目標文件,其中包含程序的機器代碼和數據,以及其他用來鏈接和加載該程序所需的信息(在TI DSP上是COFF格式,通俗地講就是.out二進制文件),同時根據內存地址的分配對各目標文件進行重定位,并解析外部參考,例如在一個源程序里引用另一個源程序中定義的變量就可以理解為外部參考,假如一個目標文件引用了一個未定義的符號symbol,則鏈接器搜索其他目標文件中定義的全局符號,找到匹配的符號修補指令。否則報告一個錯誤;所以有時候編譯所有程序完成在鏈接的時候會提示xxx symbol為定義,說明對應的文件沒有加到工程里面。

  4. 歸檔器archiver:也可以叫壓縮器,看一下我們常用的壓縮軟件winrar的全稱winrar archiver就不難理解了。
  5. 實時支持庫:包括標準C和C++的運行支持函數、編譯器公用程序函數、浮點運算函數和C編譯器支持的I/O函數,
  6. 十六進制轉換程序:把編譯、鏈接等步驟生成的可執行文件,轉換為十六進制文件,例如.HEX格式,然后可以燒寫到EEPROM、FLASH等外部存儲器之中。
  7. 絕對列表器:讀取目標文件并輸出.abs文件,通過匯編.abs文件可產生含有絕對地址的列表文件,從而使得我們不用手工費時費力地去創建列表文件。這本來不就是軟件該做的事情嗎:-D
  8. 交叉引用列表:與3中外部參考解析相關的,它用目標文件產生參照列表文件,可顯示符號及其定義,以及符號所在的源文件。
  9. C/C++命名還原工具:C/C++編譯器會將程序中的變量名、函數名轉換成內部名稱,這個過程被稱作Name Mangling,反過程被稱作Name Demangling,即命名還原工具。內部名稱包含了變量或函數的更多信息,例如編譯器看到?g_var@@3HA,就知道這是:int g_var。具體的還原規則一般是不開放給我們用戶的,只要編譯器知道就行了。
  10. 調試工具:例如我們電腦上裝的CCS軟件,讓我們可以用斷點、圖形窗口等進行軟件的調試。
  此外,并沒有明確列在前面的流程中,但是隱含在流程中,或者我們也有可能會用到的工具或者流程包括:
  1. 優化工具:在編譯時對代碼進行優化的工具,可以根據我們期望的優化級別,進行從不優化到直至CPU寄存器級別的優化。
  2. 反編譯器:可以對目標文件進行解碼,顯示對應的匯編語言。在CCS的調試模式下,我們可以打開disassembler窗口,然后單步運行,就能看到一條條的匯編指令是如何執行的了。
  3. 加載器:把可執行的二進制文件復制到DSP的內存中,并運行啟動程序,使得程序從程序入口處開始運行,這個入口地址可能是地址0,也可能是帶有一個偏移量的地址,這個具體的值我們可以以后再具體討論。
  4. 其它:補充一下名詞的定義,包括:
  符號:在整個編譯、鏈接的過程中都會使用到符號symbol的概念,簡單地理解,符號就是指一些變量、函數名字等。
  庫文件:多個目標文件的壓縮包,包含了所有目標文件定義的全局符號的索引。在源程序中如果找不到某些符號的定義,鏈接器從嘗試從庫里面提取出對應的目標文件,然后鏈接到可執行文件里。
  也許你已經熟練使用了CCS好多年,可是當某一天出現一個與cl2000有關的錯誤的時候,突然間也摸不著頭腦了;例如使用老版本的還不支持C2000 FPU的CCS來編譯28335的程序,cl2000就會提示你各種不支持然后報錯不運行了。Cl2000.exe是神馬?
  Cl2000.exe就是和我們的程序編譯密切相關的編譯器了,使用的方法是:
  cl2000 [編譯器選項] [需要編譯的文件] [--運行鏈接器 [鏈接器選項] 目標文件]]
  使用方法看起來很復雜,還好CCS已經幫我們調用它了(或者說CCS就是一個框架,它完成的編譯、調試、鏈接等功能幾乎都需要調用一些別的exe來執行,所以你可能體會過升級了一些庫文件、編輯器版本等,界面文件等卻不需要進行任何的更改),這些句子會顯示在工程的屬性里面。當然如果你想親自體驗一把,也可以在ccs安裝目錄下面的tools\compiler\c2000_6.1.5\bin下面找到它,即cl2000.exe,然后用命令行的方式運行起來)。舉個簡單例子:
  cl2000 -v28 symtab.c file.c seek.asm --run_linker --library=lnk.cmd
  --output_file=myprogram.out

  在上面的例子中,如果需要編譯的文件,例如幾個.c或者.asm找不到,CCS就會提示xxx.c或者xxx.asm找不到或者未定義了;或者你改了目標文件的名字,例如改成了a.out,但是加載程序到DSP中的時候卻仍然使用更改前的b.out,自然有可能出現預料之外的結果了:在以前幫助網友解決問題的時候,確實出現過這樣的狀況。
  明白了編譯器的調用方法之后,我們就更進一步,揭開編譯器中形形色色選項的神秘面紗,從此看到編譯器提示的形形色色的警告和錯誤不再用發怵。
  具體說來,編譯器的選項有多大20個大類,超過一百個具體的選項。當然這些選項是有輕重之分的,有的是必須用到的,例如支持一下FPU等功能;有的則是不常接觸的,例如MISRA這樣的汽車工業軟件可靠性檢查,只有在對軟件進行標準化時才會用到。所以我們首先看一下最常用的選項,例如處理器的選項,它們的意義在于定義了在編譯程序時CPU的模式。補充一點是,cl2000的幫助里看到的選項都是很長的名字,在CCS里面為了書寫方便(因為選項框就那么點面積啊),一般用別名來代替;沒有別名的則直接使用選項名字。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話: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>
          国产精品qvod| 欧美日韩国产在线播放| 日韩系列在线| 欧美日韩综合视频网址| 亚洲国产va精品久久久不卡综合| 国产精品一国产精品k频道56| 精品动漫3d一区二区三区免费| 久久久久国产一区二区| 在线不卡a资源高清| 亚洲人成人99网站| 精品51国产黑色丝袜高跟鞋| 激情欧美一区二区三区在线观看| 欧美jizzhd精品欧美喷水| 免费中文字幕日韩欧美| 一区二区毛片| 亚洲国产精品成人综合色在线婷婷| 久久久水蜜桃| 91久久黄色| 久久久水蜜桃av免费网站| 久久久高清一区二区三区| 欧美日韩国产经典色站一区二区三区| 精品91视频| 日韩亚洲欧美一区| 在线观看国产精品网站| 国产精品一区二区你懂的| 欧美国产视频在线观看| 亚洲欧美另类久久久精品2019| 亚洲精品久久久久| 久久久久久久久久久一区| 久久另类ts人妖一区二区| 久久精品人人做人人综合| 久久婷婷国产综合尤物精品| 国语对白精品一区二区| 激情另类综合| 欧美激情aaaa| 亚洲影院污污.| 欧美黑人一区二区三区| 极品日韩av| 欧美理论大片| 欧美日韩一卡| 亚洲欧美成人网| 国产农村妇女精品一二区| 国产女人水真多18毛片18精品视频| 亚洲美女av电影| 久久不见久久见免费视频1| 欧美多人爱爱视频网站| 国产欧美精品国产国产专区| 亚洲美女视频在线观看| 欧美亚洲三区| 亚洲黄色毛片| 亚洲成色777777在线观看影院| 国产精品videosex极品| 国产精品中文字幕在线观看| 亚洲欧美久久久| 久久亚洲精品视频| 国产精品v日韩精品v欧美精品网站| 久久久精品国产99久久精品芒果| 欧美激情欧美激情在线五月| 激情综合网激情| 亚洲欧美激情精品一区二区| 一区二区三区不卡视频在线观看| 欧美黄免费看| 国产精品久久亚洲7777| 一区二区高清视频在线观看| 一区二区在线视频播放| 国产精品国产三级国产专播精品人| 国产日产欧产精品推荐色| 亚洲综合电影| 国产乱子伦一区二区三区国色天香| 欧美黄色视屏| 日韩视频二区| 最新日韩精品| 国产欧美日韩亚洲精品| 亚洲欧美精品一区| 亚洲欧美国产77777| 亚洲免费观看高清完整版在线观看| 欧美精品麻豆| 国产一区二区电影在线观看| 国产一区av在线| 亚洲第一福利在线观看| 亚洲天堂av在线免费观看| 美女精品视频一区| 国产伦精品一区二区三区视频黑人| 99国产精品自拍| 亚洲电影视频在线| 国产一区二区在线观看免费播放| 亚洲欧美中文日韩在线| 久久免费精品视频| 欧美激情乱人伦| 亚洲欧洲日韩女同| 亚洲欧洲日韩在线| 欧美日韩一区二区视频在线观看| 欧美aⅴ一区二区三区视频| 国产精品一区二区男女羞羞无遮挡| 欧美视频二区36p| 在线亚洲精品| 国产午夜精品久久久久久久| 欧美国产精品va在线观看| 在线成人中文字幕| 久久成人av少妇免费| 欧美亚洲不卡| 久久xxxx| 免费亚洲电影| 亚洲国产精品高清久久久| 狠狠久久综合婷婷不卡| 亚洲免费一区二区| 欧美大香线蕉线伊人久久国产精品| 国产精品日韩一区| 亚洲精品一区二区三区蜜桃久| 最近中文字幕日韩精品| 亚洲欧美日韩精品久久奇米色影视| 亚洲精品一区二区三区av| 国产精品久久久91| 亚洲欧美日韩视频二区| 国产精品日韩二区| 欧美日韩国产bt| 模特精品裸拍一区| 久久婷婷国产综合精品青草| 国产乱码精品一区二区三区五月婷| 国产精品国产a| 一区三区视频| 亚洲国产精品va在线看黑人动漫| 欧美日韩mp4| 欧美日韩免费观看一区| 日韩一区二区电影网| 久久精品免费看| 国产欧美日韩激情| 久久人体大胆视频| 久久狠狠亚洲综合| 一区二区在线观看视频在线观看| 国产免费一区二区三区香蕉精| 欧美激情第8页| 亚洲精品1区2区| 欧美人体xx| 欧美成人dvd在线视频| 欧美日韩精品综合| 亚洲第一主播视频| 久久国产黑丝| 久久久久久久网| 99精品视频免费全部在线| 欧美伊人久久大香线蕉综合69| 亚洲欧美中日韩| 午夜一级久久| 日韩午夜激情电影| 国产在线观看精品一区二区三区| 99视频精品免费观看| 这里只有精品电影| 国产精品久久波多野结衣| 日韩视频在线免费观看| 亚洲人妖在线| 欧美特黄a级高清免费大片a级| 久久精品一区二区三区不卡| 久久精品国内一区二区三区| 欧美日韩综合在线免费观看| 亚洲午夜精品一区二区三区他趣| 亚洲综合色网站| 永久域名在线精品| 久久国产天堂福利天堂| 日韩系列欧美系列| 欧美激情1区2区3区| 一区国产精品| 性欧美xxxx大乳国产app| 一区二区欧美国产| 欧美一区二区在线免费播放| 99在线精品观看| 欧美一区二区三区免费在线看| 午夜精品久久| 国产精自产拍久久久久久蜜| 亚洲男人影院| 亚洲精品久久久一区二区三区| 午夜精品国产| 欧美成人中文字幕| 国产视频久久久久久久| 亚洲欧美bt| 国产精品推荐精品| 亚洲国产精品欧美一二99| 99精品热视频| 国产精品久久久久99| 亚洲国产小视频| 一区二区三区欧美日韩| 国产精品久久777777毛茸茸| 亚洲欧美www| 欧美一区二区在线| 亚洲区欧美区| 亚洲精品国产欧美| 国产精品成人观看视频免费| 欧美日韩国产不卡在线看| 国产精品视频一二| 久久狠狠婷婷| 国产一区二区三区在线观看免费| 在线精品高清中文字幕| 国产精品v欧美精品v日韩| 久久精品二区亚洲w码| 久久精品噜噜噜成人av农村| 99re66热这里只有精品3直播| 久久久一二三| 一区在线播放视频| 99在线视频精品| 一区二区日韩免费看| 激情成人在线视频| 99视频热这里只有精品免费| 欧美一区二区三区视频免费| 亚洲欧美日韩一区二区三区在线| 国产精品一区二区久久久久| 一区二区三区在线免费视频| 久久免费视频在线观看| 99热在这里有精品免费| 亚洲人成网站在线播| 亚洲欧美日韩一区二区三区在线观看| 国产精品a久久久久久| 欧美一区二区黄| 裸体歌舞表演一区二区| 亚洲精品一线二线三线无人区| 亚洲精品一区二区三区不| 99视频超级精品| 亚洲一区视频| 国产精品免费视频xxxx| 亚洲品质自拍| 性8sex亚洲区入口| 久久国内精品自在自线400部| 国产精品区一区二区三区| 久久精品日韩欧美| 亚洲国产黄色片| 影音先锋久久久| 伊人蜜桃色噜噜激情综合| 1024亚洲| 一本色道**综合亚洲精品蜜桃冫| 国产日韩欧美一区二区三区在线观看| 欧美日韩国产限制| 亚洲午夜视频| 欧美中文日韩| 欧美激情91| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲一区在线免费观看| 久久久久久噜噜噜久久久精品| 亚洲一卡二卡三卡四卡五卡| 一本一本a久久| 午夜日韩视频| 最新成人av在线| 一本色道久久综合亚洲二区三区| 国产精品久久久久久一区二区三区| 欧美久色视频| 欧美日韩精品一二三区| 免费高清在线一区| 亚洲美女免费视频| 中文久久乱码一区二区| 国产精品毛片高清在线完整版| 国内精品国语自产拍在线观看| 亚洲一区二区三区精品动漫| 午夜精品久久久久久久| 亚洲国产精品美女| 久久精品系列| 亚洲欧美在线x视频| 欧美激情亚洲| 91久久国产综合久久蜜月精品| 精品福利免费观看| 欧美一区二区三区四区夜夜大片| 欧美国产亚洲精品久久久8v| 国产精品嫩草影院一区二区| 久久久久久亚洲精品杨幂换脸| 亚洲一区久久| 欧美人与禽猛交乱配视频| 国产精品久久一卡二卡| 国产在线播放一区二区三区| 欧美jizz19性欧美| 亚洲第一精品夜夜躁人人爽| 国产精品丝袜白浆摸在线| 亚洲最快最全在线视频| 欧美成黄导航| 91久久精品国产91久久| 精品白丝av| 亚洲国产精品一区二区www在线| 免费在线视频一区| 久久一日本道色综合久久| 国产精品www994| 久久久精品免费视频| 欧美国产精品中文字幕| 亚洲区在线播放| 欧美精品一区二区三区很污很色的| 国内外成人免费激情在线视频| 亚洲一区欧美二区| 午夜伦理片一区| 在线视频日韩精品| 国产精品社区| 亚洲国产精品美女| 一区二区在线不卡| 欧美日韩国产免费| 欧美激情一区二区三区高清视频| 欧美日韩免费区域视频在线观看| 免费永久网站黄欧美| 欧美午夜不卡影院在线观看完整版免费| 欧美亚日韩国产aⅴ精品中极品| 国产欧美日韩高清| 久久久精品网| 国产精品免费区二区三区观看| 日韩网站免费观看| 欧美三区免费完整视频在线观看| 久久一区中文字幕| 亚洲一级影院| 亚洲欧美成人| 久久亚洲私人国产精品va媚药| 亚洲激情一区二区三区| 久久一日本道色综合久久| 黑人巨大精品欧美一区二区| 亚洲精品国偷自产在线99热| 欧美午夜欧美| 国模私拍一区二区三区| 国产嫩草影院久久久久| 国产精品毛片| 国产精品扒开腿做爽爽爽视频| 在线观看欧美日本| 国产精品黄页免费高清在线观看| 日韩图片一区| 久久久久久久激情视频| 尤物yw午夜国产精品视频明星| 国产精品av免费在线观看| 伊人色综合久久天天五月婷| 午夜亚洲福利| 国产视频欧美| 一本色道久久综合亚洲精品婷婷| 久久福利资源站| 黄网动漫久久久| 国产精品午夜国产小视频| 国内精品久久久久影院优| 欧美精品v国产精品v日韩精品| 在线精品高清中文字幕| 国产精品欧美久久| 日韩午夜电影在线观看|