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

正文內(nèi)容

嵌入式開發(fā)系統(tǒng)概況-資料下載頁

2024-10-11 18:37本頁面

【導(dǎo)讀】開發(fā)平臺硬件資源。嵌入式系統(tǒng)開發(fā)流程??梢跃毩暤膶嶒烅椖俊?)CPU:ARM7TDMI結(jié)構(gòu)芯片S3C44B0X,工作頻率。2)BIOS:2M,NORFLASH;3)內(nèi)存:8M,SDRAM;4)海量存儲器:16M,NANDFlash;5)鍵盤:17鍵數(shù)字小鍵盤;6)顯示:320×240、256色LCD,帶四線電阻式觸摸屏;7)USB接口:D12芯片,USB;10)CAN接口:波特率125Kb、250Kb、500Kb、1Mb;15)LED:8個,共陰,與鍵盤同由ZLG7289芯片驅(qū)動;17)擴展插槽:2個,提供系統(tǒng)總線以及空余資源接口;各自不同的應(yīng)用領(lǐng)域,加入適當?shù)耐鈬娐?,從而形成自己的ARM微處理器芯片進入市場。ARM7系列微處理器為低功耗的32位RISC處理器,最適合用于對。其中,ARM7TMDI是目前使。在達到設(shè)計要求的同時,盡可能地減小代碼量。D取至Debug,表示支持Debuging功能。M取至Multiplier,表示具備32bit硬件乘法器。第二種為Thumb狀態(tài),此時處理器執(zhí)行16位的、入該模式,可用于虛擬存儲及存儲保護。SamsungS3C44B0X微處理器是三星公司專為手持。8KBCache、外部存儲器控制器、LCD控制器、4個

  

