欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
CMD配置分析
對剛學(xué)習DSP的我,覺(jué)得首先有點(diǎn)無(wú)所適從.因為E文水平一般.面對一些芯片資料覺(jué)得有很多看不懂的地方.但后來(lái)從一DSP群里面一位同仁的建議其實(shí)E文資料也并不可怕.于是靜下心來(lái)在打開(kāi)電腦的同時(shí)把金山詞典打開(kāi).慢慢的也可以理解文中意思.對于我來(lái)說(shuō)也是一個(gè)提高了.在學(xué)習過(guò)程中我感覺(jué)就是CMD配置文件比較難,難的原因是對它的存儲器結構不熟.因為每個(gè)定義就是把存儲器空間的分配.下面是我個(gè)人的一些見(jiàn)解.一部分是從網(wǎng)上摘錄:

CMD的專(zhuān)業(yè)名稱(chēng)叫鏈接器配置文件,是存放鏈接器的配置信息的,我們簡(jiǎn)稱(chēng)為命令文件,其中比較關(guān)鍵的就是MEMORY和SECTIONS兩個(gè)偽指令的使用,常常令人困惑,系統出現的問(wèn)題也經(jīng)常與它們的不當使用有關(guān)。CCS是DSP軟件對DOS系統繼承的開(kāi)發(fā)環(huán)境,CCS的命令文件經(jīng)過(guò)DOS命令文件長(cháng)時(shí)間的引申發(fā)展,已經(jīng)變得非常簡(jiǎn)潔(不知道TI文檔有沒(méi)有詳細CMD配置說(shuō)明)。我學(xué)CMD是從DOS里的東西開(kāi)始的,所以也從DOS環(huán)境下的CMD說(shuō)起:

1.命令文件的組成
命令文件的開(kāi)頭部分是要鏈接的各個(gè)子目標文件的名字,這樣鏈接器就可以根據子目標文件名,將相應的目標文件鏈接成一個(gè)文件;接下來(lái)就是鏈接器的操作指令,這些指令用來(lái)配置鏈接器,接下來(lái)就是MEMORY和SECTIONS兩個(gè)偽指令的相關(guān)語(yǔ)句,必須大寫(xiě)。MEMORY,用來(lái)配置目標存儲器,SECTIONS用來(lái)指定段的存放位置。結合下面的典型DOS環(huán)境的命令文件link.cmd來(lái)做一下說(shuō)明:
file.obj          //子目標文件名1
file2.obj           //子目標文件名2
file3.obj           //子目標文件名3
- o prog.out        //連接器操作指令,用來(lái)指定輸出文件
- m prog.m       //用來(lái)指定MAP文件
MEMORY
{ 略 }
SECTIONS
{ 略 }
otherlink.cmd
本命令文件link.cmd要調用的otherlink.cmd等其他命令文件,則文件的名字要放到本命令文件最后一行,因為放開(kāi)頭的話(huà),鏈接器是不會(huì )從被調用的其他命令文件中返回到本命令文件。

