色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>DSP>C語言開發DSP嵌入式系統解析

C語言開發DSP嵌入式系統解析

2017-11-03 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

大家在開發嵌入式產品時首先會想到用控制器匯編語言編寫監控程序,主要原因是:①匯編語言生成的程序對應的二進制代碼少,程序執行要比高級語言生成的程序快;②控制器剛問世時,沒有相應的高級語言可供使用;③存儲器的價格問題和尋址空間的限制。
  以上所述問題目前已基本解決,在這就不闡述了。實際情況是:在單片機的應用領域,開發者已開始使用C語言進行開發。大家發現用高級語言開發嵌入式產品是如此輕松,并且C語言程序編譯后的二進制代碼也非常短小精練。
  目前使用最多的數字信號處理器DSP)是美國TI公司的TMS320家族,而工業控制上用得最多的又是TMS320F2XX系列。TI公司為每一個DSP芯片提供了匯編語言和C語言供開發者選用。本人一直使用C語言進行產品開發,而目前很少見到這方面的介紹、所以特撰此文,以TMS320F240為例,向各位同行推薦用C語言開發DSP嵌入式系統
  1 DSP的C語言的特殊性
  大家在使用51系列C語言時已經注意到,控制器的C語言和PC機上使用的C有一個顯著的特點:經常要對硬件操作,程序中有大量針對控制器內部資源進行操作的語句。所以,開發者要明白怎樣用C語言來操縱控制器的內部資源,即怎樣用C語句操作寄存器和內部存儲器等。
  舉個例子:在51匯編中我們寫 MOV A,#20H;匯編程序能夠識別A是指累加器;而在51的C程序中我們寫ACC=32;,編譯器能夠識別ACC是指累加器而不是一般的變量。即每一個寄存器都有一個專有名字供開發者使用,它們定義在一個頭文件reg51.h中,程序員只需在程序的開始部分用#include“reg51.h”語句將該文件包含進來即可。注意:這些寄存器的名字不能用作變量名。
  同樣,在TMS320F240的C語言中也有一個頭文件C240.H定義各個寄存器的名稱,這里摘錄幾條語句進行介紹。
  比如:#define IMR((PORT)0x0004)
  #define XINTI_CR((PORT) 0x07070)
  IMR、XINT1_CR就對應兩個寄存器,實際是寄存器的地址,用高級語言的說法是指針。我們也在程序的開始部分用#include“c240.h”語句將該文件包含進來。這樣,在DSP的C語言中使用它們只需在前面加一個星號(*),例如,
  *IMR=0X1010;/*將十六進制數1010H賦給IMR寄存器*/
  *XINT1_CR=0X0A0B0;/*將十六進制數A0B0H賦給XINT1_CR寄存器*/
  開發者最好將c240.h這個文件打印出來,弄清楚各個寄存器的定義名稱。至于不涉及硬件的語法和ANSI語法一樣。需要注意的是,有些ANSI標準中的函數在DSP的編譯器中不提供,讀者可以參考DSP編譯器的C語言手冊。搞清楚了這些特殊性,由匯編語言轉到C語言開發是很容易的事。當然,沒有匯編語言編程基礎的人同樣可以用C語言開發DSP應用系統。
  有關嵌入式系統的C語言編程可參考《單片機與嵌入式系統應用》2001年1~6期《嵌入式C編程技術》,本文不作討論。下面只針對以TMS320F240芯片為處理器的嵌入式C語言編程進行闡述,希望能夠指導讀者進行具體操作。
  2 TMS320F240芯片的C語言開發過程
  簡單地說,整個過程包括以下5個步驟:
  ①編輯C語言源程序;
  ②編譯源程序(注意編譯參數);
  ③鏈接目標文件(注意用CMD文件);
  ④在線仿真
  ⑤固化程序。
  2.1源程序的編輯
  可以用任何一個編輯器書寫源程序,如EDIT。NOTEPAD等,最后以.C為后綴存盤。源代碼可以寫在一個C文件中,也可寫在多個C文件中;有些預定義變量和函數原型聲明可以集中放在一個頭文件中。
  注意事項:不要忘記在C程序的前面用 #in-clude “c240.h”將寄存器定義文件包括進來。
  2.2源程序的編譯
  源程序編輯好后可以用DSPCL編譯程序進行編譯,生成OBJ文件。
  使用格式:DSPCL源文件名 參數
  例如: DSPCL EX1.C-V2XX-GK-MN
  常用參數的意義:
  V2XX——表示C編譯器選擇處理器2XX系列;
  GK——保留編譯生成的匯編文件(.ASM文件);
  MN——進行正常優化。
  其它參數請參考DSP編譯器的手冊。如果有多個源文件分別編譯,每一個源文件經編譯后產生一個OBJ文件和ASM文件。
  2.3 目標文件的鏈接
  2.3.1 TI公司的COFF文件格式
  TI公司新的匯編器和編譯器創建的目標文件采用COFF(Common Object File Format)的目標文件格式。采用COFF格式有利于模塊化編程,為管理代碼段和目標系統存儲器提供更加有力和靈活的方法。基于COFF格式編寫匯編程序或C語言程序時,不必為程序代碼和變量指定目標地址;為程序編寫和程序移植提供了極大的方便。
  COFF格式的基本思想是:鼓勵程序員在用匯編語言或C語言編程時運用代碼塊和數據塊的概念。這種塊稱為SECTION,是目標文件中的最小單位。
  所有的塊分為兩大類:已初始化塊和未初始化塊。已初始化塊包含程序代碼和數據,未初始化塊是為未初始化的數據在存儲器中的保留塊。C編譯器對C程序編譯后產生已初始化塊和未初始化塊,已初始化塊如.text塊、.const塊、.cinit塊;未初始化塊如.bss塊。
  舉個例子,當程序員用C語句float data[100];定義一個數組時,不需要指定這100個數組元素的具體位置,編譯器會在數據區預留所需空間。到鏈接時鏈接器會具體定位。
  2.3.2 鏈接器對塊的處理
  鏈接器對塊的處理有兩個功能:其一,將COFF目標文件中的塊用來建立程序塊和數據塊,并將這些塊組合成可以被DSP芯片執行的COFF輸出模塊;其二,鏈接器為輸出塊指定存儲位置。
  鏈接器提供兩個命令實現上述功能:MEMORY和SECTIONS。MEMORY命令定義目標系統的存儲器,程序員可以定義每一塊存儲器并指定起始地址和長度;SECTIONS命令用來定義輸入塊的組合和輸出塊在存儲器中的存放位置。若不用MEMORY和SECTIONS命令,鏈接器采用缺省的分配算法。推薦使用這兩個命令,但要注意這兩個命令在CMD文件(鏈接器命令文件)中使用。
  下面分析一個TMS320F240芯片的典型CMD文件。(假設文件名 EX1.CMD。)
  (1)CMD文件的構成及其詳細解釋
  BOOT.OBJ /*F240的中斷矢量表,參見后面的說明*/
  EX1.OBJ /*源程序編譯后對應的目標文件*/
  /*若程序有多個目標文件,一塊寫在這里*/
  -STACK 0X400 /*設定系統堆棧*/
  -C /*ROM初始化*/
  -O EX1.OUT /*輸出的文件名*/
  -M EX1.MAP /*輸出映像文件名*/
  -L RTS2XX.LIB /*漣接RTS2XX.LIB庫*/
  MEMORY /*MEMORY命令規定系統的存儲器配置*/
  {
  PAGEO:ROM0:origin=0000h,length=003fh
  /*FLASH ROM*/
  PAGE0:ROM1:origin=0040h,length=0200h
  /*FLASH ROM*/
  PAGEO:ROM2:origin=0240h,length=3000h
  /*FLASH ROM*/
  PAGE1:RAM_B2:origin=0060h,length=0020h
  /*內部RAMB2*/
  PAGE1:RAM_B1:origin=0300h,length=0100h
  /*內部RAM B1*/
  PAGE1:RAM_B0:origin=0100h,length=0100h
  /*內部RAM B0*/
  PAGE1:RAM_EX:origin=0d000h,length=2800h
  /*外部擴展RAM*/
  }
  SECTIONS /*SECTIONS命令規定了程序中塊的具體分配方法*/
  {
  .vectors:load=ROM0 /*規定矢量表的存放位置*/
  .cinit:load=rom1 /*C初始化表的存放位置*/
  .text: load=ROM2 /*系統程序的存放位置*/
  .bSS load=RAM_B0 /*未初始化數據的存放位置*/
  .const load=RAM_B1 *已初始化數據的存放位置*/
  }
  (2)TMS320F240鏈接時所需的中斷矢量表文件
  TMS320F240的目標文件在鏈接時要用到中斷矢量表。中斷矢量表用匯編語言編寫,和具體的DSP芯片有關。假設TMS320F240的中斷矢量表對應的匯編程序為BOOT.ASM,匯編后的文件名為BOOT.OBJ。
  下面是一個典型的矢量表文件。(假設程序名為BOOT.ASM。)
  .port /*定義中斷函數的名字*/
  .globl_c_int0 /*中斷0對應的函數名*/
  .globl_c_int1 /*中斷1對應的函數名,以下語句的意義相同*/
  .globl_c_int2 /*可以將中斷函數名看作中斷入口地址*/
  .globl_c_int3 /*矢量表的存放不需程序員干預*/
  .globl_c_int4
  .globl_c_int5
  .globl_c_int6
  .globl_c_int7
  .globl_c_int8
  ·sect“.vectors”/*用.sect命令自定義一個塊,用于存放中斷矢量表*/
  RSVE CT B _c_int0 /*中斷0發生后,程序的跳轉目的地址*/
  INT1 B _c_int1 /*中斷1發生后,則跳到c_int1()函數處*/
  INT2 B _c_int2 /*意義同上,下同*/
  INT3 B _c_int3
  INT4 B _c_int4
  INT5 B _c_int5
  INT6 B _c_int6
  用匯編器匯編該程序,命令形式:DSPABOOT.ASM-V2XX生成BOOT.OBJ文件供鏈接器使用。這樣,就可以按如下形式在C源程序中編寫中斷函數:
  voidc_inx() /*x為1~8中之一*/
  {
  中斷程序的C語句系列;
  }
  注意事項:c_int0()是系統入口函數,用戶不能編寫。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1489次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  91次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  9次下載  |  免費
  11. 6基于AT89C2051/4051單片機編程器的實驗
  12. 0.11 MB  |  4次下載  |  免費
  13. 7基于單片機和 SG3525的程控開關電源設計
  14. 0.23 MB  |  3次下載  |  免費
  15. 8基于單片機的紅外風扇遙控
  16. 0.23 MB  |  3次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30319次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537791次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233045次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費