【正文】 這個文件里面還需要實現(xiàn)幾個操作系統(tǒng)規(guī)定的 hook函數(shù),這些函數(shù)為用戶定義函數(shù),它將在相應(yīng)的操作系統(tǒng)調(diào)用后執(zhí)行由用戶定義的這些hook函數(shù),執(zhí)行特定的用戶操作,如果沒有特殊需求,則只需要簡單地將它們都實現(xiàn)為空函數(shù)就可以。這些函數(shù)包括: ? OSSTaskCreateHook( ) ? OSTaskDelHook( ) ? OSTaskSwHook( ) ? OSTaskStatHook( ) ? OSTimeTickHook( ) ? 中斷級任務(wù)切換函數(shù) ? 該函數(shù)由 OSIntExit()和 OSExIntExit()調(diào)用。它是在時鐘中斷服務(wù)例程中發(fā)現(xiàn)有高優(yōu)先級任務(wù)等待的時鐘信號到來,則需要在中斷退出后并不返回被中斷任務(wù),而是直接調(diào)度就緒的高優(yōu)先級任務(wù)執(zhí)行。這樣做的目的主要是能夠盡快地讓高優(yōu)先級的任務(wù)得到響應(yīng),保證系統(tǒng)的實時性能。 ? 該函數(shù)通過設(shè)置一個全局變量 need_to_swap_context標志以表示在中斷服務(wù)程序中進行任務(wù)切換,并在 OSTickISR()中判斷該變量以進行正確的動作。 ? 其函數(shù)如下: ? void OSIntCtxSw(void) ? { ? need_to_swap_context = 1。 ? } ? 181。C/OSⅡ 的移植實例要求用戶編寫四個簡單的匯編語言函數(shù): ? OSStartHighRdy() ? OSCtxSw() ? OSIntCtxSw() ? OSTickISR() OSStart( )調(diào)用本函數(shù) 。 OSStart( )負責使就緒狀態(tài)的任務(wù)開始運行 。 OSStartHighRdy( )負責獲取新任務(wù)的堆棧指針并從堆棧指針中恢復(fù)新任務(wù)的所有處理器寄存器。 OSStart( )調(diào)用本函數(shù) 。 OSStart( )負責使就緒狀態(tài)的任務(wù)開始運行 。 OSStartHighRdy( )負責獲取新任務(wù)的堆棧指針并從堆棧指針中恢復(fù)新任務(wù)的所有處理器寄存器。 OSIntExit( )調(diào)用本函數(shù) 。 OSIntExit由 OSTickISR調(diào)用,負責在定時中斷中任務(wù)之間的切換 。 OSIntCtxSw( )主要保存當前任務(wù)堆棧指針,并將新任務(wù)對應(yīng)的處理器寄存器從堆棧中恢復(fù)出來。 定時中斷函數(shù) 。 OSTickISR( )主要負責在進入時保存處理器寄存器,完成任務(wù)的切換,退出時恢復(fù)寄存器并返回。 OSStartHighRdy() ? 運行優(yōu)先級最高的就緒任務(wù) ? void OSStartHighRdy (void) { Call user definable OSTaskSwHook()。 Get the stack pointer of the task to resume: Stack pointer = OSTCBHighRdyOSTCBStkPtr。 //設(shè)置新的當前任務(wù)的地址 OSRunning = TRUE。 Restore all processor registers from the new task39。s stack。 Execute a return from interrupt instruction。 } OSCtxSw() ? 任務(wù)級的任務(wù)切換函數(shù) ? void OSCtxSw(void) { 保存處理器寄存器 。 將當前任務(wù)的堆棧指針保存到當前任務(wù)的 OS_TCB中 : OSTCBCurOSTCBStkPtr = Stack pointer。 調(diào)用用戶定義的 OSTaskSwHook()。 OSTCBCur = OSTCBHighRdy。 OSPrioCur = OSPrioHighRdy。 得到需要恢復(fù)的任務(wù)的堆棧指針 : Stack pointer = OSTCBHighRdyOSTCBStkPtr。 將所有處理器寄存器從新任務(wù)的堆棧中恢復(fù)出來 。 執(zhí)行中斷返回指令 。 } OSIntCtxSw() ? 中斷級的任務(wù)切換函數(shù) ? void OSIntCtxSw(void) { 調(diào)整堆棧指針去掉在調(diào)用 OSIntExit(), OSIntCtxSw()過程中壓入堆棧的多余內(nèi)容 。 將當前任務(wù)堆棧指針保存到當前任務(wù)的 OS_TCB中 : OSTCBCurOSTCBStkPtr = 堆棧指針 。 調(diào)用用戶定義的 OSTaskSwHook()。 OSTCBCur = OSTCBHighRdy。 OSPrioCur = OSPrioHighRdy。 得到需要恢復(fù)的任務(wù)的堆棧指針 : 堆棧指針 = OSTCBHighRdyOSTCBStkPtr。 將所有處理器寄存器從新任務(wù)的堆棧中恢復(fù)出來 。 執(zhí)行中斷返回指令 。 } OSTickISR() ? 時鐘節(jié)拍 ISR ? void OSTickISR(void) { 保存處理器寄存器 。 調(diào)用 OSIntEnter()或者直接將 OSIntNesting加 1。 調(diào)用 OSTimeTick()。 調(diào)用 OSIntExit()。 恢復(fù)處理器寄存器 。 執(zhí)行中斷返回指令 。 } 多任務(wù)應(yīng)用程序的編寫 ? C語言入口函數(shù) Main ? 調(diào)用函數(shù) ARMTargetInit初始化 ARM處理器 ? 調(diào)用 OSInit進行操作系統(tǒng)初始化 ? 調(diào)用 OSTaskCreate函數(shù)兩個任務(wù): TaskLED和 TaskSEG ? 調(diào)用 ARMTargetStart函數(shù)啟動時鐘節(jié)拍中斷 ? 調(diào)用 OSStart啟動系統(tǒng)任務(wù)調(diào)度 ? 任務(wù)處理函數(shù) ? void Main(void) ? { ? ARMTargetInit()。 // 硬件初始化 ? OSInit()。 // uC/OS初始化 ? OSTimeSet(0)。 // 系統(tǒng)時間設(shè)置 ? //創(chuàng)建主任務(wù) ? OSTaskCreate(TaskStart,(void*)0, amp。StackMain[STACKSIZE1], 0)。 ? OSStart()。 // 啟動操作系統(tǒng) ? }
點擊復(fù)制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1