2 MEMORY偽指令
MEMORY用來(lái)建立目標存儲器的模型,SECTIONS指令就可以根據這個(gè)模型來(lái)安排各個(gè)段的位置,MEMORY指令可以定義目標系統的各種類(lèi)型的存儲器及容量。MEMORY的語(yǔ)法如下:
MEMORY
{
PAGE 0 : name1[(attr)] : origin = constant,length = constant
      name1n[(attr)] : origin = constant,length = constant
PAGE 1 : name2[(attr)] : origin = constant,length = constant
      name2n[(attr)] : origin = constant,length = constant
PAGE n : namen[(attr)] : origin = constant,length = constant
      namenn[(attr)] : origin = constant,length = constant
}
PAGE關(guān)鍵詞對獨立的存儲空間進(jìn)行標記,頁(yè)號n的最大值為255,實(shí)際應用中一般分為兩頁(yè),PAGE0程序存儲器和PAGE1數據存儲器。
name存儲區間的名字,不超過(guò)8個(gè)字符,不同的PAGE上可以出現相同的名字(最好不用,免的搞混),一個(gè)PAGE內不許有相同的name。
attr的屬性標識,為R表示可讀;W可寫(xiě)X表示區間可以裝入可執行代碼;I表示存儲器可以進(jìn)行初始話(huà),什么屬性代碼也不寫(xiě),表示存儲區間具有上述的四種屬性,基本上我們都選擇這種寫(xiě)法。
origin:略。
length:略。
下面是經(jīng)常用的812的簡(jiǎn)單寫(xiě)法大家參考,
-l rts2800.lib
-w
-stack 400h
-heap 100
MEMORY
{
PAGE 0 :
*/





  
//RAMM0

MEMORY
{
PAGE 0 :
PRAMH0     : origin = 0x3f8000, length = 0x001000   
      
PAGE 1 :

RAMM0 : origin = 0x000000, length = 0x000400
RAMM1 : origin = 0x000400, length = 0x000400


DEV_EMU : origin = 0x000880, length = 0x000180
FLASH_REGS : origin = 0x000A80, length = 0x000060
CSM        : origin = 0x000AE0, length = 0x000010
XINTF    : origin = 0x000B20, length = 0x000020
CPU_TIMER0 : origin = 0x000C00, length = 0x000008
CPU_TIMER1 : origin = 0x000C08, length = 0x000008      
CPU_TIMER2 : origin = 0x000C10, length = 0x000008      
PIE_CTRL : origin = 0x000CE0, length = 0x000020
PIE_VECT : origin = 0x000D00, length = 0x000100


ECAN_A     : origin = 0x006000, length = 0x000100
ECAN_AMBOX : origin = 0x006100, length = 0x000100


SYSTEM     : origin = 0x007010, length = 0x000020
SPI_A    : origin = 0x007040, length = 0x000010
SCI_A    : origin = 0x007050, length = 0x000010
XINTRUPT : origin = 0x007070, length = 0x000010
GPIOMUX : origin = 0x0070C0, length = 0x000020
GPIODAT : origin = 0x0070E0, length = 0x000020
ADC        : origin = 0x007100, length = 0x000020
EV_A    : origin = 0x007400, length = 0x000040
EV_B    : origin = 0x007500, length = 0x000040
SPI_B    : origin = 0x007740, length = 0x000010
SCI_B    : origin = 0x007750, length = 0x000010
MCBSP_A : origin = 0x007800, length = 0x000040


CSM_PWL : origin = 0x3F7FF8, length = 0x000008


DRAMH0     : origin = 0x3f9000, length = 0x001000       
}

SECTIONS
{

//放在PAGE0
.reset           : > PRAMH0,    PAGE = 0
.text          : > PRAMH0,    PAGE = 0
.cinit           : > PRAMH0,    PAGE = 0

//放在PAGE1
.stack           : > RAMM1,    PAGE = 1
.bss          : > DRAMH0,    PAGE = 1
.ebss          : > DRAMH0,    PAGE = 1
.const           : > DRAMH0,    PAGE = 1
.econst       : > DRAMH0,    PAGE = 1    
.sysmem       : > DRAMH0,    PAGE = 1
  

DevEmuRegsFile : > DEV_EMU, PAGE = 1
FlashRegsFile     : > FLASH_REGS, PAGE = 1
CsmRegsFile    : > CSM,        PAGE = 1
XintfRegsFile     : > XINTF,    PAGE = 1
CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1    
CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1    
CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1    
PieCtrlRegsFile : > PIE_CTRL, PAGE = 1    
PieVectTable    : > PIE_VECT, PAGE = 1


ECanaRegsFile     : > ECAN_A,    PAGE = 1  
ECanaMboxesFile : > ECAN_AMBOX PAGE = 1


//在*.cmd中定義段在空間中的位置然后在別的地方再把另外的變量指向這個(gè)空間
SysCtrlRegsFile : > SYSTEM,     PAGE = 1
SpiaRegsFile    : > SPI_A,    PAGE = 1
SciaRegsFile    : > SCI_A,    PAGE = 1
XIntruptRegsFile   : > XINTRUPT, PAGE = 1
GpioMuxRegsFile : > GPIOMUX, PAGE = 1
GpioDataRegsFile   : > GPIODAT     PAGE = 1
AdcRegsFile    : > ADC,        PAGE = 1
EvaRegsFile    : > EV_A,    PAGE = 1
EvbRegsFile    : > EV_B,    PAGE = 1
ScibRegsFile    : > SCI_B,    PAGE = 1
McbspaRegsFile : > MCBSP_A, PAGE = 1


CsmPwlFile    : > CSM_PWL,     PAGE = 1

}



2.用戶(hù)定義:
#pragma CODE_SECTION (symbol, "section name"); #pragma DATA_SECTION (symbol, "section name")

單個(gè)地址的時(shí)候可以使用 #define
如 #define my_data *(volatile unsigned int*)0x000C

在數組變量時(shí) 使用#pragma 宏

XXX.h/XXX.c
#pragma DATA_SECTION(my_data,".data_section")
unsigned char my_data[1024];
在xxx.cmd中建立.data_section并賦予地址就可以了

*/

SECTIONS必須用大寫(xiě)字母,其后的大括號里是輸出段的說(shuō)明性語(yǔ)句,每一個(gè)輸出段的說(shuō)明都是從段名開(kāi)始,段名之后是如何對輸入段進(jìn)行組織和給段分配存儲器的參數說(shuō)明:
以.text段的屬性語(yǔ)句為例,“{所有.text輸入段名}”這段內容用來(lái)說(shuō)明連接器輸出段的.text段由哪些子目標文件的段組成,舉例如下
SECTIONS
{
.text:{   file1.obj(.text) file2(.text) file3(.text,cinit)}略
}
指明輸出段.text要鏈接file1.obj的.text和 file2的.text 還有file3的.text和.cinit。在CCS的SECTIONS里通常只寫(xiě)一個(gè)中間沒(méi)有內容的“{ }”就表示所有的目標文件的相應段
接 下來(lái)說(shuō)明“load=加載地址   run =運行地址”鏈接器為每個(gè)輸出段都在目標存儲器里分配兩個(gè)地址:一個(gè)是加載地址,一個(gè)是運行地址。通常情況下兩個(gè)地址是相同的,可以認為輸出段只有一個(gè)地址,這時(shí)就可以不加“run =運行地址”這條語(yǔ)句了;但有時(shí)需要將兩個(gè)地址分開(kāi),比如將程序加載到FLASH,然后放到RAM中高速運行,這就用到了運行地址和加載地址的分別配置了,如下例所示:
.const :{略} load = PROG   run = 0x0800
常量加載在程序存儲區,配置為在RAM里調用。
“load =加載地址”的幾種寫(xiě)法需要說(shuō)明一下,首先“load”關(guān)鍵字可以省略,“=”可以寫(xiě)成“>”, “加載地址”可以是:地址值、存儲區間的名字、PAGE關(guān)鍵詞等,所以大家見(jiàn)到“.text:{ } > 0x0080”這樣的語(yǔ)句可千萬(wàn)不要奇怪。“run =運行地址”中的“ = ”可以用“>”,其它的簡(jiǎn)化寫(xiě)法就沒(méi)有了。大家不要亂用
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
存儲器配置與CMD文件的編寫(xiě)
關(guān)于CMD文件
dsp2812?cmd配置指南
CMD文件的編寫(xiě) zz
DSP TMS320C6000基礎學(xué)習(4)
DSP 中的自定義段和CMD
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久