


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式操作系統(tǒng)內(nèi)核原理和開發(fā)(中斷)在我個人看來,中斷是 cpu最重要的特色。從某種意義上來說,沒有中斷就沒有嵌入式操作系統(tǒng)。一旦你明白了中斷的真正含義,你對操作系統(tǒng)的了解就算真正入門了。什么是中斷呢?我們可以看看單片機下面是怎么做的。1#include <REG51.h>2sbit LED = P1 人 6;3unsigned int led_enable = 0;4void Delay(unsignedint a)56unsignedint i;7while (a)S9a -;10for (i = 0; i < 1200; i+);111213void led_switc
2、h(void ) interrupt 0using 11415if (0 = led_enable)1617led_enable = 1;1S19else衛(wèi)21led_enable = 0;23EX0 = 1;void main( void )苫27EA = 1;袈EX0 = 1;29while (1)30if (led_enable)3132LED = 0;33Delay(100);峯LED = 1;35Delay(100);363738 上面的代碼是一段真實的 51單片機代碼。它完成的功能很簡單,就是對led燈進行點亮 處理。怎么解釋呢?在單片機上電后,我們發(fā)現(xiàn)一開始led二極管沒有發(fā)生閃
3、爍。在我們單擊按鍵之后,led開始出現(xiàn)間隙性閃爍的現(xiàn)象,之后再一次單擊按鍵,又可以發(fā)現(xiàn)led的閃爍現(xiàn)象消失了。為什么會出現(xiàn)這種現(xiàn)象?主要是因為我們單擊按鍵的時候,在單片機的引腳處產(chǎn)生了中斷。查看到中斷的單片機此時就會跳轉(zhuǎn)到中斷向量表里面查找中斷處理函數(shù)。這里的按鍵中斷處理函數(shù)就是led_switch。處理完led_switch之后,單片機又會回到原來的main函數(shù)繼續(xù)執(zhí)行,所以整個中斷的過程就像沒有發(fā)生過一樣。因為在led_switch中我們對led_enable進行了處理,所以就出現(xiàn)了我們在前面說過的各種現(xiàn)象。說到這,也許有的朋友會說,cpu的這種中斷屬性怎么才能在pc上面仿真出來呢?其實很
4、簡單。linux系統(tǒng)本身就有一個優(yōu)秀的特性,那就是信號。只要我們設(shè)定相應的信號和 處理函數(shù),那么linux系統(tǒng)就會在系統(tǒng)調(diào)度返回之前調(diào)用相應的信號函數(shù)來處理。整個信號 處理的過程和中斷是一模一樣的。因為在處理中斷的時候,我們需要對cpu的現(xiàn)場進行保存和恢復處理,而信號的處理也是一樣。 在信號處理前,系統(tǒng)肯定是處于內(nèi)核態(tài), 那么linux 系統(tǒng)肯定已經(jīng)為我們做好了現(xiàn)場的保護工作,處理完信號之后,系統(tǒng)本身又會恢復到原來的用戶態(tài),繼續(xù)執(zhí)行下面的代碼。所以linux自身也會默認對原來的場景進行恢復處理,就好象中斷返回一樣。39 #include <stdio.h>#include <
5、time.h>4| #include <sys/time.h>二.#include <stdlib.h>43 #include <signal.h>-!-! static int count = 0;-f: static struct itimerval oldtv; 筋 void set_timer()-思 struct itimerval itv;4?50515253 setitimer(ITIMER_REAL, &itv, & oldtv);55 void signal_handler( int m):亍count +;5&
6、;printf("%dn" , count);-1 int main()念signal(SIGALRM, signal_handler);(Sset_timer();6'while (count< 10000);住exit(0);迫return 1;(gdb) bt#0 signal_handler(m=14) at code.c: 23#1 <signal handler caller>#2 main() at code.c:32#include <stdio.h>#include <stdlib.h>#include &
7、lt;signal.h>#include <tchar.h>#include <Windows.h>void SignalHandler( int signal);printf( "Application over.n""J int main()< :i:-:typedef void (*SignalHandlerPointer)(int );齊 SignalHandlerPointer previousHandler;previousHandler = signal(SIGINT, SignalHandler);迫 while (1)囲Sleep(0);-如 exit(1);91 下面,我們首先編譯這一段代碼。接著在程序run之后,我們可以在 SignalHandler之處設(shè)置一個斷點。一切就緒完畢,再按下ctrl+c之后,系統(tǒng)就會在SignalHandler之處斷住。 此時單擊【Debug】->【Threads】,就可以看到這個情況。相信看到這里,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 動態(tài)預算管理的實施方案計劃
- 秘書工作人員培訓計劃
- 第4周第1課時變速跑直快、彎慢 教學設(shè)計-九年級體育與健康
- 農(nóng)產(chǎn)品加工品牌的創(chuàng)新策略計劃
- 加強社區(qū)法律知識普及計劃
- 《貴州織金興發(fā)煤業(yè)有限公司織金縣珠藏鎮(zhèn)興發(fā)煤礦(變更)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 血虛中醫(yī)護理方法
- 緩解臨床護理壓力
- 九年級化學下冊 第7章 應用廣泛的酸、堿、鹽 第2節(jié) 常見的酸和堿教學實錄 (新版)滬教版
- 第六單元寫作《有創(chuàng)意地表達》教學設(shè)計-2023-2024學年統(tǒng)編版語文九年級下冊
- 車刀角度的選擇講解
- 醫(yī)院醫(yī)務人員聘用簡單合同范本
- 企業(yè)政府溝通與合作制度
- 2024年江西省中考地理試題(原卷版+解析版)
- CHT 1024-2011 影像控制測量成果質(zhì)量檢驗技術(shù)規(guī)程(正式版)
- 新概念英語第二冊-Lesson18-同步習題含答案
- 2024年3月江蘇海洋大學招考聘用專職輔導員和工作人員5人筆試參考題庫附帶答案詳解
- 東來順牛羊肉培訓
- 中考百日誓師大會-百日沖刺決戰(zhàn)中考-2024年中考百日誓師大會(課件)
- 非線粒體氧化體系講解課件
- 初中八年級語文課件-桃花源記 全國公開課一等獎
評論
0/150
提交評論