資料介紹
μc/OS-II是一種占先式、多任務(wù)、移植性非常強(qiáng)的免費(fèi)微控制器嵌入式實(shí)時(shí)操作系統(tǒng),從1992年出現(xiàn)以來(lái),已在照相機(jī)、發(fā)動(dòng)機(jī)控制和工業(yè)機(jī)器人等多種領(lǐng)域中得到應(yīng)用。它一方面相對(duì)GNU下Linux衍生出來(lái)的EOS更小巧且移植方便,實(shí)時(shí)性更好,更適合工業(yè)控制領(lǐng)域應(yīng)用;另一方面由于是免費(fèi)的,比使用VxWorks等商業(yè)實(shí)時(shí)EOS大大節(jié)省成本,非常適用于開(kāi)發(fā)實(shí)用簡(jiǎn)約的嵌入式控制程序。
摩托羅拉的MPC555是建立在PowerPC體系結(jié)構(gòu)上,采用RISC技術(shù)的一款高檔、適用于精密控制的微控制器、其芯片內(nèi)嵌增加了浮點(diǎn)單元的32位RCPU核心、26KB靜態(tài)RAM、448KB片內(nèi)Flash、一個(gè)QSMCM(串行通訊模塊)、兩個(gè)TouCAN模塊、兩個(gè)TPU、一個(gè)MIOS(模塊化I/O系統(tǒng))、兩個(gè)QADC模塊,工作頻率達(dá)40MHz。另外芯片體積小,僅為2.5cm×2.5cm×0.5cm。所有這些特性使其特別適用于汽車等現(xiàn)場(chǎng)控制領(lǐng)域的嵌入式微控制系統(tǒng)?
將μC/OS-II移植于MPC555上既有益于MPC和μC/OS-II在車用控制器上的應(yīng)用,其成果也可以用于其他嵌入式工業(yè)控制領(lǐng)域。本次移植中,使用CodeWarrior for PPC 6.5編譯調(diào)試環(huán)境。
1 移植原理
μC/OS-II包括中斷管理、任務(wù)管理、時(shí)間管理、任務(wù)之間通信管理和內(nèi)存管理五方面功能、其結(jié)構(gòu)共分三層,如圖1。I層為與處理器相關(guān)的代碼,在μC/OS-II的Intel 80x86版本上為OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM三個(gè)文件。該層完成系統(tǒng)時(shí)鐘的設(shè)置、出入中斷的管理和任務(wù)切換功能,為第II層提供接口。II層包括時(shí)間管理、任務(wù)調(diào)度管理、任務(wù)間的通信管理和內(nèi)存管理四部分,是OS的主體部分,全部由ANSI C代碼寫成,與處理器無(wú)關(guān),它為用戶應(yīng)用程序提供接口。III層是用戶應(yīng)用程序部分,μC/OS-II有中斷和任務(wù)兩個(gè)處理級(jí)別,用戶可以建立自己的任務(wù),編寫必要的中斷子程,在任務(wù)之間或任務(wù)與中斷子程之間建立信號(hào)量、郵箱或消息隊(duì)列完成控制器軟件的編寫。根據(jù)以上結(jié)構(gòu)特點(diǎn),在移植過(guò)程中,只需將I層代碼針對(duì)MPC555的編程結(jié)構(gòu)做相應(yīng)改動(dòng),使其完成系統(tǒng)時(shí)鐘設(shè)置、中斷管理和任務(wù)切換功能即可。

