dsp中pragma的用法


ti的幫助文檔里是這么講的:

The DATA_SECTION pragma allocates space for the symbol in a section called section name.
The syntax for the pragma in C is:

#pragma DATA_SECTION (symbol, "section name");

我個人的理解是:

定義一個數據段:
          段名為:    "section name"
          段的內容在: symbol 里
在CCS編程中,如果我們不指定變量的存放位置,編譯器會自動的給變量分配一個位置,但是如果有的時候需要把變量放在一個特定的空間內,我們應該如何操作呢,CCS提供了如下的兩個指令
#pragma CODE_SECTION
#pragma DATA_SECTION
其中data_section是針對數據空間的,code_section是針對程序空間的,具體的使用辦法是
#pragma DATA_SECTION(bufferB, ”my_sect”)
char bufferB[512];
在.cmd文件中建立對應的section就可以使用了。

注意:在使用#pragma DATA_SECTION時,應該先開辟一個空間,即:#pragma DATA_SECTION(bufferB, ”my_sect”),然后再定義該空間的大小:char bufferB[512];

 

#pragma,是一個編譯控制指令,可以在編譯時動態地調整編譯選項,這種指令在不同的編譯系統中是不同的.

#pragma DATA_ALIGN( symbol,constant)

指令的作用是:排列排列symbol到constant指點的列邊界上.

 

#pragma DATA_ALIGN( rxdata_stream,   128)
就是讓rxdata_stream地址的末尾7位是0(二進制地址),就是128字節對齊。
對齊的目的,一般是位了CACHE讀寫外存。
如果一個CACHE的line是128字節。這樣,如果數據128字節對齊,那么取一個128字節的數據,只使用一個CACHE行就夠了。

char efd;
#prgma DATA_ALIGN(efd, 8)
編譯時一定會把efd變量的地址安排在8字節對齊的位置上,也即efd地址的低3位一定為0。

 

自定義段(C語言)
#pragma DATA_SECTION(函數名或全局變量名,"用戶自定義在數據空間的段名");
#pragma CODE_SECTION(函數名或全局變量名,"用戶自定義在程序空間的段名");
不能在函數體內聲明。必須在定義和使用前聲明
#pragma可以阻止對未調用的函數的優化
#pragma DATA_ALIGN( symbol,constant)

指令的作用是:排列排列symbol到constant指點的列邊界上.
例如

#pragma DATA_ALIGN( rxdata_stream,   128)
就是讓rxdata_stream地址的末尾7位是0(二進制地址),就是128字節對齊。
對齊的目的,一般是位了CACHE讀寫外存。
如果一個CACHE的line是128字節。這樣,如果數據128字節對齊,那么取一個128字節的數據,只使用一個CACHE行就夠了。
#prgma DATA_ALIGN(efd, 8)
編譯時一定會把efd變量的地址安排在8字節對齊的位置上,也即efd地址的低3位一定為0。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM