色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

將μC/OS-II移植于MPC555上在車用控制器上的應用

電子設計 ? 來源:電子技術應用 ? 作者:李雅博;甘海云; ? 2020-03-10 08:00 ? 次閱讀

c/OS-II是一種占先式、多任務、移植性非常強的免費微控制器嵌入式實時操作系統,從1992年出現以來,已在照相機、發動機控制和工業機器人等多種領域中得到應用。它一方面相對GNU下Linux衍生出來的EOS更小巧且移植方便,實時性更好,更適合工業控制領域應用;另一方面由于是免費的,比使用VxWorks等商業實時EOS大大節省成本,非常適用于開發實用簡約的嵌入式控制程序。

摩托羅拉的MPC555是建立在PowerPC體系結構上,采用RISC技術的一款高檔、適用于精密控制的微控制器、其芯片內嵌增加了浮點單元的32位RCPU核心、26KB靜態RAM、448KB片內Flash、一個QSMCM(串行通訊模塊)、兩個TouCAN模塊、兩個TPU、一個MIOS(模塊化I/O系統)、兩個QADC模塊,工作頻率達40MHz。另外芯片體積小,僅為2.5cm×2.5cm×0.5cm。所有這些特性使其特別適用于汽車等現場控制領域的嵌入式微控制系統

將μC/OS-II移植于MPC555上既有益于MPC和μC/OS-II在車用控制器上的應用,其成果也可以用于其他嵌入式工業控制領域。本次移植中,使用CodeWarrior for PPC 6.5編譯調試環境。

1、 移植原理

μC/OS-II包括中斷管理、任務管理、時間管理、任務之間通信管理和內存管理五方面功能、其結構共分三層,如圖1。I層為與處理器相關的代碼,在μC/OS-II的Intel 80x86版本上為OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM三個文件。該層完成系統時鐘的設置、出入中斷的管理和任務切換功能,為第II層提供接口。II層包括時間管理、任務調度管理、任務間的通信管理和內存管理四部分,是OS的主體部分,全部由ANSI C代碼寫成,與處理器無關,它為用戶應用程序提供接口。III層是用戶應用程序部分,μC/OS-II有中斷和任務兩個處理級別,用戶可以建立自己的任務,編寫必要的中斷子程,在任務之間或任務與中斷子程之間建立信號量、郵箱或消息隊列完成控制器軟件的編寫。根據以上結構特點,在移植過程中,只需將I層代碼針對MPC555的編程結構做相應改動,使其完成系統時鐘設置、中斷管理和任務切換功能即可。

將μC/OS-II移植于MPC555上在車用控制器上的應用

在前后臺系統中,提供一個CPU堆棧?發生中斷時,將當前使用到的寄存器壓入堆棧,保存現場,執行中斷程序;中斷程序完成后,從CPU堆棧中彈出寄存器的值,恢復現場。

在多任務系統μC/OS-II中不是這樣。OS創建時,為每個任務建立并初始化一個堆棧。當發生中斷或任務切換時,把當前任務運行現場保存起來,即將所有寄存器保存到該“舊”任務的堆棧中。當某個任務需要從就緒狀態激活到運行狀態時,OS又需將所有寄存器從該“新”任務的堆棧中彈出。這樣,每個任務分時占用CPU。而對各任務來說,每次進入運行態時,CPU狀態都與上次從運行態退出時完全一樣。所以不再是使用一個CPU堆棧,而是多個任務將各自的運行現場保存到自己的堆棧中。

另外,調用C函數時也會使用到堆棧,此時編譯器會創建一個堆棧;在C函數返回時,將其釋放、其大小因C函數使用到的變量和編譯器的不同而不同、在移植時,能夠正確創建、初始化、保存并恢復各個任務的堆棧,是確保OS任務切換和中斷管理順利完成的關鍵。

MPC555有32個32bit通用定點數寄存器,32個64bit浮點數寄存器,另有9個控制/狀態寄存器。針對MPC555的編程結構,設計如表1的堆棧結構。每次任務環境入棧時創建一含73個位置的堆棧,為了保證浮點數寄存器的完整,每個位置為64bit寬。創建任務時,建立該堆棧結構,并用默認值對其進行初始化。在任務保存或激活時把寄存器的值保存到堆棧中相應位置,或者從堆棧的相應位置把寄存器值彈出。其中GPR1被MPC作為堆棧指針SP使用,在堆棧操作時,要注意控制好SP。

