freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課程設(shè)計(jì)--樹型控件的編程使用(已改無錯(cuò)字)

2023-07-17 22:36:11 本頁面
  

【正文】 數(shù)首先調(diào)用鉤子函數(shù) OSTaskSwHook(),然后將 OSRunning 標(biāo)志位設(shè)置為真,表示任務(wù)開始執(zhí)行,從而保證任務(wù)切換操作的正確執(zhí)行,緊接著從具有最高優(yōu)先級的任務(wù)控制塊中取得任務(wù)的堆棧指針,初始化堆棧指針寄存器 SP,然后恢復(fù)其他的寄存器,開始執(zhí)行最高優(yōu)先級的任務(wù)。 OSCtxSw()該函數(shù)在任務(wù)級任務(wù)切換函數(shù)中調(diào)用,首先保存處理器寄存器,將當(dāng)前 SP 存入任務(wù) TCB 中,載入就緒最高優(yōu)先級任務(wù)的 SP,從新任務(wù)的任務(wù)堆棧中恢復(fù)處理器所有寄沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第四章 系統(tǒng)實(shí)現(xiàn) 17 存器的值,然后執(zhí)行中斷返回指令。 OSIntCtxSw()該函數(shù)是在 ISR 中執(zhí)行任務(wù)切換功能,其原理基本上與任務(wù)級的切換相同,區(qū)別只是 ISR 已經(jīng)保存了 CPU 的寄存器,因此不要再進(jìn)行類似的操作,只需對堆棧指針作相應(yīng)的調(diào)整即可。 OSTickISR()該函數(shù)是系統(tǒng)時(shí)鐘節(jié)拍中斷服務(wù)函數(shù),首先要保存處理器寄存器,接著調(diào)用OSIntEnter()函數(shù),以保證中斷嵌套層數(shù)不超過 255 層,如果滿足了該條件,則把堆棧指針保存到當(dāng)前任務(wù)的任務(wù)控制塊 TCB 中 ,然后給產(chǎn)生中斷的設(shè)備清中斷,重新允許中斷,接下來調(diào)用 OSTimeTick()來維持μ C/OSⅡ內(nèi)部的定時(shí)以及調(diào)用 OSIntExit()函數(shù)決定是否因?yàn)檫@個(gè)中斷服務(wù)程序的執(zhí)行,使得更高優(yōu)先級的任務(wù)就緒。 這一部分是用戶根據(jù)自己的應(yīng)用系統(tǒng)來定制合適的內(nèi)核服務(wù)功能,包括 2 個(gè)文件: 和 。 用來配置內(nèi)核,用戶根據(jù)需要對內(nèi)核進(jìn)行修改,留下需要的部分,去掉不需要的部分,比如系統(tǒng)可提供的最大任務(wù)數(shù)量,是否定制郵箱服務(wù),是否提供優(yōu)先級動態(tài)改變功能等等,所有的配置更改包括頭文 件的增減均在該文件中進(jìn)行。 系統(tǒng)頭文件,整個(gè)實(shí)時(shí)系統(tǒng)程序所需要的文件,包括了內(nèi)核和用戶的頭文件,這樣使得用戶項(xiàng)目中的每個(gè) C 文件不用分別去考慮他實(shí)際上需要哪些頭文件。 移植代碼實(shí)現(xiàn) 復(fù)位入口代碼的主要功能就是設(shè)置好 PLL 然后搬遷代碼。此處列出的是標(biāo)準(zhǔn)寫法,根據(jù)編譯鏈接參數(shù)不同,還有其他一些優(yōu)化寫法。例如,在編譯調(diào)試工具中 ( 或),如果只配置 ROBASE 參數(shù),不配置 RWBASE 參數(shù), RO 和 RW 段是自然銜接的,這樣代碼的拷貝搬遷工作可以簡化。 另外要 注意的是,這部分代碼要仔細(xì)檢查、調(diào)試實(shí)際的執(zhí)行結(jié)果。例如,搬遷后,應(yīng)該初始化的全局變量是否正確初始化。 下,如果用 JTAG 調(diào)試, RWBASE 配置了參數(shù),直接下載代碼到 RAM 中,因?yàn)闆]有自己控制內(nèi)存搬遷和拷貝初始化數(shù)據(jù)段的代碼,就存在全局變量沒有正確初始化的問題。工程師編寫代碼的時(shí)候,不可能不考慮調(diào)試狀態(tài),因此這種調(diào)試狀態(tài)下代碼段搬遷的初始化問題同樣要仔細(xì)考慮。比較好的方式,是在模塊的初始化函數(shù)中,進(jìn)行所有處于 RW 段、 ZI 段的全局變量的詳細(xì)初始化。這種初始化過程不影響主體代碼的僅僅在開始階段執(zhí) 行一次,完全不會影響主體程序的執(zhí)行效率,確能夠保障代碼在任何情況下的穩(wěn)定運(yùn)行。 代碼三十五 .2132 復(fù)位及中斷入口代碼 IMPORTi__pCurTcb IMPORTIrqFinish IMPORTPreISR IMPORTIntrNested IMPORTI2C0Vect IMPORTIsrHandler 沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第四章 系統(tǒng)實(shí)現(xiàn) 18 IMPORT|Image$$RO$$Limit| IMPORT|Image$$RW$$Base| IMPORT|Image$$ZI$$Base| IMPORT|Image$$ZI$$Limit| EXPORTENTER_U0 EXPORTENTER_U1 EXPORTENTER_I2C0 EXPORTENTER_DEF AREAInit,CODE,READONLY CODE32 ENTRY。入口 。/***********************************************************/ 。/異常矢量 ,接到異常跳轉(zhuǎn) */ 。/有順序問題必須按照異常順序 */ 。/***********************************************************/ bHandlerRST。實(shí)際啟動點(diǎn),非再次跳轉(zhuǎn)的例程 bHandleFIQ。此下之后均為再次跳轉(zhuǎn)例程 bHandleFIQ bHandleFIQ bHandleFIQ。不適合跳轉(zhuǎn)處理 DCD0xA73FFFC6 LDRPC,[PC,0xff0]。分發(fā)例程可以 C 安裝設(shè)備中斷 HandleFIQ。不處理 FIQ,所有異常進(jìn)入此處死循環(huán) nop。并通過看門狗完成復(fù)位 bHandleFIQ LTORG 。/***********************************************************/ 。/*IRQ 中斷預(yù)處理例程 */ 。/*入口條件 :IRQ 中斷屏蔽 ,LR 是被中斷任務(wù)或 ISR 的 PC 值 ,*/ 。/*SPSR 是被中斷任務(wù)或 ISR 的當(dāng)前處理器狀態(tài)值 ,*/ 。/*SP 是 IRQ 模式當(dāng)前堆棧指針值 */ 。/***********************************************************/ HandlerIRQ 。/***************************************/ 。 保存到 R0 。壓棧 R0,是 IRQ 模式的 SPSR,也是被中斷模式的 CPSR 。/***************************************/ 沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第四章 系統(tǒng)實(shí)現(xiàn) 19 mrsr4,spsr stmfdsp!,{r4} movr0,r6 blPreISR。r0 中返回處理結(jié)果 cmpr0,0 beqkeepirq 。/***************************************/ 。結(jié)束應(yīng)急處理并結(jié)束中斷處理 ,已處理完 。/***************************************/ ldrr0,=SFR_VICVectAddr ldrr1,=0 strr1,[r0] ldmfdsp!,{r0} msrspsr_cxsf,r0 ldmfdsp!,{r0r12,lr,pc}^ LTORG keepirq 。/***************************************/ 。 恢復(fù)堆棧指針的原值,并保存到 R3 。方便后面算法使用 ,此后不再用到 IRQ 堆棧 。/***************************************/ addr3,sp,64 movsp,r3 。/***************************************/ 。,如果不是第一層,進(jìn)入 3 。 嵌套中斷數(shù)變量地址到 R0,變量值讀入到 R1 。/***************************************/ ldrr0,=IntrNested ldrr1,[r0] cmpr1,0 。/***************************************/ 。 如果不是第一次,跳到第 3 步 。/***************************************/ bneIRQNESTMODE 。/***************************************/ 。3 設(shè)置嵌套層數(shù)為 1。 R1=1,保存 R1 值到 R0 地址 (前面 ) 。/***************************************/ 沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第四章 系統(tǒng)實(shí)現(xiàn) 20 ldrr1,=1 strr1,[r0] 。/***************************************/ 。不是嵌套中斷切換到 svc 模式處理任務(wù) 。 切換到 SVC 模式 ,第一 層中斷 ,一定是中斷運(yùn)行在 SVC 模式下的任務(wù) 。/***************************************/ msrcpsr_cxsf,ARM9_SVC_MOD|ARM7_I_BIT 。/****************************************/ 。 將保存在 IRQ 模式下的任務(wù)環(huán)境拷貝到任務(wù)的堆棧 (SP), 。其中 LR 無法拷貝,需要在本模式獲取 。/****************************************/ ldmdbr3!,{r0}??截?PC stmfdsp!,{r0} ldmdbr3!,{r0}。壓棧真正 LR stmfdsp!,{lr} ldrr1,=56。準(zhǔn)備要拷貝字節(jié)數(shù) ,與硬件相關(guān) IRQSTACKSVCCOPY ldmdbr3!,{r0}。反向 pop stmfdsp!,{r0}。push subsr1,r1,4。遞減計(jì)數(shù) bneIRQSTACKSVCCOPY 。/***************************************/ 。 當(dāng)前 SP 指針 (這是 SVC 模式下任務(wù)當(dāng)前的堆棧指針 )保存到任務(wù)控制 。塊結(jié)構(gòu) 的第一個(gè)字段 .保存 sp 到 tcb,便于任務(wù)切換 */ 。因?yàn)槿蝿?wù)被中斷時(shí) ,堆棧尚未與環(huán)境同步 。/***************************************/ ldrr0,=i__pCurTcb ldrr1,[r0] strsp,[r1] 。/**********************************************/ 。 完成了 SVC 模式下的處理 ,切換到 SYS/UND,跳轉(zhuǎn)到 5 。/**********************************************/ msrcpsr_cxsf,ARM7_UND_MOD|ARM7_I_BIT bIRQPREOVER LTORG IRQNESTMODE 。/***************************************/ 沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第四章 系統(tǒng)實(shí)現(xiàn) 21 。/* +=1,保存 R1 值到 R0 地址 (前面 ) 。/***************************************/ addr1,r1,1 strr1,[r0] 。/***************************************/ 。是嵌套中斷切換到 sys 模式處理 ISR 。 切換到 SYS 模式 ,UND 替代 。/***************************************/ msrcpsr_cxsf,ARM7_UND_MOD|ARM7_I_BIT 。/****************************************/ 。 將保存在 IRQ 模式下的 ISR 環(huán)境拷貝到 ISR 的堆棧 (SP), 。其中 LR 無法拷貝,需要在本模式獲取 。/****************************************/ ldmdbr3!,{r0}??截?PC stmfdsp!,{r0} ldmdbr3!,{r0}。壓棧真正 LR stmfdsp!,{lr} ldrr1,=56。準(zhǔn)備要拷貝字節(jié)數(shù) ,與硬件相關(guān) NESTSTACKSVCCOPY ldmdbr3!,{r0}。反向 pop stmfdsp!,{r0}。push subsr1,r1,4。遞減計(jì)數(shù) bneNESTSTACKSVCCOPY 。/***************************************/ 。因?yàn)?SYS 模式一旦運(yùn)行就不會被 切換掉,只能被中斷或退出 。因此不存在 的對應(yīng)步驟 。同時(shí)已經(jīng)是 SYS 模式下,也不存在 的對應(yīng)步驟 。/***************************************/ IRQPREOVER 。/***************************************/ 。 IRQ 處理函數(shù),也就是 HandleIRQ 位置的函數(shù)指針, 。實(shí)際上是 文件中的 voidIsrHandler(void)函數(shù)。 。注意該函數(shù)中可能打開了中斷,因此才存在嵌套中斷的可能。 。如果不需要嵌套中斷,只需要在該函數(shù)中,保持中斷屏蔽即可。 。返回后中斷是屏蔽的 ,即該函數(shù)結(jié)尾時(shí)再次打開了中斷, 。并且是在在中斷屏蔽后才退出設(shè)備保護(hù),這樣處理
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1