音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

大家討論一下ucosII 的函數(shù)OSIntCtxSw

作者:randomkuan 欄目:ARM技術(shù)
大家討論一下ucosII 的函數(shù)OSIntCtxSw
ARM嵌入式系統(tǒng)基礎教材425頁任務切換代碼

OSIntCtxSw
                                                   ;下面為保存任務環(huán)境
1       LDR     R2, [SP, #20]                       ;獲取PC
2       LDR     R12, [SP, #16]                      ;獲取R12
3       MRS     R0, CPSR
4       MSR     CPSR_c, #(NoInt | SYS32Mode)
5       MOV     R1, LR
6       STMFD   SP!, {R1-R2}                        ;保存LR,PC
7      STMFD   SP!, {R4-R12}                       ;保存R4-R12
8       MSR     CPSR_c, R0
9       LDMFD   SP!, {R4-R7}                        ;獲取R0-R3
10       ADD     SP, SP, #8                          ;出棧R12,PC    
11       MSR     CPSR_c, #(NoInt | SYS32Mode)
  12      STMFD   SP!, {R4-R7}                        ;保存R0-R3      
13       LDR     R1, =OsEnterSum                     ;獲取OsEnterSum
14       LDR     R2, [R1]
15       STMFD   SP!, {R2, R3}                   ;保存CPSR,OsEnterSum

                                 ;保存當前任務堆棧指針到當前任務的TCB
16      LDR     R1, =OSTCBCur
17      LDR     R1, [R1]
18      STR     SP, [R1]
19      BL      OSTaskSwHook                     ;調(diào)用鉤子函數(shù)
                                        ;OSPrioCur <= OSPrioHighRdy
  20      LDR     R4, =OSPrioCur
  21      LDR     R5, =OSPrioHighRdy
  22      LDRB    R6, [R5]
  23      STRB    R6, [R4]
                                        ;OSTCBCur <= OSTCBHighRdy
  24      LDR     R6, =OSTCBHighRdy
  25      LDR     R6, [R6]
  26      LDR     R4, =OSTCBCur
  27      STR     R6, [R4]
OSIntCtxSw_1
                                                  ;獲取新任務堆棧指針
  28      LDR     R4, [R6]
        ADD     SP, R4, #68                         ;17寄存器CPSR,OsEnterSum,R0-R12,LR,SP
        LDR     LR, [SP, #-8]
29     MSR     CPSR_c, #(NoInt | SVC32Mode)        ;進入管理模式
        MOV     SP, R4                              ;設置堆棧指針
        LDMFD   SP!, {R4, R5}                       ;CPSR,OsEnterSum
                                              ;恢復新任務的OsEnterSum
        LDR     R3, =OsEnterSum
        STR     R4, [R3]
    
        MSR     SPSR_cxsf, R5                       ;恢復CPSR
        LDMFD   SP!, {R0-R12, LR, PC }^             ;運行新任務

問1:前三行代碼是不是運行在管理模式下,sp是不是管理模式下的堆棧指針?
  2:第10行sp+8后是不是指向R2,它是怎么出棧R12,PC的?
  3:第29行為什么要進入管理模式,新任務的環(huán)境不是保存在用戶模式下的任務堆棧嗎?那接下來的MOV  SP, R4,R4的值為系統(tǒng)模式下的任務堆棧的指針,而sp為
2樓: >>參與討論
wuming
1.處于特權(quán)模式 2.在第4行和第8行兩次輪轉(zhuǎn),得知現(xiàn)在的SP指向最開始的特權(quán)模式下的棧,棧內(nèi)的數(shù)據(jù)是r0-r3,r12,lr_svc(pc) 3.管理模式與用戶模式公用一個堆棧SP
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
我也發(fā)現(xiàn)uart0不能發(fā)送0x00,急死我了!
請問ZLGARM和諸位大狹,關(guān)于2200工程模板!
求購ARM仿真器的資料.
請問LPC3000什么時候有售?
請教KEIL下面擴展RAM的地址設定問題
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號