主站蜘蛛池模板: 国产午夜精品自在自线之la | 日本无码欧美激情在线视频 | 久久日本片精品AAAAA国产 | 总攻催眠受的高h巨肉np | 小莹的性荡生活40章 | 久久国产精品永久免费网站 | 神马电影院午夜神福利在线观看 | 国产精品自在在线午夜精品 | 亚洲中文无码亚洲人在线观看- | 亚洲欧美日本国产在线观18 | 最近中文字幕MV高清在线视频 | 国产99久久九九精品无码不卡 | 久久机热视频 这里只有精品首页 | 2020年国产理论 | 在线播放一区二区精品产 | 亚洲不卡一卡2卡三卡4卡5卡 | 一边亲着一面膜下的免费过程 | 又黄又爽又无遮挡在线观看免费 | 黄小说免费看 | 男女交性视频无遮挡全过程 | 伊人伊人影院 | 99爱视频在线观看 | 中文字幕一区二区三区在线观看 | 亚洲精品视频免费看 | 中文字幕人成人乱码亚洲影视 | 国产人成精品综合欧美成人 | videossexotv极度另类 | 最新国产成人综合在线观看 | 怡红院美国分院一区二区 | 国产99久久九九免费精品无码 | 男人和女人一起愁愁愁很痛 | 亚洲AV久久久噜噜噜久久 | 美女18毛片免费视频 | 洲精品无码高潮喷水A片 | 如懿传免费观看在线全集 | 2019久久这里只精品热在线观看 | 不卡一区二区高清观看视频 | 5g在视影讯天天5g免费观看 | 久久6699精品国产人妻 | 国产精品美女久久久久AV超清 | 伊人久久综在合线亚洲 |