在前后臺(tái)系統(tǒng)中,提供一個(gè)CPU堆棧?發(fā)生中斷時(shí),將當(dāng)前使用到的寄存器壓入堆棧,保存現(xiàn)場(chǎng),執(zhí)行中斷程序;中斷程序完成后,從CPU堆棧中彈出寄存器的值,恢復(fù)現(xiàn)場(chǎng)。
在多任務(wù)系統(tǒng)μC/OS-II中不是這樣。OS創(chuàng)建時(shí),為每個(gè)任務(wù)建立并初始化一個(gè)堆棧。當(dāng)發(fā)生中斷或任務(wù)切換時(shí),把當(dāng)前任務(wù)運(yùn)行現(xiàn)場(chǎng)保存起來(lái),即將所有寄存器保存到該“舊”任務(wù)的堆棧中。當(dāng)某個(gè)任務(wù)需要從就緒狀態(tài)激活到運(yùn)行狀態(tài)時(shí),OS又需將所有寄存器從該“新”任務(wù)的堆棧中彈出。這樣,每個(gè)任務(wù)分時(shí)占用CPU。而對(duì)各任務(wù)來(lái)說(shuō),每次進(jìn)入運(yùn)行態(tài)時(shí),CPU狀態(tài)都與上次從運(yùn)行態(tài)退出時(shí)完全一樣。所以不再是使用一個(gè)CPU堆棧,而是多個(gè)任務(wù)將各自的運(yùn)行現(xiàn)場(chǎng)保存到自己的堆棧中。
另外,調(diào)用C函數(shù)時(shí)也會(huì)使用到堆棧,此時(shí)編譯器會(huì)創(chuàng)建一個(gè)堆棧;在C函數(shù)返回時(shí),將其釋放、其大小因C函數(shù)使用到的變量和編譯器的不同而不同、在移植時(shí),能夠正確創(chuàng)建、初始化、保存并恢復(fù)各個(gè)任務(wù)的堆棧,是確保OS任務(wù)切換和中斷管理順利完成的關(guān)鍵。
MPC555有32個(gè)32bit通用定點(diǎn)數(shù)寄存器,32個(gè)64bit浮點(diǎn)數(shù)寄存器,另有9個(gè)控制/狀態(tài)寄存器。針對(duì)MPC555的編程結(jié)構(gòu),設(shè)計(jì)如表1的堆棧結(jié)構(gòu)。每次任務(wù)環(huán)境入棧時(shí)創(chuàng)建一含73個(gè)位置的堆棧,為了保證浮點(diǎn)數(shù)寄存器的完整,每個(gè)位置為64bit寬。創(chuàng)建任務(wù)時(shí),建立該堆棧結(jié)構(gòu),并用默認(rèn)值對(duì)其進(jìn)行初始化。在任務(wù)保存或激活時(shí)把寄存器的值保存到堆棧中相應(yīng)位置,或者從堆棧的相應(yīng)位置把寄存器值彈出。其中GPR1被MPC作為堆棧指針SP使用,在堆棧操作時(shí),要注意控制好SP。
摩托羅拉的MPC555是建立在PowerPC體系結(jié)構(gòu)上,采用RISC技術(shù)的一款高檔、適用于精密控制的微控制器、其芯片內(nèi)嵌增加了浮點(diǎn)單元的32位RCPU核心、26KB靜態(tài)RAM、448KB片內(nèi)Flash、一個(gè)QSMCM(串行通訊模塊)、兩個(gè)TouCAN模塊、兩個(gè)TPU、一個(gè)MIOS(模塊化I/O系統(tǒng))、兩個(gè)QADC模塊,工作頻率達(dá)40MHz。另外芯片體積小,僅為2.5cm×2.5cm×0.5cm。所有這些特性使其特別適用于汽車等現(xiàn)場(chǎng)控制領(lǐng)域的嵌入式微控制系統(tǒng)?
將μC/OS-II移植于MPC555上既有益于MPC和μC/OS-II在車用控制器上的應(yīng)用,其成果也可以用于其他嵌入式工業(yè)控制領(lǐng)域。本次移植中,使用CodeWarrior for PPC 6.5編譯調(diào)試環(huán)境。
1 移植原理
μC/OS-II包括中斷管理、任務(wù)管理、時(shí)間管理、任務(wù)之間通信管理和內(nèi)存管理五方面功能、其結(jié)構(gòu)共分三層,如圖1。I層為與處理器相關(guān)的代碼,在μC/OS-II的Intel 80x86版本上為OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM三個(gè)文件。該層完成系統(tǒng)時(shí)鐘的設(shè)置、出入中斷的管理和任務(wù)切換功能,為第II層提供接口。II層包括時(shí)間管理、任務(wù)調(diào)度管理、任務(wù)間的通信管理和內(nèi)存管理四部分,是OS的主體部分,全部由ANSI C代碼寫成,與處理器無(wú)關(guān),它為用戶應(yīng)用程序提供接口。III層是用戶應(yīng)用程序部分,μC/OS-II有中斷和任務(wù)兩個(gè)處理級(jí)別,用戶可以建立自己的任務(wù),編寫必要的中斷子程,在任務(wù)之間或任務(wù)與中斷子程之間建立信號(hào)量、郵箱或消息隊(duì)列完成控制器軟件的編寫。根據(jù)以上結(jié)構(gòu)特點(diǎn),在移植過(guò)程中,只需將I層代碼針對(duì)MPC555的編程結(jié)構(gòu)做相應(yīng)改動(dòng),使其完成系統(tǒng)時(shí)鐘設(shè)置、中斷管理和任務(wù)切換功能即可。

