娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月02日(星期日)

2018年02月02日 | 基于μC/OSII的ARM7中斷過程分析及優化方法

發布者:靈感驛站 來源: eefocus關鍵字:μC  OSII  ARM7  中斷過程 手機看文章 掃描二維碼
隨時隨地手機看文章

    引言

    如今,在嵌入式處理器芯片中,以ARM7為核心的處理器是應用較多的一種。它具有多種工作模式,并且支持兩種不同的指令集(標準32位ARM指令集和16位Thumb指令集)。μC/OSII是專為嵌入式應用設計的搶占式、多任務實時操作系統,可用于各類8位、16位和32位單片機或DSP。μC/OSII向ARM7移植具有得天獨厚的優點,因此,“μC/OSII+ARM7”成為廣泛應用的一款平臺。

    不管是哪種型號的ARM處理器,也無論該嵌入式系統中是否有操作系統,在計算機與外界實時交互的過程中,中斷技術都是一項關鍵的技術。當外部事件發生時,CPU必須及時響應中斷以實現對相應事件的處理,因此能否中斷嵌套是影響嵌入式系統實時性能的主要因素。

    1  ARM7的中斷處理

    ARM7處理器的中斷主要有兩種,本文主要討論IRQ中斷異常的響應機制。當中斷請求IRQ到來使CPU進入中斷響應時,CPU將會自動完成下列工作:首先,將PC、CPSR的當前值存入中斷模式的LR、SPSR中;然后,操作CPSR中的運行狀態位,使CPU進入中斷模式并關閉中斷;最后將PC的值改成0x00000018,從而使CPU的執行跳轉到IRQ中斷入口0x00000018處。異常向量表中的0x00000018處使用一條“LDR PC,[PC,#0xff0]”指令,在IRQ處使用的這條指令與其他向量不同。當CPU執行這條指令但還沒有跳轉時,PC的值為0x00000020(因為ARM7TDMI內核是三級流水結構),0x00000020減去0x00000FF0為0xFFFFF030,這是VIC的特殊寄存器VICVectAddr的地址單元。這個寄存器保存當前將要服務的IRQ的中斷服務程序的入口,故讀取VICVectAddr寄存器的值,然后放入PC程序指針,即跳轉到相應中斷服務程序,從而使CPU開始執行中斷服務程序。

    2  Handler宏分析

    “μC/OSII+ARM7”系統中,只使用了ARM7的IRQ中斷。由于不同的ARM芯片的中斷系統并不完全一樣,因此不可能編寫出對所有使用ARM核的處理器通用的中斷及時鐘節拍移植代碼。但是,為了使用戶用C語言編寫中斷服務程序時不必為處理器的硬件區別而困擾,這里根據μC/OSII對中斷服務程序的要求以及ARM7體系結構和ADS編譯器的特點,編寫了一個適用于所有基于ARM7核處理器的匯編宏--Handler。這個宏實現了“μC/OSII+ ARM7”中斷服務程序的匯編語言代碼與C語言函數代碼之間的通用接口。其作用是對用戶的C語言中斷處理程序進行包裝,只有通過這個包裝之后,系統才能執行用戶的中斷處理程序。

    中斷服務程序流程如圖1所示。在進入Handler宏中,首先保存LR、SPSR以及相關寄存器的值于中斷模式下的堆棧中,以便于斷點恢復。然后使記錄系統中斷次數的全局變量OSIntNeSTing加1并關中斷切換到系統模式,調用C語言中斷處理程序。在執行完中斷處理程序后,調用出中斷函數,以獲取最高優先級就緒任務的任務控制塊指針和任務優先級。返回中斷模式后,通過比較當前任務與待切換任務的優先級,判斷是否進行任務切換,最后返回斷點。

01
圖1  中斷服務程序流程

    IRQ異常處理代碼的匯編部分--Handler宏:

    MACRO

    $IRQ_Label HANDLER $IRQ_ExcepTION_Function

    EXPORT $IRQ_Label;輸出的標號

    IMPORT $IRQ_Exception_Function;引用的外部標號

    $IRQ_Label

    SUB LR, LR, #4;計算返回地址

    STMFD SP!, {R0R3, R12, LR};保存任務環境

    MRS R3, SPSR;保存狀態

    STMFD SP, {R3,SP,LR}^;保存用戶狀態的R3、SP、LR

    ;OSIntNesting++

    LDR R2,=OSIntNesting

    LDRB R1, [R2]

    ADD R1, R1, #1

    STRB R1, [R2]

    SUB SP, SP, #4*3

    MSR CPSR_c, #(NoInt | SYS32Mode)

    ;切換到系統模式以便對相關寄存器進行操作

    CMP R1, #1

    LDREQ SP, =StackUsr

    ;在第1次中斷時就重新開辟一個專門存儲中斷中用到的變量以避免存儲空間的沖突

    BL $IRQ_Exception_Function  ;調用C語言的中斷處理程序

    MSR CPSR_c, #(NoInt | SYS32Mode);切換到系統模式

    LDR R2, =OsEnterSum

    ;OsEnterSum,使OSIntExit退出時中斷關閉

    MOV R1, #1

    STR R1, [R2]

    BL OSIntExit

    LDR R2, =OsEnterSum

    ;中斷服務程序要退出,所以OsEnterSum=0

    MOV R1, #0

    STR R1, [R2]

    MSR CPSR_c, #(NoInt | IRQ32Mode) ;切換回中斷模式

    LDMFD SP, {R3, SP, LR}^ ;恢復用戶狀態的R3、SP、LR

    LDR R0, =OSTCBHighRdy

    LDR R0, [R0]

    LDR R1, =OSTCBCur

    LDR R1, [R1]

    CMP R0, R1

    ADD SP, SP, #4*3

    MSR SPSR_cxsf, R3

    LDMEQFD SP!, {R0R3, R12, PC}^ ;不進行任務切換

    LDR PC, =OSINTCtxSw;進行任務切換

    MEND

    END

    通過對Handler宏的分析可知,用戶的C語言中斷處理程序是在特權模式--系統模式下運行的,并且CPU在執行中斷服務程序時中斷都是關閉的,所以本系統采用的是最為簡單的非嵌套中斷方式。這種方式的優點是,上下文數據不會被任何順序的中斷所破壞;缺點是,在中斷服務程序執行時不能根據中斷優先級進行中斷嵌套,延時時間長,只有當一個ISR完全結束并退出中斷后才重新接受中斷,降低了系統的實時特性。為提高系統的實時性,需要對其中斷進行優化。

    3  中斷的優化

    改寫μC/OSII 內核中 HANDLER 宏可以實現ARM的中斷嵌套,這樣做雖然提高了系統的實時性,但損害了系統運行的穩定性和可移植性。通過對中斷過程的分析,下面給出一種編寫中斷服務程序的模板,充分利用ISR執行在特權模式--系統模式這一特點來實現中斷嵌套的條件。中斷服務程序模板如下:

    void ISR(void){

    OS_ENTER_CRITICAL();//在中斷服務程序中關中斷清中斷標志;//防止沒有清中斷標志使得中斷多次進入關閉低優先級;//禁止低優先級中斷

    S_EXIT_CRITICAL();//在中斷服務程序中開中斷用戶的C語言代碼;//進行用戶在中斷中要做的工作

    VICVectAddr=0;//將中斷服務程序的入口地址置0

    }

    由于Handler宏中已將LR、SPSR、返回地址和發生中斷前的堆棧指針等寄存器入棧保存,所以接下來要做的就只剩下開關中斷的工作。由于在進入C中斷處理程序之前進入的是關中斷系統模式,所以必須在C語言中重新打開中斷,而C語言是不能進行寄存器操作的,因此必須調用軟中斷OS_EXIT_CRITICAL()重新打開中斷。在開中斷之前,要判斷將全局變量OsEnterSum減1后是否為0,所以必須在調用開中斷之前調用軟中斷OS_ENTER_CRITICAL()將OsEnterSum變成1。在臨界區中可以進行一些處理,如清中斷標志、關低優先級中斷等。進行C語言中斷服務程序之后要將VICVectAddr置位為0,這是ARM7處理器核的要求必須進行這樣的編寫,否則會導致一些錯誤(如不能第2次進入中斷等)。

    結語

    “μC/OSII+ ARM7”是當前嵌入式系統中廣泛應用的一款平臺,適合于復雜度不是很高的中小型嵌入式系統。本文在深入分析”μC/OSII+ ARM7”中斷機制的基礎上,對IRQ中斷響應機制進行了改進,提出了優化方案。實驗證明,此方法可以實現中斷的嵌套并且提高系統實時性,具有一定的應用價值。


關鍵字:μC  OSII  ARM7  中斷過程 引用地址:基于μC/OSII的ARM7中斷過程分析及優化方法

上一篇:基于ARM的數字調壓控制系統設計詳解
下一篇:ARM S3C4510B系統中異常中斷的功能及特點

推薦閱讀

機器人技術的興起正在引領我們進入一個全新的時代。市場研究機構IDC預測,中國機器人(含無人機)及相關服務的消費額持續高速增長,到2021年將達到746億美元(約合4720億元人民幣),2017年~2021年復合年增長率(CAGR)將達到31.9%。中國已經成為全球最大的機器人市場,包括互聯網公司、科技公司等在內的業界各方紛紛進入這一市場,在技術和需求的帶動下,...
2014年,當是德科技(Keysight)從安捷倫(Agilent)剝離之時,有人會認為這是安捷倫放棄了傳統的增長緩慢的電子測試測量商。 2015年開始,當是德科技陸續收購Anite和Ixia之時,有人會認為這是是德科技傳統業務無法增長,從而進行的被動外部轉型。 2018年,當是德科技開始宣布新的策略之時,有人會認為這是是德科技在瞎折騰,畢竟測試測量這門生意是靠客戶...
這個例子主要還是熟悉有關定時器A的寄存器配置以及IAR的配置方式。/***********************************************程序功能:實現流水燈以三種流動方式和四種流動速度 的不同組合而進行點亮"流動"------------------------------------------------撥碼開關設置:將LED位撥至ON,其余撥至OFF測試說明:觀察流水燈流動順序和速度的變化***...
摘自——ST Blog 2020年由ST冠名的原創NFC開發板設計大賽為具有才華和創意的工程師們提供了發揮的平臺。來自中國的128名參賽者提交了以ST25標簽和讀卡器為主的作品。我們提供了網絡研討會和硬件平臺。作為回報,參賽者在一個專門的論壇上展示他們的項目,分享代碼示例、技術細節,有時還有視頻分享。從醫療產品到智能手表再到智能家居,各種各樣的申請作品...

史海拾趣

問答坊 | AI 解惑

手機WAP 上網妙用

來源 移動3G網 www.Goes3G.com/在今天的都市生活中,手機的普及程度已遠遠超過了電腦,用手機上網也正在迅速興旺起來。所不同的是,電腦上網主要采用的是HTTP協議,而手機上網則是以WAP協議為主。    WAP是WIRELESSAPPLICATION PROTOC0L ...…

查看全部問答∨

新一代品圓劃片技木

l 傳統劃片技術所面臨的難題 隨著向輕薄短小的發展趨勢,IC的封裝也起了很大的變化.如記憶體IC,已由早期的單一chip變成多層chip堆棧的封裝,一顆IC里疊了7、8層芯粒(chip),韓國三星半導體今年稍早更公開展示了其超薄晶圓的封裝技術已達16層的堆 ...…

查看全部問答∨

AMIC 2.4G無線收發芯片

臺灣笙科電子AMIC的A7105 是一低成本適用于2.4G 無線 數據通信的收發IC,內含高靈敏度接收 器(-99dBm@250KBPS)及高效功率 放大器,很適合10-40米之內的無線 通信應用 。 A7105的相關參數可通過3/4線SPI設置,最大64字節FIFO,支持CRC(16CRR ...…

查看全部問答∨

usbmsfn.dll從何而來?

windows mobile開發 因為要添加mass_storage_class驅動,要用到usbmsfn.dll文件 在release目錄下是有這個文件的,但不知該文件從何而來。 msdn上講mass storage的樣例文件是在I:\\wm604\\PUBLIC\\COMMON\\OAK\\DRIVERS\\USBFN\\CLASS\\STORAGE中 ...…

查看全部問答∨

windows驅動開發

本人非計算機專業出身,從事嵌入式應用層軟件開發,對軟件開發個人覺的國內學C、C++、JAVA等很多,主要是由于這些方面的資料較多,可以通過自己的努力成才。而底層的驅動開發、linux等由于各種條件的局限,或者說國內的精英貢獻的資料太少--譬如 ...…

查看全部問答∨

想搞嵌入式和單片機,前輩給點意見

專業是電子信息科學與技術 數電模電,C/C++/匯編都學了。 數電模電學校教得很淺 C/C++/匯編自以為相對于其他同學學得不錯 畢業了想搞單片機或者嵌入式 但是不知道怎么入門,現在就一直在深入學習C,和c++ 所以請各位前輩給點意見 比如說該看 ...…

查看全部問答∨

S7200 程序保持時間

程序理論上永遠保持。   S7-200系統提供了EEPROM:非易失的電可擦除存儲器,保存數據不需要供電,并且可以改寫其內容。用戶程序也永久保存在程序EEPROM區中。…

查看全部問答∨

建議EE團能有Xilinx的Zynq開發板

Zynq™-7000 EPP 是一種新型產品,它將工業標準的 ARM® 雙核 Cortex™-A9 MPCore™ 處理系統與 Xilinx 統一的 28nm 可編程邏輯FPGA完美地結合在一起。面向處理器的體系結構實現了一個全面的處理平臺,為開發人員提供 ASIC 級的 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 子长县| 都昌县| 宾川县| 德惠市| 焦作市| 新建县| 富川| 黄骅市| 贵港市| 定襄县| 武汉市| 晋中市| 罗山县| 中江县| 收藏| 长岛县| 镇安县| 稷山县| 嫩江县| 兴文县| 皋兰县| 曲麻莱县| 开化县| 甘孜县| 高雄县| 萨嘎县| 皋兰县| 彝良县| 延寿县| 普陀区| 鸡东县| 视频| 江源县| 昆山市| 吉林市| 塘沽区| 双江| 昌平区| 昂仁县| 重庆市| 腾冲县|