將μC/OS-II移植于MPC555上在車用控制器上的應用

2 、中斷管理

首先,分析一下MPC555的中斷結構。在MPC中有新的概念——異常(Exception)。它包含所有CPU非正常事件的出現,包括中斷、總線錯誤、指令錯誤、系統調用異常、實時中斷異常和復位等。MPC為異常提供了異常向量表。該表為每個異常提供一個256字節的異常處理代碼空間。

所有外部中斷和I/O子模塊產生的中斷共同作為異常的一種,占用異常向量表中的一個位置。在該異常處理程序中,軟件需根據中斷狀態寄存器的值判斷到底發生了哪個中斷并進行相應處理。

在每次發生異常時,MPC自動將主狀態寄存器MSR保存到SRR1中,將程序指針PC保存到SRR0中;然后PC指針指向該異常在異常向量表中的起始位置,進入異常處理程序。每次異常返回時,調用rfi指令,系統自動將SRR1中的值返回MSR中,將SRR0中的值返回PC中,即程序從SRR0指向的位置繼續執行。在發生異常和異常返回之間, 不自動允許新的異常和中斷。所以,程序需要在保存SRR0和SRR1后允許異常,在適當的時候允許中斷。

μC/OS-II的異常處理過程中,用戶及OS與硬件無關的代碼完成圖2中①、②、③、④、⑤這五個步驟。依次完成以下任務:①給OSIntNesting加1或調用OSIntEnter(),通知OS,系統已進入中斷;②分析中斷源調用相應中斷處理子程;③在該中斷處理子程中完成清中斷源;④進行其他中斷處理;⑤調用OSIntExit( )判斷是否有更高優先級的任務被激活而需要進行任務調度,若不需要,則直接從中斷返回;若需要,則調用OSIntCtxSw()完成中斷級任務調度。

移植中,為了在MPC555上實現上述中斷處理過程,需編寫與硬件相關代碼,為以上思路提供三個接口函數:進入中斷、退出中斷和中斷級任務調度。根據MPC555的編程結構,設計的完整中斷程序流程如圖2。虛框Ⅰ部分寫在異常向量表中每個異常的處理代碼空間中,依次調用Prologue( )、Exception-Routine( )和Epilogue( )三個函數。

將μC/OS-II移植于MPC555上在車用控制器上的應用

其中,Exception-Routine( )函數為①到⑤步中斷處理子程提供調用接口。

虛框Ⅱ中為與硬件相關的函數Prologue( ),它將發生中斷時所有寄存器保存到當前任務的堆棧中,并處理CPU狀態。是OS進入中斷的接口函數。

虛框Ⅲ中為與硬件相關的函數Epilogue( ),它從當前任務(可能是中斷發生時的任務,也可能是新的被激活的任務)堆棧中恢復所有CPU寄存器,并從中斷返回,是OS退出中斷的接口函數。

虛框Ⅳ中為與硬件和編譯器相關的函數OSIntCtxSw( )。它將新的高優先級就緒態任務調整為當前任務,完成中斷級任務調度,隨后調用Epilogue( )退出中斷,進入新的被激活的任務。應注意,在中斷級任務調度過程中,①、⑤兩處C函數被調用后不需要返回,所以需要將堆棧指針SP向下做適當調整,以丟棄這兩個函數調用時編譯器產生的堆棧、C函數調用時,產生堆棧的大小與編譯器相關,因此應根據編譯器產生的代碼決定此處丟棄堆棧的大小。為保證異常時需要丟棄的堆棧大小不變,可使用圖2中的方法,在異常處理時另外調用函數完成步驟③、④,以確保不同異常處理過程中,①、⑤兩處C函數被調用時,編譯器建立的堆棧大小一致。

3、 任務切換

μC/OS-II中的任務調度由函數OSSched( )完成。在Intel 80x86系統上,OSSched( )在獲得當前新的最高優先級的任務指針后,調用CPU軟中斷完成任務切換。

