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

正文內(nèi)容

嵌入式系統(tǒng)—rteosμcos-ii的移植-資料下載頁

2025-07-18 23:41本頁面
  

【正文】 or ARM7通用的中斷服務(wù)程序的匯編與 C函數(shù)接口代碼。 注 :在不受管理的中斷服務(wù)程序中不能調(diào)用任何系統(tǒng)函數(shù)。 關(guān)于中斷及時鐘節(jié)拍 流程圖 保存當(dāng)前任務(wù)的 寄存器組 中斷嵌套數(shù)加 1 切換到系統(tǒng)模式 執(zhí)行中斷服務(wù)程序 關(guān)中斷 執(zhí)行 OSIntExit( ) 切換到 IRQ模式 判斷是否需要進行任務(wù)切換 切換任務(wù)或返回 關(guān)于中斷及時鐘節(jié)拍 流程圖 保存當(dāng)前任務(wù)的 寄存器組 中斷嵌套數(shù)加 1 切換到系統(tǒng)模式 執(zhí)行中斷服務(wù)程序 關(guān)中斷 執(zhí)行 OSIntExit( ) 切換到 IRQ模式 判斷是否需要進行任務(wù)切換 切換任務(wù)或返回 MACRO $IRQ_Label HANDLER $IRQ_Exception_Function EXPORT $IRQ_Label 。 輸出的標號 IMPORT $IRQ_Exception_Function 。 引用的外部標號 $IRQ_Label SUB LR, LR, 4 。 計算返回地址 STMFD SP!, {R0R3, R12, LR} 。 保存任務(wù)環(huán)境 MRS R3, SPSR 。 保存狀態(tài) 。 保存用戶狀態(tài)的 R3,SP,LR,不能回寫 STMFD SP, {R3, SP, LR}^ LDR R2, =OSIntNesting LDRB R1, [R2] ADD R1, R1, 1 STRB R1, [R2] SUB SP, SP, 4*3 。 切換到系統(tǒng)模式 MSR CPSR_c, (NoInt | SYS32Mode) CMP R1, 1 LDREQ SP, =StackUsr ... 關(guān)于中斷及時鐘節(jié)拍 中斷嵌套層數(shù)加 1 切換到系統(tǒng)模式,如果是第一次中斷還要設(shè)臵堆棧指針 壓棧保存被中斷任務(wù)的運行環(huán)境 關(guān)于中斷及時鐘節(jié)拍 流程圖 保存當(dāng)前任務(wù)的 寄存器組 中斷嵌套數(shù)加 1 切換到系統(tǒng)模式 執(zhí)行中斷服務(wù)程序 關(guān)中斷 執(zhí)行 OSIntExit( ) 切換到 IRQ模式 判斷是否需要進行任務(wù)切換 切換任務(wù)或返回 中斷服務(wù)程序 ( ISR) 在 ISR中可以打開中斷實現(xiàn)中斷嵌套 MACRO $IRQ_Label HANDLER $IRQ_Exception_Function EXPORT $IRQ_Label 。 輸出的標號 IMPORT $IRQ_Exception_Function 。 引用的外部標號 $IRQ_Label ... BL $IRQ_Exception_Function 。 切換到系統(tǒng)模式 MSR CPSR_c, (NoInt | SYS32Mode) 。 OsEnterSum,使 OSIntExit退出時中斷關(guān)閉 LDR R2, =OsEnterSum MOV R1, 1 STR R1, [R2] BL OSIntExit 。 因為中斷服務(wù)程序要退出,所以 OsEnterSum=0 LDR R2, =OsEnterSum MOV R1, 0 STR R1, [R2] 。 切換回 irq模式,并恢復(fù)用戶狀態(tài)的 R3,SP,LR MSR CPSR_c, (NoInt | IRQ32Mode) LDMFD SP, {R3, SP, LR}^ 。 注意不能回寫 ... 關(guān)于中斷及時鐘節(jié)拍 關(guān)閉中斷 執(zhí)行中斷服務(wù)程序 (ISR) 使 OSEnterSum為 1,防止在 OSIntExit函數(shù)中打開中斷 通知系統(tǒng),中斷退出 使 OSEnterSum為 0,運行中斷打開 恢復(fù)任務(wù)的 R SP和LR 關(guān)于中斷及時鐘節(jié)拍 流程圖 保存當(dāng)前任務(wù)的 寄存器組 中斷嵌套數(shù)加 1 切換到系統(tǒng)模式 執(zhí)行中斷服務(wù)程序 關(guān)中斷 執(zhí)行 OSIntExit( ) 切換到 IRQ模式 判斷是否需要進行任務(wù)切換 切換任務(wù)或返回 MACRO $IRQ_Label HANDLER $IRQ_Exception_Function EXPORT $IRQ_Label 。 輸出的標號 IMPORT $IRQ_Exception_Function 。 引用的外部標號 $IRQ_Label ... LDR R0, =OSTCBHighRdy LDR R0, [R0] LDR R1, =OSTCBCur LDR R1, [R1] CMP R0, R1 ADD SP, SP, 4*3 MSR SPSR_cxsf, R3 。 不進行任務(wù)切換 LDMEQFD SP!, {R0R3, R12, PC}^ 。 進行任務(wù)切換 LDR PC, =OSIntCtxSw MEND 關(guān)于中斷及時鐘節(jié)拍 比較當(dāng)前任務(wù)是否為就緒的最高優(yōu)先級任務(wù), 如果不是則進行切換 設(shè)臵堆棧指針和恢復(fù)SPSR 進行任務(wù)切換或者恢復(fù)執(zhí)行被中斷任務(wù) 關(guān)于中斷及時鐘節(jié)拍 流程圖 保存當(dāng)前任務(wù)的 寄存器組 中斷嵌套數(shù)加 1 切換到系統(tǒng)模式 執(zhí)行中斷服務(wù)程序 關(guān)中斷 執(zhí)行 OSIntExit( ) 切換到 IRQ模式 判斷是否需要進行任務(wù)切換 切換任務(wù)或返回 中斷服務(wù)程序 ( ISR) 在 ISR中可以打開中斷實現(xiàn)中斷嵌套 void ISR(void) { OS_ENTER_CRITICAL()或直接給變量 OsEnterSum賦 1。 清除中斷源 。 通知中斷控制器中斷結(jié)束: 開中斷: OS_EXIT_CRITICAL()。 用戶處理程序 。 } 中斷服務(wù)程序的編寫 因為中斷發(fā)生時肯定是允許中斷的,所以如果用戶在清除中斷源之前調(diào)用 μC/OSII的系統(tǒng)服務(wù)函數(shù)就很可能會造成芯片的中斷系統(tǒng)工作異常而使程序工作異常。因此在函數(shù)開始處關(guān)閉中斷,或者直接給變量 OSEnterSum賦 1。如果用戶程序沒有這種情況,則不需要這個操作。在執(zhí)行 OS_EXIT_CRITICAL( )后,中斷重新打開,如果在接下來的用戶處理程序中發(fā)生中斷,就可以實現(xiàn)中斷嵌套。 主要內(nèi)容 ?移植規(guī)劃 ?μC/OSII的移植 ?嵌入式系統(tǒng)的初始化 初始化程序的下載執(zhí)行 MPUBOOT ROMRAM下載工具串口JTAG網(wǎng)口目標機 宿主機 1)通過編程器將可執(zhí)行目標文件燒寫到BootROM( ROM、 EPROM、 FLASH)等; 2)通過串行口和網(wǎng)口下載執(zhí)行目標文件,要求宿主機系統(tǒng)上有數(shù)據(jù)傳輸工具程序、目標機裝載器、嵌入式監(jiān)視器或目標機系統(tǒng)上的調(diào)試代理。 3)通過 JTAG或 BDM接口下載; 嵌入式系統(tǒng)的初始化過程 復(fù) 位 向 量最 小 硬 件初 始 化其 余 硬 件初 始 化R T O S初 始 化R T O S部 件 初 始 化啟 動 R T O S啟 動 應(yīng) 用 程 序1234567硬 件初 始 化R T O S初 始 化軟 件初 始 化最小啟動代碼 B S PR T O S應(yīng) 用程 序嵌入式系統(tǒng)的初始化過程 復(fù)位向量最小硬件初始化其余硬件初始化123最小啟動代碼 BSP硬件初始化階段 復(fù)位向量 ENTRY b ResetHandler 。for debug b HandlerUndef 。handlerUndef b HandlerSWI 。SWI interrupt handler b HandlerPabort 。handlerPAbort b HandlerDabort 。handlerDAbort b . 。handlerReserved b HandlerIRQ b HandlerFIQ 嵌入式系統(tǒng)的初始化過程( 2) 復(fù)位向量最小硬件初始化其余硬件初始化123最小啟動代碼 BSP硬件初始化階段 最小硬件初始化 1)設(shè)置適當(dāng)?shù)募拇嫫鳎骨度胧教幚砥魈幱谝粋€已知的狀態(tài): ?獲得 CPU的類型; ?獲得或設(shè)置 CPU的時鐘頻率。 2)禁止中斷和高速緩存 3)初始化內(nèi)存控制器、內(nèi)存芯片和高速緩存單元,包括: ?得到內(nèi)存的開始地址; ?得到內(nèi)存的大小; ?如果有要求,則還需要進行主存測試; 嵌入式系統(tǒng)的初始化過程( 3) 復(fù)位向量最小硬件初始化其余硬件初始化123最小啟動代碼 BSP硬件初始化階段 其余硬件初始化 1)引導(dǎo)代碼調(diào)用合適的函數(shù)對目標機系統(tǒng)上的全部硬件部件進行初始化,包括: ?建立執(zhí)行處理程序 ?初始化中斷處理程序 ?初始化總線接口 ?初始化板級外設(shè)得到內(nèi)存的開始地址; 嵌入式系統(tǒng)的初始化過程( 4) RTOS初始化階段 RTOS初始化 1) RTOS初始化 2) RTOS對象和服務(wù)初始化 ?任務(wù) ?信號量 ?定時器 ?中斷 ?內(nèi)存管理 3) RTOS任務(wù)堆棧初始化 4) RTOS擴展部件初始化 5)啟動 RTOS RTOS初始化RTOS部件初始化啟動R T O S456RTOS初始化 RTOSARM7TDMI系統(tǒng)初始化的一般過程 啟動(系統(tǒng)上電 /復(fù)位) 從程序入口點 關(guān)閉中斷 初始化時鐘等硬件相關(guān)寄存器 初始化存儲器系統(tǒng) 初始化 C所需要的存儲器空間 調(diào)用 C入口函數(shù) 一、設(shè)置程序入口指針 ? 上電復(fù)位后直接到程序入口點執(zhí)行,入口點一般為一個跳轉(zhuǎn)表,跳轉(zhuǎn)到復(fù)位處理程序處開始執(zhí)行 ARM7TDMI系統(tǒng)的初始化; ? 啟動程序首先必須定義入中指針,而且整個應(yīng)用程序只有一個入口指針 例: AREA Boot,CODE,READONLY ENTRY /*設(shè)置程序入口指針 */ 二、設(shè)置中斷向量 ? ARM要求中斷向量必須設(shè)置在從OX00000000地址開始,連續(xù) 8*4字節(jié)的地址空間; ? 向量表包含一系列跳轉(zhuǎn)指令,跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序; ? 對各未用中斷,使其指向一個含返回指令的啞函數(shù),以防止錯誤中斷引起系統(tǒng)的混亂; 中斷向量表 FIQ 0x1C 外部快速中斷 IRQ 0x18 一般外部中斷 (Reserved) 0x14 保留 Data Abort 0x10 數(shù)據(jù)異常 Frefetch Abort 0x0C 預(yù)取指異常 Software int 0x08 軟件中斷 Undef 0x04 未定義指令中斷 Reset 0x00 復(fù)位中斷 中斷向量表的程序 AREA Boot,CODE,READONLY ENTRY B Reset_handler B Undef_Handler B SWI_Handler B PreAbort_Handler B . 。for reserved interrupt,stop her
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1