基于S3C44BOX用中斷方式在μC/OS-Ⅱ上實現(xiàn)多任務(wù)通信
應(yīng)用主程序是用C編寫,通過S3C44BOX的初始化程序中Bmain語句跳轉(zhuǎn)進入的,首先對串口的端口、波特率、數(shù)據(jù)位等進行初始化,然后設(shè)定串口中斷調(diào)用函數(shù)的地址,該地址和下面串口中斷源的地址一致,然后通過對中斷寄存器的設(shè)置打開串口中斷,這時才開始啟動任務(wù),在任務(wù)中完成對串口數(shù)據(jù)的處理。在主程序中程序流程見圖2。
圖2 應(yīng)用主程序流程圖
在編寫與S3C44BOX硬件有關(guān)的初始化程序時主要是對S3C44BOX內(nèi)部各寄存器進行初始化,S3C44BOX有七種異常中斷向量,地址為0x00— 0x1c(其中0x14地址保留),這些是硬件固化了的地址,不能用軟件隨意改變,只能根據(jù)各異常中斷向量地址編寫中斷入口點,在入口地址處放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序。當內(nèi)部或外部中斷產(chǎn)生時,程序會跳轉(zhuǎn)到相對應(yīng)的異常中斷向量地址處,在應(yīng)用主程序的初始化過程中已通過S3C44BOX內(nèi)部寄存器INTMOD將串口中斷設(shè)置為IRQ中斷模式,所以在該部分程序中,當串口中斷產(chǎn)生時,會跳轉(zhuǎn)到IRQ異常中斷向量地址處,根據(jù)跳轉(zhuǎn)語句進入到對應(yīng)的 IRQ異常處理程序中。因為IRQ有30個中斷源,所以在該處理程序中要判斷中斷源的類型,判斷是串口中斷后就跳轉(zhuǎn)到位于操作系統(tǒng)中的串口中斷處理調(diào)用程序中去。其中每個中斷源的物理地址(起始地址加上矢量地址)是在數(shù)據(jù)段中定義的,起始地址則是根據(jù)硬件結(jié)構(gòu)在option.a文件中設(shè)置,為 0x0c7fff00。
評論