www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件


清華大學(xué) 曾 鳴
引言
;;;;實(shí)時(shí)操作系統(tǒng)的使用,能夠簡化嵌入式系統(tǒng)的應(yīng)用開發(fā),有效地確保穩(wěn)定性和可靠性,便于維護(hù)和二次開發(fā)。
μC/OS-II是一個(gè)基于搶占式的實(shí)時(shí)多任務(wù)內(nèi)核,可固化、可剪裁、具有高穩(wěn)定性和可靠性,除此以外,μC/OS-II的鮮明特點(diǎn)就是源碼公開,便于移植和維護(hù)。
在μC/OS-II官方的主頁上可以查找到一個(gè)比較全面的移植范例列表。但是,在實(shí)際的開發(fā)項(xiàng)目中,仍然沒有針對(duì)項(xiàng)目所采用芯片或開發(fā)工具的合適版本。那么,不妨自己根據(jù)需要進(jìn)行移植。
本文則以在TMS320C6711 DSP上的移植過程為例,分析了μC/OS-II在嵌入式開發(fā)平臺(tái)上進(jìn)行移植的一般方法和技巧。μC/OS-II移植的基本步驟
在選定了系統(tǒng)平臺(tái)和開發(fā)工具之后,進(jìn)行μC/OS-II的移植工作,一般需要遵循以下的幾個(gè)步驟:
● 深入了解所采用的系統(tǒng)核心
● 分析所采用的C語言開發(fā)工具的特點(diǎn)
● 編寫移植代碼
● 進(jìn)行移植的測(cè)試
● 針對(duì)項(xiàng)目的開發(fā)平臺(tái),封裝服務(wù)函數(shù)
(類似80x86版本的PC.C和PC.H)
系統(tǒng)核心
;;;;無論項(xiàng)目所采用的系統(tǒng)核心是MCU、DSP、MPU,進(jìn)行μC/OS-II的移植時(shí),所需要關(guān)注的細(xì)節(jié)都是相近的。
;;;;首先,是芯片的中斷處理機(jī)制,如何開啟、屏蔽中斷,可否保存前一次中斷狀態(tài)等。還有,芯片是否有軟中斷或是陷阱指令,又是如何觸發(fā)的。
;;;;此外,還需關(guān)注系統(tǒng)對(duì)于存儲(chǔ)器的使用機(jī)制,諸如內(nèi)存的地址空間,堆棧的增長方向,有無批量壓棧的指令等。
;;;;在本例中,使用的是TMS320C6711 DSP。這是TI公司6000系列中的一款浮點(diǎn)型號(hào),由于其時(shí)鐘頻率非常高,且采用了超常指令字(VLIW)結(jié)構(gòu)、類RISC指令集、多級(jí)流水等技術(shù),所以運(yùn)算性能相當(dāng)強(qiáng)大,在通信設(shè)備、圖像處理、醫(yī)療儀器等方面都有著廣泛的應(yīng)用。
;;;;在C6711中,中斷有3種類型,即復(fù)位、不可屏蔽中斷(NMI)和可屏蔽中斷(INT4-INT15)??善帘沃袛嘤蒀SR寄存器控制全局使能,此外也可用IER寄存器分別置位使能。而在C6711中并沒有軟中斷機(jī)制,所以μC/OS-II的任務(wù)切換需要編寫一個(gè)專門的函數(shù)實(shí)現(xiàn)。
;;;;此外,C6711也沒有專門的中斷返回指令、批量壓棧指令,所以相應(yīng)的任務(wù)切換代碼均需編程完成。由于采用了類RISC核心,C6711的內(nèi)核結(jié)構(gòu)中,只有A0-A15和B0-B15這兩組32bit的通用寄存器。 C語言開發(fā)工具
;;;;無論所使用的系統(tǒng)核心是什么,C語言開發(fā)工具對(duì)于μC/OS-II是必不可少的。
;;;;最簡單的信息可以從開發(fā)工具的手冊(cè)中查找,比如:C語言各種數(shù)據(jù)類型分別編譯為多少字節(jié);是否支持嵌入式匯編,格式要求怎樣;是否支持“interrupt”非標(biāo)準(zhǔn)關(guān)鍵字聲明的中斷函數(shù);是否支持匯編代碼列表(list)功能,等等。
;;;;上述的這樣一些特性,會(huì)給嵌入式的開發(fā)帶來很多便利。TI的C語言開發(fā)工具CCS for C6000就包含上述的所有功能。
;;;;而在此基礎(chǔ)上,可以進(jìn)一步地弄清開發(fā)工具的一些技術(shù)細(xì)節(jié),以便進(jìn)行之后真正的移植工作。
;;;;首先,開啟C編譯器的“匯編代碼列表(list)”功能,這樣編譯器就會(huì)為每個(gè)C語言源文件生成其對(duì)應(yīng)的匯編代碼文件。
;;;;在CCS開發(fā)環(huán)境中的方法是:在菜單“/Project/Build options”的“Feedback”欄中選擇“Interlisting:Opt/C and ASM(-s)”;或者,也可以直接在CCS的C編譯命令行中加上“-s”參數(shù)。
;;;;然后分別編寫幾個(gè)簡單的函數(shù)進(jìn)行編譯,比較C源代碼和編譯生成的匯編代碼。例如:
void FUNC_TEMP (void)
{
Func_tmp2(); //調(diào)用任一個(gè)函數(shù)
}
在CCS中編譯后生成的ASM代碼為:
.asg B15, SP // 宏定義
_FUNC_TEMP:
STW B3,*SP--(8) // 入棧
NOP 2
CALL _ Func_tmp2 //-----------
MVKL BACK, B3 // 函數(shù)調(diào)用
MVKH BACK, B3 //-----------
NOP 3
BACK: LDW *++SP(8),B3 // 出棧
NOP 4
RET B3 // 函數(shù)返回
NOP 5
;;;;由此可見,在CCS編譯器的規(guī)則中,B15寄存器被用作堆棧指針,使用通用存取指令進(jìn)行棧操作,而且堆棧指針必須以8字節(jié)為單位改變。
;;;;此外,B3寄存器被用來保存函數(shù)調(diào)用時(shí)的返回地址,在函數(shù)執(zhí)行之前需要入棧保護(hù),直到函數(shù)返回前再出棧。
當(dāng)然,CCS的C編譯器對(duì)于每個(gè)通用寄存器都有約定的用途,但對(duì)于μC/OS-II的移植來說,了解以上信息就足夠了。
;;;;最后,再編寫一個(gè)用“interrupt”關(guān)鍵字聲明的函數(shù):
interrupt void ISR_TEMP (void)
{
int a;
a=0;
}
生成的ASM代碼為:
_ISR

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