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

正文內(nèi)容

嵌入式系統(tǒng)—rteosμcos-ii的移植(更新版)

2025-08-26 23:41上一頁面

下一頁面
  

【正文】 能號 簡介 0x00 任務級任務切換函數(shù) 0x01 運行優(yōu)先級最高的任務 ,由OSStartHighRdy產(chǎn)生 0x02 關中斷 0x03 開中斷 0x80 任務切換到系統(tǒng)模式 0x81 任務切換到用戶模式 0x82 任務代碼是 ARM代碼 0x83 任務代碼是 THUMB代碼 ... case 0x82: // 任務代碼是 ARM代碼 if (Regs[0] = OS_LOWEST_PRIO) { ptcb = OSTCBPrioTbl[Regs[0]]。 ... 每關閉一次中斷,中斷關閉計數(shù)器加 1 每調(diào)用一次開中斷函數(shù),該計數(shù)器減 1,為0時允許打開中斷 關閉中斷 打開中斷 編寫 —— 軟件中斷異常服務程序 功能號 簡介 0x00 任務級任務切換函數(shù) 0x01 運行優(yōu)先級最高的任務 ,由OSStartHighRdy產(chǎn)生 0x02 關中斷 0x03 開中斷 0x80 任務切換到系統(tǒng)模式 0x81 任務切換到用戶模式 0x82 任務代碼是 ARM代碼 0x83 任務代碼是 THUMB代碼 它們可以在任何情況下使用。 } 該函數(shù)在 。 } 該數(shù)據(jù)比較特別,它用于保存該任務關中斷的次數(shù),它在調(diào)用 OS_ENTER_CRITICAL( )時加 1,在調(diào)用OS_EXIT_CRITICAL( )時減 1。 *stk = 0。 *stk = 0。 *stk = (USER_USING_MODE|0x00)。 *stk = 0。 stk = ptos。 /* 任務代碼是 THUMB代碼 */ __swi(0x83) void TaskIsTHUMB(INT8U prio)。同時,這個函數(shù)也可以有參數(shù)和返回值,其傳遞規(guī)則與一般函數(shù)相同。 extern int INTS_OFF(void)。 typedef unsigned int INT16U。 typedef unsigned int INT32U。 define OS_STK_GROWTH 1 —— 堆棧生長方式 編寫 μC/OSII不使用 C語言中的 short、 int、 long等數(shù)據(jù)類型的定義,因為它們 與處理器類型有關,隱含著不可移植性 。而 μC/OSII的系統(tǒng)文件依然只是包含 ,即μC/OSII的系統(tǒng)文件完全不必改動。 *y=temp。 所以重點介紹第 4點。 GCC雖然支持廣泛,很多開發(fā)套件使用它作為編譯器,但是與ADS比較其編譯效率較低,這對充分發(fā)揮芯片性能不利 ?考慮 使用 ADS編譯程序和調(diào)試 ARM的工作模式 ? ARM處理器有 7種操作模式 : ? 用戶模式 (usr) ? 正常的程序執(zhí)行模式 ? 快速中斷模式 (fiq) 支持高速數(shù)據(jù)傳輸或通道處理 ? 中斷模式 (irq) 用于通用中斷處理 ? 管理員模式 (svc) 操作系統(tǒng)的保護模式 . ? 中止模式 (abt) 支持虛擬內(nèi)存和 /或內(nèi)存保護等異常 ? 系統(tǒng)模式 (sys) 支持操作系統(tǒng)的特殊用戶模式 (運行操作系統(tǒng)任務) ? 未定義模式 (und) 支持硬件協(xié)處理器的軟件仿真 ? 除了用戶模式外,其他模式均可視為特權模式 移植規(guī)劃(續(xù)) ? 任務模式的取舍 ARM7處理器核具有上述七種模式,其中除用戶模式外其它均為 特權模式 。 操作系統(tǒng)的移植大體可以分為兩個層次: ?跨體系結(jié)構的移植 ?針對特定處理器的移植 移植規(guī)劃 在移植前針對所使用的微處理器進行規(guī)劃,主要有以下幾個方面的考慮: ? 編譯器的選擇 ? 任務模式的選擇 ? 支持的指令集 移植規(guī)劃(續(xù)) 編譯器的選擇 ?針對 ARM處理器核的 C語言編譯器有很多,如 SDT、 ADS、 IAR、 TASKING和 GCC等 ?目前在國內(nèi)最流行的是 ADS、 SDT和 GCC ?SDT和 ADS均為 ARM公司自己開發(fā), ADS為 SDT的升級版,以后 ARM公司不再支持 SDT,故不選擇 SDT。 參考 ARM公司的 《 ARM體系結(jié)構 》 文檔 參考 《 嵌入式實時操作系統(tǒng) μC/OS II 》 一書 參考 ADS軟件自帶的 編譯器和連接器手冊 參考 《 嵌入式實時操作系統(tǒng) μC/OS II 》 一書 參考具體芯片的 數(shù)據(jù)手冊 和 使用手冊 因為第 4點的影響是全局性的,它決定移植代碼的框架和功能。 *x=*y。 在移植中另外增加了一個頭文件 ,要求 所有用戶程序必須包含 , 在 配臵項 。 雖然 ARM處理器核對于兩種方式均支持,但 ADS的 C語言編譯器僅支持一種方式,即 從上往下長,并且必須是滿遞減堆棧 ,所以 OS_STK_GROWTH的值為 1。 typedef signed short INT16S。 typedef signed char INT8S。 typedef unsigned long OS_CPU_SR。在 ADS中,有一個關鍵字__swi,用它聲明一個不存在的函數(shù),則調(diào)用這個函數(shù)就在調(diào)用這個函數(shù)的地方插入一條 SWI指令,并且可以指定功能號。 /* 任務代碼是 ARM代碼 */ __swi(0x82) void TaskIsARM(INT8U prio)。 opt = opt。 *stk = 0。 *stk = (unsigned int) pdata。 *stk = (OS_STK) task。 *stk = 0。 return (stk)。 void OSStartHighRdy(void) { _OSStartHighRdy()。 case 0x03: // 開中斷 if (OsEnterSum == 0) { __asm { MRS R0,SPSR BIC R0,R0,NoInt MSR SPSR_c,R0 } } break。 它們都有唯一的參數(shù):需要改變的任務的優(yōu)先級,值得注意的是,這兩個函數(shù)必須在相應的任務建立后但還沒有運行時調(diào)用。 ... 被設臵的任務號一定不能大于最低優(yōu)先級任務 獲取指定任務的任務控制塊的地址 修改任務堆棧中 CPSR的值,在任務重新運行時,切換到ARM指令方式 修改任務堆棧中 CPSR的值,在任務重新運行時,切換到Thumb指令方式 CPSR: 程序狀態(tài)寄存器 編寫 —— 軟件中斷異常服務程序 功能號 簡介 0x00 任務級任務切換函數(shù) 0x01 運行優(yōu)先級最高的任務 ,由OSStartHighRdy產(chǎn)生 0x02 關中斷 0x03 開中斷 0x80 任務切換到系統(tǒng)模式 0x81 任務切換到用戶模式 0x82 任務代碼是 ARM代碼 0x83 任務代碼是 THUMB代碼 注意 : 這兩個函數(shù)必須在相應的任務建立后但還沒有運行時 調(diào)用 。 —— 軟件中斷匯編接口 SoftwareInterrupt LDR SP, StackSvc STMFD SP!, {R0R3, R12, LR} MOV R1, SP MRS R3, SPSR TST R3, T_bit LDRNEH R0, [LR,2] BICNE R0, R0, 0xff00 LDREQ R0, [LR,4] BICEQ R0, R0, 0xFF000000 CMP R0, 1 LDRLO PC, =OSIntCtxSw LDREQ PC, =__OSStartHighRdy BL SWI_Exception LDMFD SP!, {R0R3, R12, PC}^ 保護被中斷的現(xiàn)場 將要用到的寄存器壓棧 判斷中斷前的指令集類型 從產(chǎn)生軟件中斷的指令中提取 中斷號 ARM Thumb 根據(jù)不同的中斷號執(zhí)行不同的程序 返回被中斷的任務 中斷號 執(zhí)行程序 0 進行任務切換 1 啟動多任務環(huán)境,運行就緒的最高優(yōu)先級任務 其它 軟件中斷服務函數(shù) 編寫 μC/OSII是搶占式實時操作系統(tǒng),得到運行的始終是就緒條件下最高優(yōu)先級的任務。 —— 任務切換代碼 任務入棧的 其它數(shù)據(jù) LR R12 R3 R2 R1 R0 空閑空間 棧底 任務環(huán)境開始 SP 編寫 —— OSIntCtxSw 保存當前任務的 寄存器組及其它 修改當前任務的TCB堆棧指針 用將要運行任務的優(yōu)先級和TCB指針更新 OSPrioHighRdy和 OSTCBCur 恢復新任務的寄存器組及其它 運行新任務 流程圖 編寫 —— OSIntCtxSw 保存當前任務的 寄存器組及其它 修改當前任務的TCB堆棧指針 用將要運行任務的優(yōu)先級和TCB指針更新 OSPrioHighRdy和 OSTCBCur 恢復新任務的寄存器組及其它 運行新任務 流程圖 OSIntCtxSw 。保存當前任務堆棧指針到當前任務的 TCB LDR R1, =OSTCBCur LDR R1, [R1] STR SP, [R1] BL STaskSwHook 。設臵堆棧指針 。用戶在調(diào)用該函數(shù)之前,必須已經(jīng)建立了一個或更多任務。 計算返回地址 STMFD SP!, {R0R3, R12, LR} 。 OsEnterSum,使 OSIntExit退出時中斷關閉 LDR R2, =OsEnterSum MOV R1, 1 STR R1, [R2] BL OSIntExit 。 清除中斷源 。 3)通過 JTAG或 BDM接口下載; 嵌入式系統(tǒng)的初始化過程 復 位 向 量最 小 硬 件初 始 化其 余 硬 件初 始 化R T O S初 始 化R T O S部 件 初 始 化啟 動 R T O S啟 動 應 用 程 序1234567硬 件初 始 化R T O S初 始 化軟 件初 始 化最小啟動代碼 B S PR T O S應 用程 序嵌入式系統(tǒng)的初始化過程 復位向量最小硬件初始化其余硬件初始化123最小啟動代碼 BSP硬件初始化階段 復位向量 ENTRY b ResetHandler 。for reserved interrupt,stop her
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1