




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、輕松學(xué)會(huì)DSP第章C程序編寫和編譯,1,第五章 C程和運(yùn)行環(huán)境,TMS320C54x C語(yǔ)言編程 C語(yǔ)言和匯編語(yǔ)言混合編程 運(yùn)行環(huán)境及C編譯工具,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,2,一 TMS320C54x C語(yǔ)言編程,使用ANSI C,即American National Standards Institute 定義的C語(yǔ)言。,1、數(shù)據(jù)類型,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,3,數(shù)據(jù)類型,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,4,定點(diǎn)型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù):語(yǔ)法使用方法同傳統(tǒng)的C沒(méi)有區(qū)別,但后臺(tái)執(zhí)行會(huì)有所不同。主要是通過(guò)rts.lib進(jìn)行相應(yīng)的處理。,數(shù)據(jù)類型,輕松學(xué)會(huì)DSP第章C程序編寫和
2、編譯,5,2、關(guān)鍵字(keyword),const interrupt,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,6,關(guān)鍵字,near and far,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,7,3、寄存器變量,只有AR1和AR6可以作寄存器變量 寄存器變量在訪問(wèn)時(shí)可以比一般的變量占用更少時(shí)間,但是,建立寄存器變量需要4個(gè)指令周期,故如果不是多次使用的變量不要設(shè)為寄存器變量.,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,8,寄存器變量,變量只能定義為char,short,int,pointers 寄存器變量使用時(shí)有很多注意事項(xiàng),輕松學(xué)會(huì)DSP第章C程序編寫和編譯,9,4、I/O端口訪問(wèn),如果訪問(wèn)的I/O空間地址
3、為N(16進(jìn)制),則定義一個(gè)端口變量portN,然后把portN作為一般變量使用. 語(yǔ)法 ioport type portN 其中type可以是char, short, int , unsigned variable.,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,10,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,11,二、 C語(yǔ)言和匯編語(yǔ)言混合編程,1、C中使用匯編語(yǔ)句,語(yǔ)法為 asm (“ assembler text”); 注意開頭要有空格,否則作為標(biāo)號(hào)處理 由于C文件中的匯編語(yǔ)句在編譯時(shí)(由C源文件變?yōu)閰R編源文件)并不進(jìn)行語(yǔ)法檢查,所以注意該語(yǔ)句在編譯后的位置是不是用戶需要的位置.,輕松學(xué)會(huì)DSP第章C
4、程序編寫和編譯,12,2、C文件中調(diào)用匯編函數(shù),匯編文件中程序代碼標(biāo)號(hào)作為函數(shù)名,該標(biāo)號(hào)要有“_”前綴;而且標(biāo)號(hào)要是全局標(biāo)號(hào). 匯編文件中要有ret/retd指令表示代碼結(jié)束. 參數(shù)和返回結(jié)果如果是單個(gè)數(shù)據(jù),放在A中. C文件中需要把該函數(shù)作為外部函數(shù),輕松學(xué)會(huì)DSP第章C程序編寫和編譯,13,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,14,3、C使用匯編中變量,從C程序中訪問(wèn)在匯編程序中定義的變量或常數(shù),可以分為以下3種情況: 訪問(wèn)在.bss塊中定義的變量 對(duì)于訪問(wèn)不在.bss塊中定義的變量 對(duì)于在匯編程序中用.set和.global偽指令定義的全局常數(shù),也可以使用特殊的操作從C程序中訪問(wèn)它們。,
5、輕松學(xué)會(huì)DSP第章C程序編寫和編譯,15,C使用匯編中變量,(1)訪問(wèn)在.bss塊中定義的變量,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,16,C使用匯編中變量,(2) 對(duì)于訪問(wèn)不在.bss塊中定義的變量,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,17,C使用匯編中變量,(3)對(duì)于在匯編程序中用.set和.global偽指令定義的全局常數(shù).,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,18,4、內(nèi)聯(lián)函數(shù),輕松學(xué)會(huì)DSP第章C程序編寫和編譯,19,內(nèi)聯(lián)函數(shù),輕松學(xué)會(huì)DSP第章C程序編寫和編譯,20,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,21,5、匯編文件中調(diào)用C函數(shù),從匯編程序調(diào)用C函數(shù)時(shí),第一個(gè)參數(shù)(最左邊)必須放
6、入累加器A中,剩下的參數(shù)按自右向左的順序壓入堆棧。 調(diào)用C函數(shù)時(shí),注意C函數(shù)只保護(hù)了幾個(gè)特定的寄存器,而其他是可以自由使用的。 調(diào)用前先對(duì)AR0-AR7和其他寄存器壓棧保護(hù),然后使用跳轉(zhuǎn)語(yǔ)句B執(zhí)行。 長(zhǎng)整型和浮點(diǎn)數(shù)在存儲(chǔ)器中存放的順序是低位字在高地址,高位字在低地址。 參數(shù)通過(guò)A傳遞,即在跳轉(zhuǎn)之前給A,返回值也通過(guò)A接收。 編譯器在所有標(biāo)識(shí)符(函數(shù)名、變量名等)前加下劃線“_”。,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,22,6、匯編文件中使用C文件變量,C文件中該變量要在MAIN()函數(shù)外定義為全局變量; 匯編中需要把該變量聲明為全局標(biāo)號(hào); 匯編文件中使用絕對(duì)地址尋址方式*(_var_name)
7、方式訪問(wèn),var_name為變量名,同時(shí)要有“_”前綴。,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,23,三、運(yùn)行環(huán)境及C編譯工具,1、運(yùn)行環(huán)境 C54x將存儲(chǔ)器處理為程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器兩個(gè)線性塊。程序存儲(chǔ)器包含可執(zhí)行代碼;數(shù)據(jù)存儲(chǔ)器主要包含外部變量、靜態(tài)變量和系統(tǒng)堆棧。編譯器的任務(wù)是產(chǎn)生可重定位的代碼,允許鏈接器將代碼和數(shù)據(jù)定位進(jìn)合適的存儲(chǔ)空間。C編譯器對(duì)C語(yǔ)言編譯后除了生成3個(gè)基本段,即.text、.data、.bss外,還生成.cinit、.const、.stack、.sysmem段。,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,24,.text 包括程序代碼和常數(shù) .cinit 包括初始化數(shù)據(jù)構(gòu)
8、成的一張表 .const 包括字符串常量和初始化的全局、靜態(tài)的變量,即有const定義的變量和常量 .switch 包括用于switch的常數(shù)表 .bss 變量數(shù)據(jù) .stack 程序運(yùn)行時(shí)的堆棧 .sysmem 用于malloc函數(shù)運(yùn)行時(shí)使用,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,25,C/C+系統(tǒng)堆棧.stack,.stack不同于DSP匯編指令定義的堆棧。DSP匯編程序中要將堆棧指針SP指向一塊RAM,用于保存中斷、調(diào)用時(shí)的返回地址,存放PUSH指令的壓棧內(nèi)容。 .stack定義的系統(tǒng)堆棧實(shí)現(xiàn)的功能是保護(hù)函數(shù)的返回地址,分配局部變量,在調(diào)用函數(shù)時(shí)用于傳遞參數(shù),保護(hù)臨時(shí)結(jié)果。 .stack定
9、義的段大?。ǘ褩4笮。┛捎面溄悠鬟x項(xiàng)-stack size設(shè)定,鏈接器還產(chǎn)生一個(gè)全局符號(hào)_ _STACK_SIZE,并賦給它等于堆棧長(zhǎng)度的值,以字為單位,缺省值為1K。,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,26,初始化過(guò)程,C程序入口地址默認(rèn)為_c_int00,main不是入口地址。從_c_int00到main還有許多的代碼,起到初始化作用 這段代碼從rst.lib庫(kù)中獲得,即boot.asm,其的作用包括: 1、為堆棧在.bss段中保留空間,并初始化堆棧指針 2、從.cinit中把全局初始化變量放到.bss段中(ROM初始模式) 3、調(diào)用main()函數(shù),輕松學(xué)會(huì)DSP第章C程序編寫和編譯,
10、27,2、C編譯工具,(1) C編譯器的組成 代碼分析工具Parser 優(yōu)化器Optimizer 代碼生成器Code generator 匯編器Assembler 鏈接器Linker,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,28,(2)、工作流程,Parser,第一階段,生成.IF文件 Optimizer,第二階段,生成.OPT文件,該階段可以選擇不使用 Code generator,第三階段,生成.ASM文件 Assemble,第四階段,生成.OBJ文件 Linke ,第五階段,生成.OUT文件,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,29,(3)、執(zhí)行方法,是一個(gè)C文件,cl500產(chǎn)生.obj文件,因?yàn)樗麜?huì)自動(dòng)調(diào)用代碼分析,優(yōu)化,代碼生成,匯編,即下列命令:ac500,opt500,cg500,asm500;,輕松學(xué)會(huì)DSP第章C程序編寫和編譯,30,z 激活鏈接器,生成的文件可以直接是.out文件,即執(zhí)行ac500,opt500,cg500,asm500,lnk
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 1 My school Part A Let's learn(教學(xué)設(shè)計(jì))-2023-2024學(xué)年人教PEP版英語(yǔ)四年級(jí)下冊(cè)
- 砌磚質(zhì)量合同范本
- 20 美麗的小興安嶺 第二課時(shí) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語(yǔ)文三年級(jí)上冊(cè)統(tǒng)編版
- 9 玩得真開心 (教學(xué)設(shè)計(jì))-2023-2024學(xué)年道德與法治一年級(jí)上冊(cè)統(tǒng)編版
- 房屋全款購(gòu)買合同范本
- 制作預(yù)案合同范本
- 5的乘法口訣(教學(xué)設(shè)計(jì))- 2024-2025學(xué)年二年級(jí)上冊(cè)數(shù)學(xué)人教版
- 舊物交易合同范本
- 4 地球-我們的家園:《環(huán)境問(wèn)題敲響了警鐘》 (教學(xué)設(shè)計(jì))統(tǒng)編版道德與法治六年級(jí)下冊(cè)
- 2023-2024學(xué)年清華版(2012)信息技術(shù)三年級(jí)下冊(cè)第一單元《3課 妙筆生花-文本的修飾》教學(xué)設(shè)計(jì)
- 2023年2月對(duì)醫(yī)療機(jī)構(gòu)的培訓(xùn)(新區(qū)醫(yī)院版)
- “源網(wǎng)荷儲(chǔ)”一體化項(xiàng)目(儲(chǔ)能+光伏+風(fēng)電)規(guī)劃報(bào)告
- 100以內(nèi)加法減法口算練習(xí)題100題有答案
- 少兒美術(shù)課件- 9-12歲 素描班《感知力素描》
- 《靜心的力量》課件
- 續(xù)命湯系列-千金要方治療中風(fēng)
- 安全管理組織結(jié)構(gòu)分工圖
- 2023年《植物保護(hù)》專業(yè)考試題庫(kù)
- 六西格瑪(6Sigma)詳解及實(shí)際案例分析
- 華晨寶馬汽車4S店?duì)I銷策略畢業(yè)論文
- Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論