Ⅰ 嵌入式系統自學
嵌入式系統軟體工程 方法實用技術及應用,免費下載
鏈接:https://pan..com/s/10No3IypKyLg01bV4T9b22w
《嵌入式系統軟體工程:基礎知識、方法和應用》系統地闡述嵌入式系統軟體工程所涉及的過程、方法、內容,以及在典型工業領域中的應用。全書內容分為兩大部分:第一部分介紹嵌入式系統軟體工程方法論,主要包括嵌入式軟體的開發過程(需求工程、軟體和系統體系結構、編程和測試等內容),開發和測試中所採用的標准,與安全性相關的軟體系統的准入,以及嵌入式軟體所涉及的法律問題:第二部分介紹嵌入式系統軟體在汽車領域、軌道交通領域、航天領域、醫療器械、工業自動化、通信系統中的應用,在每個應用領域重點介紹具體應用領域的一些特定需求、技術和限制條件,以及它們對於嵌入式系統軟體開發過程的影響。
Ⅱ 幫忙求解DSP中 CMD文件含義
1命令文件的組成
命令文件的開頭部分是要鏈接的各個子目標文件的名字,這樣鏈接器就可以根據子目標文件名,將相應的目標文件鏈接成一個文件;接下來就是鏈接器的操作指令,這些指令用來配置鏈接器,接下來就是MEMORY和SECTIONS兩個偽指令的相關語句,必須大寫。MEMORY,用來配置目標存儲器,SECTIONS用來指定段的存放位置。結合下面的典型DOS環境的命令文件link.cmd來做一下說明:
file.obj //子目標文件名1
file2.obj //子目標文件名2
file3.obj //子目標文件名3
- o prog.out //連接器操作指令,用來指定輸出文件
- m prog.m //用來指定MAP文件
MEMORY
{ 略 }
SECTIONS
{ 略 }
otherlink.cmd
本命令文件link.cmd要調用的otherlink.cmd等其他命令文件,則文件的名字要放到本命令文件最後一行,因為放開頭的話,鏈接器是不會從被調用的其他命令文件中返回到本命令文件。
2 MEMORY偽指令
MEMORY用來建立目標存儲器的模型,SECTIONS指令就可以根據這個模型來安排各個段的位置,MEMORY指令可以定義目標系統的各種類型的存儲器,及容量。MEMORY的語法如下:
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關鍵詞對獨立的存儲空間進行標記,頁號n的最大值為255,實際應用中一般分為兩頁,PAGE 0程序存儲器和PAGE 1數據存儲器。
name存儲區間的名字,不超過8個字元,不同的PAGE上可以出現相同的名字(最好不用,免的搞混),一個PAGE內不許有相同的name。
attr的屬性標識,為R表示可讀;W可寫X表示區間可以裝入可執行代碼;I表示存儲器可以進行初始話,什麼屬性代碼也不寫,表示存儲區間具有上述的四種屬性,基本上我們都選擇這種寫法。
origin:略。
length:略。
下面是我經常用的2407的簡單寫法大家參考,程序從0x060是要避開加密位,不從0x0044開始更可靠一點,此例中的同名的頁可以只寫第一個,其後省略,但寫上至少安全一點:
MEMORY
{
PAGE 0: VECS: origin = 0x0000, length 0x40
PAGE 0: PROG: origin = 0x0060, length 0x6000
PAGE 1: B0 : origin = 0x200, length 0x100
PAGE 1: B1 : origin = 0x300, length 0x100
PAGE 1: DATA: origin = 0x0860, length 0x0780
}
3 SECTIONS偽指令
SECTIONS指令的語法如下:
SECTIONS
{
.text: {所有.text輸入段名} load=載入地址 run =運行地址
.data: {所有.data輸入段名} load=載入地址 run =運行地址
.bss: {所有.bss輸入段名} load=載入地址 run =運行地址
.other: {所有.other輸入段名} load=載入地址 run =運行地址
}
SECTIONS必須用大寫字母,其後的大括弧里是輸出段的說明性語句,每一個輸出段的說明都是從段名開始,段名之後是如何對輸入段進行組織和給段分配存儲器的參數說明:
以.text段的屬性語句為例,「{所有.text輸入段名}」這段內容用來說明連接器輸出段的.text段由哪些子目標文件的段組成,舉例如下
SECTIONS
{
.text:{ file1.obj(.text) file2(.text) file3(.text,cinit)}略
}
指明輸出段.text要鏈接file1.obj的.text和 file2的.text 還有file3的.text和.cinit。在CCS的SECTIONS里通常只寫一個中間沒有內容的「{ }」就表示所有的目標文件的相應段
接下來說明「load=載入地址 run =運行地址」鏈接器為每個輸出段都在目標存儲器里分配兩個地址:一個是載入地址,一個是運行地址。通常情況下兩個地址是相同的,可以認為輸出段只有一個地址,這時就可以不加「run =運行地址」這條語句了;但有時需要將兩個地址分開,比如將程序載入到FLASH,然後放到RAM中高速運行,這就用到了運行地址和載入地址的分別配置了,如下例所示:
.const :{略} load = PROG run = 0x0800
常量載入在程序存儲區,配置為在RAM里調用。
「load=載入地址」的幾種寫法需要說明一下,首先「load」關鍵字可以省略,「=」可以寫成「>」, 「載入地址」可以是:地址值、存儲區間的名字、PAGE關鍵詞等,所以大家見到「.text:{ } > 0x0080」這樣的語句可千萬不要奇怪。「run =運行地址」中的
Ⅲ TMS320F2407A的詳細資料
TMS320F2407A是一款高速,高性能,低成本的微處理器,其內部集成了眾多數控系統所需的外擴設備,可以實現SPI,SCI,PWM, A/D等功能。其內部的兩個事件管理器模塊EVA和EVB,各包含了兩個16位通用定時器及8個16位的脈寬調制(PWM)通道,可應用於電機控制及其他逆變器控制領域。美中不足的是,該系列DSP內部沒有D/A功能,該功能通常須外接數模轉換晶元來實現,這不僅增加了系統的成本,也使系統設計復雜化。本文提出了一種使用F2407A內部的PWM信號,經濾波處理後實現D/A功能的方法。實驗結果表明,其轉換精度可以達到10位以上專用D/A晶元的精度,且該方法設計簡單,有較好的實用價值。
1 D/A實現原理
在F2407A型DSP中,通過軟體編程可以很方便地對PWM信號實現周期和占空比的控制。PWM信號是一組幅值為3.3V的方波,可以通過傅里葉變換,使其分成直流和交流兩部分,如圖1所示,其中ud(t)是輸出的PWM信號,Uo是PWM信號中的直流成分,ua(t)是信號中的交流成分。
圖1 PWM信號分解原理圖
將ud(t)用傅里葉級數表示,即
ud(t)=Uo+ansin2nπft+bncos2nπft (1)
其中:
an=ud(t)sin2nπftdt (2)
bn=ud(t)cos2nπftdt (3)
Uo=ud(t)dt (4)
式中:f,T分別是PWM信號頻率和周期。
設PWM波形具有偶函數特性,即ud(t)=ud(-t),則式(1)中an=0,
bn={sin(nπD)-sin[2nπ]} (5)
式中:n=1,2,3……;
D是PWM的占空比。
則直流電壓為
Uo=3.3D(V) (6)
從理論上分析,改變占空比就可以使直流輸出電壓Uo在0~3.3V范圍內變化。輸出的諧波頻率是PWM頻率的倍數,一般可以通過低通濾波器濾除。PWM頻率越高,濾波效果越好。
2 D/A精度分析
F2407A的工作頻率為40MHz,內部寄存器長度為16位字長。PWM信號通過定時器計數的方式在周期中斷中獲得,因此,不可避免存在一個計數步長的量化誤差。這個誤差會產生一個紋波疊加在輸出直流電壓上,因此,應盡量減少。通常當PWM的頻率為f時,DSP工作頻率為fc時,這個量化誤差電壓值為
=3.3×(V)(7)
例如,當f=20kHz,=1.65mV,其解析度為1/2000,接近11位D/A晶元的解析度。
可見,當PWM頻率越低,DSP產生定時中斷所需的計數值越大,其量化誤差的影響越小。但是,考慮到輸出低通濾波器的特性,當PWM頻率降低時,產生的諧波頻率也隨之降低,則對於帶寬和截止頻率一定的濾波器來說,就會有更多的低次諧波通過濾波器,這部分諧波疊加在直流量上同樣會產生誤差電壓。因此,本文 D/A轉換的誤差主要來源於這兩個方面,由於兩個誤差具有相互制約性,必須通過折中的方法選取一個合適的PWM載波頻率。表1(通過Matlab模擬)是選用不同的PWM頻率和不同階數的濾波器時的性能比較。模擬時採用截止頻率為2kHz的巴特沃茲濾波器。圖2是當PWM信號頻率為20kHz時,經不同階數濾波器後直流電壓的紋波比較,圖中從上到下依次是二階、三階、四階的濾波效果。圖3是PWM信號頻率為40kHz時,濾波後直流電壓的紋波,圖中從上到下依次為二階、三階、四階的濾波效果。
圖2 f=20kHz時不同階數濾波器時的輸出紋波
圖3 f=40kHz時不同階數濾波器時的輸出紋波
表1 不同階數濾波特性的比較 濾波器 f/kHz 紋波幅值/V D/A位數
二階 20 0.04 6.4
二階 40 0.004 9.7
三階 20 0.0044 9.6
三階 40 0.0005 12.7
四階 20 0.0004 13.0
四階 40 0.00005 16.0
3 模擬濾波器的設計
濾波器按不同的頻域或時域特性要求,可分為巴特沃茲(Butterworth)型,契比雪夫(Chebyshev)型,貝賽爾(Bessel)型,橢圓型等標准型。相同的電路,通過選取不同的R和C參數可以實現不同的類型。其中,巴特沃茲型濾波器具有最平坦的通帶幅頻特性;契比雪夫型特點是通帶內增益有波動,但這種濾波器的通帶邊界下降快;貝賽爾型通帶邊界下降較為緩慢,其相頻特性接近線性;橢圓型的濾波特性很好,但模擬電路復雜,元件選擇較為困難,實現難度大,故不常採用。本設計要求通帶盡量平坦,而且過渡帶和截止帶衰減盡量快,因此,只考慮巴特沃茲型。
模擬二階、三階電路結構如圖4所示。對於圖4(a)所 示 的 二 階 電 路 , 其 傳 遞 函 數 為
H(s)= ( 8)
對 於 圖 4(b)所 示 的 三 階 電 路 , 其 傳 遞 函 數 為
H(s)= ( 9)
式 中 :a0=R1R2R4C1C2C3;
a1=[R4C2C3(R1+R2)R1R2C1C2];
a2=[R4C3+C2(R1+R2)]。
具 體 參 數 計 算 如 下 。
(a) 二階電路圖 (b) 三階電路圖
圖4 巴特沃茲型濾波電路
3.1 兩階電路參數計算
巴特沃茲二階濾波器的一般表達式為
H(s)=
式中:p=s/ωc;
b1=ωc2R1R2C1C2=1;
b0=ωc(R1C2+R2C2)=。
取ωc=2πf=4000π時,可得R1=0.68kΩ,R2=10kΩ,C1=0.1μF,C2=0.01μF。實際截止頻率為1930Hz。
3.2 三階電路參數計算
三階巴特沃茲濾波器的一般表達式為
H(s)=
式中:b2=ωc3R1R2R4C1C2C3=1;
b1=ωc2[R4C2C3(R1+R2)+R1R2C1C2]=2;
b0=ωc[R4C3+C2(R1+R2)]=2。
取ωc=2πf=4000π,可得R1=1.2kΩ,R2=10kΩ,R4=0.4kΩ,C1=0.1μF,C2=0.01μF,C3=0.1μF,實際截止頻率為1989Hz。
4 實驗結果
圖5是採用40kHz頻率時的濾波效果,CH1所示的是經二階模擬濾波器後的直流電壓,CH2所示的是經三階模擬濾波器後的直流電壓,濾波器的具體參數選用同上文,PWM的占空比為0.5。
圖5 不同階濾波效果的比較(1V/div,20μs/div)
圖5中CH1的波形中有較大的紋波毛刺疊加在直流分量上,其輸出平均值在1.6V左右,轉換精度不高。CH2的波形和CH1相比,紋波分量減小很明顯,輸出波形的平均值在1.65V左右,理論分析該波形轉換分辯率可以達到12.7左右,已經接近或達到一般D/A晶元的解析度要求,因此,有較好的應用價值。
5 結語
通過外接濾波電路,DSP輸出的PWM信號可以完成D/A功能的擴展,且合理選擇輸出PWM的頻率和濾波器的階數,可以使轉換的解析度達到12位以上,且外設濾波電路較為簡單,因此,具有一定的應用價值.
Ⅳ DSP TMS320F28335如何去學,怎麼去用主要是它的工作原理怎麼去掌握
28335跟2812差不多啊,就是外設多一些,是浮點DSP,引腳都是一樣的內部存儲器也變化了,先學內核,外設用到什麼再去學,這方面的中文資料較少,只有上TI網站下載技術文檔,文檔編號:sprufbob,sprs439d.還有很多外設的文檔資料,都是PDF格式,還有一個很文檔很重要:sprc530.這個文檔中定義了該DSP中所有寄存器,他不像平常C語言用宏定義的形式,而是用得結構體,共同體,位定義,你看了就知道了。還有就是TI網上還有許多外設應用的例子。你可以在板子上試驗。我也剛學一年,理解不深,希望對你有幫助!