在前后臺(tái)系統(tǒng)中,提供一個(gè)CPU堆棧?發(fā)生中斷時(shí),將當(dāng)前使用到的寄存器壓入堆棧,保存現(xiàn)場(chǎng),執(zhí)行中斷程序;中斷程序完成后,從CPU堆棧中彈出寄存器的值,恢復(fù)現(xiàn)場(chǎng)。
在多任務(wù)系統(tǒng)μC/OS-II中不是這樣。OS創(chuàng)建時(shí),為每個(gè)任務(wù)建立并初始化一個(gè)堆棧。當(dāng)發(fā)生中斷或任務(wù)切換時(shí),把當(dāng)前任務(wù)運(yùn)行現(xiàn)場(chǎng)保存起來(lái),即將所有寄存器保存到該“舊”任務(wù)的堆棧中。當(dāng)某個(gè)任務(wù)需要從就緒狀態(tài)激活到運(yùn)行狀態(tài)時(shí),OS又需將所有寄存器從該“新”任務(wù)的堆棧中彈出。這樣,每個(gè)任務(wù)分時(shí)占用CPU。而對(duì)各任務(wù)來(lái)說(shuō),每次進(jìn)入運(yùn)行態(tài)時(shí),CPU狀態(tài)都與上次從運(yùn)行態(tài)退出時(shí)完全一樣。所以不再是使用一個(gè)CPU堆棧,而是多個(gè)任務(wù)將各自的運(yùn)行現(xiàn)場(chǎng)保存到自己的堆棧中。
另外,調(diào)用C函數(shù)時(shí)也會(huì)使用到堆棧,此時(shí)編譯器會(huì)創(chuàng)建一個(gè)堆棧;在C函數(shù)返回時(shí),將其釋放、其大小因C函數(shù)使用到的變量和編譯器的不同而不同、在移植時(shí),能夠正確創(chuàng)建、初始化、保存并恢復(fù)各個(gè)任務(wù)的堆棧,是確保OS任務(wù)切換和中斷管理順利完成的關(guān)鍵。
MPC555有32個(gè)32bit通用定點(diǎn)數(shù)寄存器,32個(gè)64bit浮點(diǎn)數(shù)寄存器,另有9個(gè)控制/狀態(tài)寄存器。針對(duì)MPC555的編程結(jié)構(gòu),設(shè)計(jì)如表1的堆棧結(jié)構(gòu)。每次任務(wù)環(huán)境入棧時(shí)創(chuàng)建一含73個(gè)位置的堆棧,為了保證浮點(diǎn)數(shù)寄存器的完整,每個(gè)位置為64bit寬。創(chuàng)建任務(wù)時(shí),建立該堆棧結(jié)構(gòu),并用默認(rèn)值對(duì)其進(jìn)行初始化。在任務(wù)保存或激活時(shí)把寄存器的值保存到堆棧中相應(yīng)位置,或者從堆棧的相應(yīng)位置把寄存器值彈出。其中GPR1被MPC作為堆棧指針SP使用,在堆棧操作時(shí),要注意控制好SP。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 詳解μC/OS-II在ARM平臺(tái)上移植 13次下載
- μC/OS-II 在Nios上的移植
- uCOS II 在SkyEye 上的移植分析
- 實(shí)時(shí)操作系統(tǒng)OS-II在ARM7上的移植
- μC/OS-II在PC機(jī)上移植的設(shè)計(jì)與實(shí)現(xiàn)
- 基于ARM微處理器的μC/OS-II的移植研究
- μC/OS-II 在LPC2210上的移植實(shí)現(xiàn)
- MPC555評(píng)估板簡(jiǎn)介、設(shè)置及在MPC555中使用MIOS產(chǎn)
- 嵌入式μC/OS-II在LPC2104上的移植及通信設(shè)計(jì)
- 實(shí)時(shí)操作系統(tǒng)μC/OS-II 在LPC2210 上的移植研究
- μC OS-II 在Nios 上的移植1
- μC OS-II 在MPC555 微控制器上的應(yīng)用
- μC OS-II 在TMS320LF2407 上的移植及應(yīng)用
- μC OS-II 在S3C44B0X 處理器上的移植
- μC/OS-II在MPC555微控制器上的應(yīng)用
- 基于μC/OS-II和TMS320LF2407A實(shí)現(xiàn)集散式數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì) 2344次閱讀
- 基于MC9S12DP256芯片和μC/OS-II實(shí)現(xiàn)CCP軟件的設(shè)計(jì) 2882次閱讀
- 基于嵌入式工控模塊和μC/OS-II實(shí)現(xiàn)車載狀態(tài)監(jiān)控系統(tǒng)的設(shè)計(jì) 2064次閱讀
- 基于C8051F015芯片在開(kāi)發(fā)板上實(shí)現(xiàn)μC/OS-II的移植 2154次閱讀
- 基于μC/OS-II操作系統(tǒng)實(shí)現(xiàn)在P89V51RD2微控制器上運(yùn)行 810次閱讀
- 基于μC/OS-II操作系統(tǒng)在SPCE061A上的移植優(yōu)化研研究 850次閱讀
- 基于μC/OS-II嵌入式系統(tǒng)開(kāi)發(fā)中低功耗系統(tǒng)的設(shè)計(jì) 3138次閱讀
- 51單片機(jī)對(duì)μC/OS-II實(shí)時(shí)操作系統(tǒng)的移植 2507次閱讀
- LPC213X通過(guò)μC/OS-II的多種移植方案 677次閱讀
- 淺論uC/OS-II 在電動(dòng)車電池管理系統(tǒng)中的應(yīng)用研究 1437次閱讀
- μC/OS-II系統(tǒng)基礎(chǔ)嵌入式開(kāi)發(fā)編程教程 4547次閱讀
- LPC2119簡(jiǎn)介 μC/OS-II在LPC2119上的移植 2847次閱讀
- 車輛調(diào)度系統(tǒng)的整體設(shè)計(jì) UC/OS-II的內(nèi)核調(diào)度機(jī)理 1207次閱讀
- 嵌入式設(shè)備設(shè)計(jì)的內(nèi)核uc/os-ii api使用手冊(cè)大全 4323次閱讀
- 用AndesCore N1033A-S處理器實(shí)現(xiàn)μC/OS-II的移植 4140次閱讀
下載排行
本周
- 1EMC電路設(shè)計(jì)工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
- 2AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數(shù)據(jù)手冊(cè)
- 1.19 MB | 1次下載 | 免費(fèi)
- 3低壓降肖特基整流管SR340L數(shù)據(jù)手冊(cè)
- 0.78 MB | 1次下載 | 免費(fèi)
- 4ZX8002E 觸摸調(diào)光LED集成IC數(shù)據(jù)手冊(cè)
- 2.27 MB | 次下載 | 免費(fèi)
- 5SOD-323塑料封裝ESD保護(hù)二極管SD05T系列規(guī)格書
- 1.07 MB | 次下載 | 免費(fèi)
- 6SOT-23塑料封裝ESD保護(hù)二極管SMxx Series系列規(guī)格書
- 0.93 MB | 次下載 | 免費(fèi)
- 7高效率整流二極管HER151 THRU HER158數(shù)據(jù)手冊(cè)
- 0.54 MB | 次下載 | 免費(fèi)
- 8低壓降肖特基整流管SL22 THRU SL210數(shù)據(jù)手冊(cè)
- 1.03 MB | 次下載 | 免費(fèi)
本月
- 1三相逆變主電路的原理圖和PCB資料合集免費(fèi)下載
- 27.35 MB | 111次下載 | 1 積分
- 2運(yùn)算放大器基本電路中文資料
- 1.30 MB | 16次下載 | 免費(fèi)
- 3蘋果iphone 11電路原理圖
- 4.98 MB | 11次下載 | 5 積分
- 4TL494工業(yè)用開(kāi)關(guān)電源原理圖資料
- 0.22 MB | 10次下載 | 1 積分
- 5常用電子元器件介紹
- 3.21 MB | 8次下載 | 免費(fèi)
- 6QW2893應(yīng)急燈專用檢測(cè)芯片
- 590.40 KB | 4次下載 | 免費(fèi)
- 7相關(guān)協(xié)議信號(hào)總結(jié)
- 0.94 MB | 4次下載 | 免費(fèi)
- 8EMC電路設(shè)計(jì)工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935130次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183344次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論