資料介紹
在一個C/C++程序能正常運行之前,相關的C/C++運行時(run-time)環境首先要正確建立。在CCS軟件編程的情況下,C/C++的實時運行庫RTS的源程序庫rts.src中包含了名為boot.c或者boot.asm的啟動程序(在一些TI的例子里,則使用了CodeStartBranch.asm來完成啟動工作,它會自動調用庫文件中的boot.asm),用于在系統啟動后調用c_int00函數,并通過其中的操作來完成運行時環境的建立。通常情況下,c_int00函數位于rts2800.lib庫函數中的boot.obj(即TI官方編譯boot.c或者boot.asm生成的目標文件)下,這也就是為什么我們在C28x編程的情況下通常要把rts2800.lib庫函數加入工程中的原因(其它器件則根據型號、系列添加對應的庫文件;否則就會出現初學者經常遇到的找不到boot.c之類的錯誤)。
注:小型內存模型含義是已初始化的段被鏈接至低 64Kw(字)可尋址空間內的非易失性內存,它使用rts2800.lib。對于定點器件,如果使用大內存模型(超過64K字),則需要使用庫 rts2800_ml.lib;對于含有FPU的器件,用于標準 C 語言代碼的為 rts2800_fpu32.lib,或者用于 C++ 代碼的 rts2800_fpu32_eh.lib(沒有針對浮點器件的較小內存模型庫)。在 CCS v5/v6 中,有一個針對庫的“自動”設置,此設置可據項目的設置(例如,浮點支持和內存模型選擇)讓 CCS 自動選擇正確的庫來使用。對于 DSP/BIOS 項目,DSP/BIOS 將負責將所需的庫包括在內,我們用戶不需要在項目中包含任何運行支持庫。
如果在鏈接器選項中我們使用了--ram_model或者--rom_mode,則_c_int00函數自動被配置為整個程序執行的入口點。此外,在CPU復位之后(相當于一個軟件或者硬件的復位中斷),我們也可以把整個程序的入口點指向_c_int00,例如:
.def _Reset
.ref _c_int00
_Reset: .vec _c_int00, USE_RETA
則在執行CPU復位操作之后,系統自動跳轉到_c_int00函數。
在c_int00函數中完成的功能主要有:
1. 設置/初始化CPU的狀態和配置寄存器。
2. 為系統的棧定義一個.stack段,然后建立并初始化棧的指針。其中,棧需要被分配在單一的、連續的一段地址中,起始點為低地址,終點為高地址,棧指針SP的初始化值指向棧的頂端。
3. 從初始化表中,把數據復制到.bss段中,從而初始化全局變量。如果使用了—ram_model選項在加載程序時就初始化變量,則在程序運行前,會首先運行一個加載程序來完成變量的初始化。如果使用了--rom_model選項,則使用.cinit中的運行時初始化表來完成變量的初始化。
默認情況下,鏈接器使用--rom_model選項,在程序運行時完成變量的自動初始化。在程序運行時,.cinit段和其它初始化的段會被一起加載到內存中,從而使得C/C++的啟動程序可以自動把.cinit中的初始化表格復制到.bss段中,完成全局變量的自動初始化。這種方法的特點在于,初始化的表格可以被存放在更加便宜且大容量的ROM或者FLASH,而不是RAM中,并且可以在程序啟動時再自動加載到RAM中,這種方法在我們把程序燒寫到FLASH中再運行的時候是經常使用的。關于Flash運行的更多信息,可以參考TI的的一個應用報告:http://www.ti.com.cn/cn/lit/an/zhca550l/zhca550l.pdf,從 TMS320F28xxx 數字信號處理器 (DSP) 上的內部閃存存儲器上運行一個應用。
如果使用—ram_model的鏈接器選項,則鏈接器會在.cinit段的開頭中配置STYP_COPY位(0010h),告訴加載器不要把.cinit段自動加載到內存中,并且把cinit這個符號設置為-1(默認情況下符號cinit指向初始化表格),從而向啟動程序表明,內存中沒有初始化表格,在啟動時不需要執行運行時的初始化工作。在這種情況下,需要我們自定義一個加載程序,從而在加載程序時就完成初始化,它的主要內容包括:
ü 在目標文件中檢測.cinit段的存在;
ü 在.cinit段的開頭配置STYP_COPY位,使得該段不會被自動復制到內存中;
ü 需要我們理解并正確遵循初始化表格的格式。
這三個注意點貌似比較復雜,不過有讀者可能會問,我們在直接把程序通過JTAG下載到DSP的RAM中并運行的時候,貌似并沒有配置這么麻煩的步驟啊?那是因為CCS編程環境已經幫我們承擔了這一重要任務,在我們用仿真器來調試、運行的時候經常會使用到這個方式。
注意:在C/C++程序運行之前,一些全局變量必須被賦予初始值。在ANSI/ISO C中,未明確初始化的全局和靜態變量在程序執行前都需要被初始化為0,C/C++的編譯器并不會對它們進行自動初始化。在把程序加載到RAM而不是ROM中的情況下,比較方便的方法是直接把.bss段初始化為0。
- 單片機 keil調試的時候進入不了main函數
- DSP軟件編程與算法實現 25次下載
- 在CCSv5內建立DSP庫 29次下載
- DSP的開發工具及開發環境的詳細資料說明 23次下載
- MDK main函數運行前的詳細資料分析 11次下載
- C語言程序的main函數免費下載 3次下載
- DSP的編程指令全集詳細資料(免費下載) 8次下載
- TMS320C54xC語言編程和運行環境的詳細中文資料概述 18次下載
- DSP編程技巧之運行時模型以及鉤子函數與庫函數 2次下載
- DSP編程技巧之編譯流程與處理器選項 2次下載
- ARM啟動文件中的__main, 介紹了C啟動函數的設計 9次下載
- DSP正弦函數程序 22次下載
- DSP之AD教程 18次下載
- DSP之CMD文件 17次下載
- DSP環境下C語言的編程優化 22次下載
- 如何查看及更改函數/函數塊的調用環境 653次閱讀
- main函數的三個參數 933次閱讀
- main函數不一定就是程序入口 551次閱讀
- KUKA建立函數的方法和例子 996次閱讀
- 如何搭建Python編程環境 4945次閱讀
- 單片機main()函數退出之后,程序會跑去哪里? 665次閱讀
- 深入理解函數式編程(下) 701次閱讀
- 深入理解函數式編程(上) 637次閱讀
- C語言編程中main()函數退出之后程序去哪兒了 2571次閱讀
- 單片機led模塊定義函數的問題 1514次閱讀
- main函數的末尾沒有return語句會有什么影響 5887次閱讀
- 如何解決STM32調試無法進入main函數的問題? 1.5w次閱讀
- 淺談C語言return語句和main 函數的返回值 5161次閱讀
- Curiosity PIC32MZEF學習教程之:如何建立獨立的工程 2152次閱讀
- 詳解單片機程序的運行過程 9465次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1489次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 91次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 9次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 3次下載 | 免費
- 8基于單片機的紅外風扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30319次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多