在MPC555上,可以用系統調用異常處理程序“System Call Exception”代替軟中斷。該異常處理程序如圖3所示,完成以下三個步驟:①在prologue( )中將當前任務運行環境保存到當前任務的堆棧中;②調用任務級調度函數OSCtxSw( ),將新的高優先級就緒態任務調整為當前任務;③從新任務堆棧中彈出所有寄存器的值,恢復中斷,完成任務切換。其中①、③兩部分代碼與中斷管理程序相同,不需要重新編寫,只需編寫函數OSCtxSw( )完成任務指針的切換工作。

將μC/OS-II移植于MPC555上在車用控制器上的應用

任務切換過程不可以被打斷,所以,上述過程中始終不能打開中斷。

4 、時鐘管理

μC/OS-II需要在系統初始化后,開始一個系統時鐘節拍,它是OS系統的時間基準。該時鐘節拍一般由時間中斷產生。 MPC555中可產生時間節拍的模塊有很多,本次移植選用DEC異常。因為它與外部中斷使用不同的異常向量,便于對異常事件的管理,有利于提高OS的穩定性。

DEC時鐘同步于TMBCLK,其頻率可選,本次移植設置為2.5MHz。代碼在時鐘初始化和每次進入DEC異常時,將DEC計數器設置為2.5M/OS_TICKS_PER_SEC,這樣,可使OS每秒種產生OS_TICKS_PER_SEC個時鐘節拍。

5 、應用方法

在使用移植后的OS時,用戶需要編寫自己的主程序main( ),其流程如圖4。在適當的初始化后即可啟動OS。

將μC/OS-II移植于MPC555上在車用控制器上的應用

另外,用戶需在TaskStart任務中啟動時鐘節拍,調用OSStatInit( )函數初始化統計任務,創建所需的其他任務,最后調用OSTaskDel( )函數刪除TaskStart任務自己。OS在該函數調用結束后,會自動允許異常和中斷,OS正常運轉,不斷調度任務,響應中斷。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7646

    瀏覽量

    151927
  • 嵌入式
    +關注

    關注

    5091

    文章

    19176

    瀏覽量

    307031
  • 操作系統
    +關注

    關注

    37

    文章

    6889

    瀏覽量

    123627
收藏 人收藏

    評論

    相關推薦

    MPC555控制器在汽車電子領域有哪些應用?

    MPC555控制器是什么?MPC555應用軟硬件平臺及系統集成開發環境MPC555控制器在汽車電子領域的應用
    發表于 05-14 07:21

    μC/OS-II 在Nios移植

    首先介紹嵌入式實時操作系統μC/OS-II 和Nios 嵌入式處理, 分析μC/OS-II
    發表于 03-08 09:31 ?90次下載

    μC/OS-IIMPC555控制器的應用

    以新一代微控制器MPC555 為硬件開發平臺, 實現嵌入式實時操作系統μC/OS-IIMPC555硬件平臺的
    發表于 04-16 09:14 ?14次下載

    μC OS-II 在S3C44B0X 處理移植

    介紹實時操作系統μC/OS-II 的特點和內核結構,給出μC/OS-II 在Samsung 嵌入式S3C44B0X ARM7 微處理
    發表于 05-15 13:34 ?18次下載

    μC OS-II 在TMS320LF2407 移植及應用

    詳細討論μC/OS-II 在TMS320LF2407 移植并給出主要代碼; 分析移植中可能出現的問題,給出解決方法;討論
    發表于 05-15 13:53 ?18次下載

    μC OS-IIMPC555控制器的應用

    以新一代微控制器MPC555 為硬件開發平臺, 實現嵌入式實時操作系統μC/OS-IIMPC555硬件平臺的
    發表于 05-15 14:59 ?15次下載

    μC OS-II 在Nios 移植1

    首先介紹嵌入式實時操作系統μC/OS-II 和Nios 嵌入式處理, 分析μC/OS-II 移植
    發表于 05-16 14:32 ?28次下載

    實時操作系統μC/OS-II 在LPC2210 移植研究

    嵌入式實時操作系統在目標處理平臺上的移植是嵌入式軟件開發的基礎和前提。論文實現了源碼公開的嵌入式實時操作系統μC/OS-II 在ARM7 微
    發表于 06-03 09:48 ?20次下載

    嵌入式μC/OS-II在LPC2104移植及通信設計

    分析了μC/OS-II 操作系統的特點及其在嵌入式系統應用領域的優勢,探討了μC/OS-II 操作系統在LPC2104 處理
    發表于 06-19 09:12 ?16次下載

    μC/OS-II 在LPC2210移植實現

    對嵌入式實時操作系統μC/OS-II 的組成和LPC2210 微處理進行了簡單介紹。在此基礎,詳細介紹了μ
    發表于 07-08 08:57 ?41次下載

    μC/OS-II在S3C44BOX處理移植

     摘要:介紹實時操作系統μC/OS-II的特點和內核結構,給出μC/OS-II在Samsung嵌入式S3C44BOX ARM7
    發表于 03-11 12:39 ?1337次閱讀
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在S3<b class='flag-5'>C</b>44BOX處理<b class='flag-5'>器</b><b class='flag-5'>上</b>的<b class='flag-5'>移植</b>

    實時嵌入式操作系統μCOS-IIMPC555移植

    摘要:介紹了實時操作系統μCOS-II的特點和內核結構,并首次實現了μC/OS-II在摩托羅拉處理
    發表于 03-11 12:42 ?821次閱讀
    實時嵌入式操作系統μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在<b class='flag-5'>MPC555</b><b class='flag-5'>上</b>的<b class='flag-5'>移植</b>

    μC/OS-II在EP7312移植

    μC/OS-II在EP7312移植首先介紹μC/OS-II操作系統的特點,重點分析μ
    發表于 06-16 11:24 ?1162次閱讀
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在EP7312<b class='flag-5'>上</b>的<b class='flag-5'>移植</b>

    μC/OS-II操作系統在各種處理移植

    μC/OS-II操作系統在各種處理移植  μCOS
    發表于 01-07 11:11 ?725次閱讀
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>操作系統在各種處理<b class='flag-5'>器</b><b class='flag-5'>上</b>的<b class='flag-5'>移植</b>

    μC/OS-IIMPC555移植

    c/OS-II是一種占先式、多任務、移植性非常強的免費微控制器嵌入式實時操作系統,從1992年出現以來,已在照相機、發動機控制和工業機器人等
    發表于 10-30 11:06 ?4次下載
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在<b class='flag-5'>MPC555</b><b class='flag-5'>上</b>的<b class='flag-5'>移植</b>
    主站蜘蛛池模板: 亚洲蜜芽在线观看精品一区 | chinese国语露脸videos | 国产亚洲综合视频 | 色即是空 BT | 亚洲乱码国产乱码精品精98 | 国产精品AV视频一二三区 | 久久精品99热超碰 | 久久免费看少妇级毛片蜜臀 | 福利视频一二三在线观看 | 亚洲欧美色综合影院 | 一二三区乱码不卡手机版 | 久青草国产97香蕉在线视频 | 爱很烂qvod | 国内精品久久久久影院网站 | 2019久久这里只精品热在线观看 | 99久久国产综合精品成人影院 | 在线播放性xxx欧美 在线播放午夜理论片 | 青柠在线观看免费播放电影 | 91嫩草视频在线观看 | 久久成人免费观看草草影院 | 久久国产加勒比精品无码 | www红色一片 | 亚洲视频第二页 | 中国老太性色xxxxxhd | 国产99久久久国产精品成人 | 国产一区二区在线免费观看 | 一二三四在线视频社区8 | 亚洲在线2018最新无码 | 暖暖的高清视频在线观看免费中文 | https黄视| 国产午夜精品一区二区理论影院 | 男女后进式猛烈xx00动态图片 | 99re精品视频在线播放视频 | 亚洲久热无码中文字幕 | 日韩精品一区二区中文 | 日本黄色www| 一个人免费视频在线观看 | 亚洲你我色 | WWW国产无套内射久久 | 最新在线黄色网址 | 51国产偷自视频在线视频播放 |