精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

寫中斷程序要注意哪些方面?

開發(fā)
當中央處理器正在處理內部數(shù)據(jù)時,外界發(fā)生了緊急情況,要求CPU暫停當前的工作轉去處理這個緊急事件。處理完畢后,再回到原來被中斷的地址,繼續(xù)原來的工作,這樣的過程稱為中斷。

[[374914]]

 與每類I/O設備相關的進程都有一個靠近內存底部的地址,稱作中斷向量。它包括中斷服務程序的入口地址。

當中央處理器正在處理內部數(shù)據(jù)時,外界發(fā)生了緊急情況,要求CPU暫停當前的工作轉去處理這個緊急事件。處理完畢后,再回到原來被中斷的地址,繼續(xù)原來的工作,這樣的過程稱為中斷。

中斷處理過程:

(1)保護被中斷進程現(xiàn)場。為了在中斷處理結束后能夠使進程準確地返回到中斷點,系統(tǒng)必須保存當前處理機程序狀態(tài)字PSW和程序計數(shù)器PC等的值。

(2)分析中斷原因,轉去執(zhí)行相應的中斷處理程序。在多個中斷請求同時發(fā)生時,處理優(yōu)先級最高的中斷源發(fā)出的中斷請求。

(3)恢復被中斷進程的現(xiàn)場,CPU繼續(xù)執(zhí)行原來被中斷的進程。

三個大注意事項

1、中斷函數(shù)代碼應盡量簡潔。一般不宜在中斷函數(shù)內編寫大量復雜冗長的代碼;應盡量避免在中斷函數(shù)內調用其他自定義函數(shù);

2、盡量避免在中斷內調用數(shù)學函數(shù)。因為某些數(shù)學函數(shù)涉及相關的庫函數(shù)調用和中間變量較多,可能出現(xiàn)交叉調用。在必須使用數(shù)學函數(shù)時,可考慮將復雜的數(shù)學函數(shù)運算任務交給主程序完成,中斷函數(shù)通過全局變量引用其結果;

3、宏的定義與調用。在中斷函數(shù)中調用宏,可減少在函數(shù)調用中壓棧與出棧的開銷。

九個小注意事項

1、中斷函數(shù)不能進行參數(shù)傳遞

2、中斷函數(shù)沒有返回值

3、在任何情況下都不能直接調用中斷函數(shù)

4、中斷函數(shù)使用浮點運算要保存浮點寄存器的狀態(tài)。

5、如果在中斷函數(shù)中調用了其它函數(shù),則被調用函數(shù)所使用的寄存器必須與中斷函數(shù)相同,被調函數(shù)最好設置為可重入的。

6、(可忽略)C51編譯器對中斷函數(shù)編譯時會自動在程序開始和結束處加上相應的內容,具體如下:

在程序開始處對ACC、B、DPH、DPL和PSW入棧,結束時出棧。

中斷函數(shù)未加using n修飾符的,開始時還要將R0~R1入棧,結束時出棧。

如中斷函數(shù)加using n修飾符,則在開始將PSW入棧后還要修改PSW中的工作寄存器組選擇位。

C51編譯器從絕對地址8m 3處產生一個中斷向量,其中m為中斷號,也即interrupt后面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉。

7、中斷函數(shù)最好寫在文件的尾部,并且禁止使用extern存儲類型說明。防止其它程序調用。

8、在設計中斷時,要注意的是哪些功能應該放在中斷程序中,哪些功能應該放在主程序中。一般來說中斷服務程序應該做最少量的工作,這樣做有很多好處。

首先系統(tǒng)對中斷的反應面更寬了,有些系統(tǒng)如果丟失中斷或對中斷反應太慢將產生十分嚴重的后果,這時有充足的時間等待中斷是十分重要的。

其次它可使中斷服務程序的結構簡單,不容易出錯。中斷程序中放入的東西越多,他們之間越容易起沖突。簡化中斷服務程序意味著軟件中將有更多的代碼段,但可把這些都放入主程序中。

9、中斷服務程序的設計對系統(tǒng)的成敗有至關重要的作用,要仔細考慮各中斷之間的關系和每個中斷執(zhí)行的時間,特別要注意那些對同一個數(shù)據(jù)進行操作的中斷

舉例說明

中斷是嵌入式系統(tǒng)中重要的組成部分,這導致了很多編譯開發(fā)商提供一種擴展—讓標準C支持中斷。具代表事實是,產生了一個新的關鍵字 __interrupt。下面的代碼就使用了__interrupt關鍵字去定義了一個中斷服務子程序(ISR),請評論一下這段代碼的。

 

  1. __interrupt double compute_area (double radius)  
  2.     double area = PI * radius * radius; 
  3.     printf("\nArea = %f", area); 
  4.     return area; 

這個函數(shù)有太多的錯誤了:

1) ISR 不能返回一個值。如果你不懂這個,那么你不會被雇用的。

2) ISR 不能傳遞參數(shù)。如果你沒有看到這一點,你被雇用的機會等同第一項。

3) 在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的寄存器入棧,有些處理器/編譯器就是不允許在ISR中做浮點運算。此外,ISR應該是短而有效率的,在ISR中做浮點運算是不明智的。

4) 與第三點一脈相承,printf()經常有重入和性能上的問題。如果你丟掉了第三和第四點,我不會太為難你的。不用說,如果你能得到后兩點,那么你的被雇用前景越來越光明了。

解釋重入:

printf()經常有重入解釋

不可重入函數(shù)不可以在它還沒有返回就再次被調用。例如printf,malloc,free等都是不可重入函數(shù)。因為中斷可能在任何時候發(fā)生,例如在printf執(zhí)行過程中,因此不能在中斷處理函數(shù)里調用printf,否則printf將會被重入。

函數(shù)不可重入大多數(shù)是因為在函數(shù)中引用了全局變量。例如,printf會引用全局變量stdout,malloc,free會引用全局的內存分配表。

如果中斷發(fā)生的時候,當運行到printf的時候,假設發(fā)生了中斷嵌套,而此時stdout資源被占用,所以第二個中斷printf等待第一個中斷的stdout資源釋放,第一個中斷等待第二個中斷返回,造成了死鎖。

不可重入函數(shù)指的是該函數(shù)在被調用還沒有結束以前,再次被調用可能會產生錯誤。可重入函數(shù)不存在這樣的問題。

不可重入函數(shù)在實現(xiàn)時候通常使用了全局的資源,在多線程的環(huán)境下,如果沒有很好的處理數(shù)據(jù)保護和互斥訪問,就會發(fā)生錯誤。

常見的不可重入函數(shù)有:

  1. printf --------引用全局變量stdout 
  2. malloc --------全局內存分配表 
  3. free    --------全局內存分配表 

在unix里面通常都有加上_r后綴的同名可重入函數(shù)版本。如果實在沒有,不妨在可預見的發(fā)生錯誤的地方嘗試加上保護鎖同步機制等等。

下面引用一段別人的解釋:

這主要在多任務環(huán)境中使用,一個可重入的函數(shù)簡單來說,就是:可以被中斷的函數(shù)。就是說,你可以在這個函數(shù)執(zhí)行的任何時候中斷他的運行,在OS的調度下去執(zhí)行另外一段代碼而不會出現(xiàn)什么錯誤。而不可重入的函數(shù)由于使用了一些系統(tǒng)資源,比如全局變量區(qū),中斷向量表等等,所以他如果被中斷的話,可能出現(xiàn)問題,所以這類函數(shù)是不能運行在多任務環(huán)境下的。

把一個不可重入函數(shù)變成可重入的唯一方法是用可重入規(guī)則來重寫他。

其實很簡單,只要遵守了幾條很容易理解的規(guī)則,那么寫出來的函數(shù)就是可重入的:

第一,不要使用全局變量。因為別的代碼很可能覆蓋這些變量值。

第二,在和硬件發(fā)生交互的時候,切記執(zhí)行類似disinterrupt()之類的操作,就是關閉硬件中斷。完成交互記得打開中斷,在有些系列上,這叫做“進入/退出核心”或者用OS_ENTER_KERNAL/OS_EXIT_KERNAL來描述。

第三,不能調用任何不可重入的函數(shù)。

第四,謹慎使用堆棧。最好先在使用前先OS_ENTER_KERNAL。

還有一些規(guī)則,都是很好理解的,總之,時刻記住一句話:保證中斷是安全的!

通俗的來講吧:由于中斷是可能隨時發(fā)生的,斷點位置也是無法預期的。所以必須保證每個函數(shù)都具有不被中斷發(fā)生,壓棧,轉向ISR,彈棧后繼續(xù)執(zhí)行影響的穩(wěn)定性。也就是說具有不會被中斷影響的能力。既然有這個要求,你提供和編寫的每個函數(shù)就不能拿公共的資源或者是變量來使用,因為該函數(shù)使用的同時,ISR(中斷服務程序)也可那會去修改或者是獲取這個資源,從而有可能使中斷返回之后,這部分公用的資源已經面目全非。

滿足下列條件的函數(shù)多數(shù)是不可重入的:

  1. (1)函數(shù)體內使用了靜態(tài)的數(shù)據(jù)結構; 
  2.  
  3. (2)函數(shù)體內調用了malloc()或者free()函數(shù); 
  4.  
  5. (3)函數(shù)體內調用了標準I/O函數(shù)。 

下面舉例加以說明。

可重入函數(shù)

  1. void strcpy(char* lpszDest, char* lpszSrc) 
  2.   while(*lpszDest++ = *lpszSrc++); 
  3.   *dest=0; 

非可重入函數(shù)1

  1. char cTemp; // 全局變量 
  2. void SwapChar1(char* lpcX, char* lpcY) 
  3.   cTemp = *lpcX;  
  4.   *lpcX = *lpcY;  
  5.   lpcY = cTemp; // 訪問了全局變量,在分享內存的多個線程中可能造成問題 

非可重入函數(shù)2

  1. void SwapChar2(char* lpcX, char* lpcY) 
  2.   static char cTemp; // 靜態(tài)局部變量 
  3.   cTemp = *lpcX;  
  4.   *lpcX = *lpcY;  
  5.   lpcY = cTemp; // 使用了靜態(tài)局部變量,在分享內存的多個線程中可能造成問題 

如何寫出可重入的函數(shù)?在函數(shù)體內不訪問那些全局變量,不使用靜態(tài)局部變量,堅持只使用局部變量,寫出的函數(shù)就將是可重入的。如果必須訪問全局變量,記住利用互斥信號量來保護全局變量。

 

責任編輯:姜華 來源: 嵌入式Linux系統(tǒng)開發(fā)
相關推薦

2019-05-15 10:38:17

微服務架構監(jiān)控

2014-01-26 14:24:25

開源項目

2025-05-06 06:37:40

2011-04-29 12:54:00

筆記本

2013-03-20 10:57:04

2010-09-25 17:57:48

項目管理

2010-08-11 11:12:46

IT公司面試問題

2024-06-26 08:32:13

2020-11-26 15:30:05

VueReac前端

2015-09-16 13:19:11

2017-03-08 15:37:23

商用電腦初創(chuàng)企業(yè)

2011-06-28 15:06:09

ASP.NET網站優(yōu)化

2021-06-30 17:21:23

CPUMySQL性能

2013-10-16 09:42:53

虛擬桌面

2013-10-21 10:51:01

認證管理VDI部署

2009-10-27 20:53:15

企業(yè)網絡架構網絡規(guī)劃

2015-05-28 11:41:17

綜合布線系統(tǒng)

2009-08-10 15:56:35

802局域網網橋兼容性

2011-10-25 10:28:55

數(shù)據(jù)中心基礎架構服務器

2018-12-10 18:00:34

點贊
收藏

51CTO技術棧公眾號

午夜在线a亚洲v天堂网2018| 99re8这里有精品热视频免费| 国产午夜精品一区二区三区嫩草| 国产精品视频一区国模私拍 | 国产精品国模大尺度视频| 国产剧情日韩欧美| 男女免费视频网站| 精品国产一区二区三区噜噜噜 | 欧美色爱综合| 精品国产精品一区二区夜夜嗨| 男人天堂999| 中文字幕有码在线视频| 久久亚洲欧美国产精品乐播| 亚洲一区二区三区sesese| 日韩 国产 在线| 午夜影院欧美| 亚洲一级片在线看| 少妇极品熟妇人妻无码| 天堂久久午夜av| 五月婷婷另类国产| 一本久道久久综合| 韩国福利在线| 成人动漫视频在线| 91免费的视频在线播放| 亚洲大尺度在线观看| 欧美日韩一视频区二区| 中文字幕亚洲精品| 加勒比精品视频| 日韩在线亚洲| 欧美一区二区在线免费播放| 国产一区二区在线免费播放| 女厕盗摄一区二区三区| 亚洲一区二区高清| 欧洲xxxxx| 一广人看www在线观看免费视频| 99久久久国产精品免费蜜臀| 懂色av一区二区三区在线播放| 91 中文字幕| 日本少妇一区二区| 欧美专区中文字幕| 日韩免费一级片| 在线观看视频免费一区二区三区| 精品中文字幕视频| 侵犯稚嫩小箩莉h文系列小说| 禁断一区二区三区在线| 国产午夜精品麻豆| 自拍视频一区二区| 韩国女主播一区二区三区| 日韩免费一区二区三区在线播放| 久久成年人网站| 欧美a一级片| 欧美日韩国产经典色站一区二区三区 | 高清日韩av电影| 久久综合中文字幕| 久久涩涩网站| 韩国三级在线观看久| 久久欧美中文字幕| 免费成人深夜夜行视频| 欧美婷婷久久五月精品三区| 久久久精品人体av艺术| 日本一区二区在线视频| 国产中文字幕在线视频| 国产午夜精品一区二区| 亚洲欧洲三级| 精品麻豆一区二区三区| 亚洲欧美电影院| 日韩视频 中文字幕| 91禁在线看| 色国产综合视频| 亚欧美在线观看| 白嫩亚洲一区二区三区| 日韩女优av电影| 少妇户外露出[11p]| 欧美欧美黄在线二区| 在线观看欧美视频| 五月天激情丁香| 精品91视频| 欧美一性一乱一交一视频| 国产精品suv一区| 老司机午夜精品99久久| 91九色在线观看| 婷婷色在线观看| 欧美激情一区二区三区在线| 日本三级中文字幕在线观看| 99re6在线精品视频免费播放| 福利视频导航一区| 色戒在线免费观看| 成人精品毛片| 中文字幕亚洲图片| 久久精品波多野结衣| 国产精品日韩久久久| 国产精品日日摸夜夜添夜夜av| 国产视频一区二区三区四区五区| 成人性生交大片免费看视频在线| 免费一区二区三区| 毛片免费不卡| 欧美性xxxx极品hd满灌| 国产成年人视频网站| 波多野结衣在线一区二区| 亚洲无线码在线一区观看| 91视频综合网| 日韩影院在线观看| 国产精品.com| 色网站免费在线观看| 亚洲成av人综合在线观看| 亚洲黄色小视频在线观看| 亚洲国产欧美在线观看| 在线播放精品一区二区三区| 久久久久久久久久久网| 青青国产91久久久久久| 古典武侠综合av第一页| 日本在线视频观看| 粉嫩老牛aⅴ一区二区三区 | 精品成人18| 亚洲性69xxxbbb| 日韩美女黄色片| 国产一区二区三区综合| 日本a级片久久久| av漫画网站在线观看| 6080午夜不卡| 欧美福利在线视频| 日韩专区欧美专区| 久久精品中文字幕一区二区三区| 高清免费电影在线观看| 欧洲中文字幕精品| 亚洲专区区免费| 悠悠资源网久久精品| 亚洲aa中文字幕| 免费观看成人高潮| 在线观看网站黄不卡| 久久久久久九九九九九| 亚洲精品影院在线观看| 97人人模人人爽人人少妇| 欧美极品另类| 欧美三区在线视频| 黄免费在线观看| 欧美亚洲专区| 欧美激情视频一区二区三区| 超碰在线公开| 日韩电影网在线| 国产午夜福利精品| 成人动漫视频在线| 欧美精品久久久久久久自慰| 深夜激情久久| 欧美国产亚洲视频| 草逼视频免费看| 一区二区三区在线观看动漫| www.51色.com| 亚洲乱码精品| 999在线观看免费大全电视剧| 国产精品扒开做爽爽爽的视频| 欧美精品亚洲一区二区在线播放| 久久精品在线观看视频| 麻豆精品视频在线观看免费| 亚洲在线视频一区二区| 91精品亚洲一区在线观看| 日韩日本欧美亚洲| av资源免费看| 亚洲午夜国产一区99re久久| 久久久高清视频| 国产欧美欧美| 日韩精品在在线一区二区中文| 日韩成人亚洲| 久久久国产成人精品| japanese国产| 五月激情六月综合| 欧美做受xxxxxⅹ性视频| 秋霞午夜av一区二区三区| 亚洲一区二区高清视频| 国产在线不卡一区二区三区| 欧美黑人一级爽快片淫片高清| 色呦呦中文字幕| 色视频一区二区| 亚洲女人久久久| 高清久久久久久| 动漫av网站免费观看| 欧美色女视频| av资源站久久亚洲| 欧美天堂视频| 久久久91精品国产| 欧美 日韩 国产 成人 在线| 欧美视频国产精品| 免费成人美女女在线观看| 国产成人免费视| av动漫在线观看| 国产精品久久久久一区二区三区厕所 | 欧美国产日韩中文字幕在线| 日本私人网站在线观看| 欧美精品视频www在线观看| 久久精品视频久久| 国产女主播视频一区二区| 免费不卡av网站| 久久精品一区| 日韩一级片免费视频| 狠狠操综合网| 国产精品区一区| 欧美激情不卡| 欧美亚洲午夜视频在线观看| 麻豆网站在线免费观看| 亚洲欧美国产精品va在线观看| 96亚洲精品久久久蜜桃| 五月天欧美精品| 欧美性生交大片| 久久久久久麻豆| 国模无码视频一区| 国产一区在线精品| 国产精品人人妻人人爽人人牛| 欧美国产先锋| 亚洲激情一区二区| 中文有码一区| 国产伦精品一区二区三区视频免费 | 男人av资源站| 国产三区在线成人av| 亚洲一级av无码毛片精品| 激情欧美一区二区| 日韩免费高清在线| 亚洲精品一二| 免费超爽大片黄| 一区二区三区中文| 午夜精品一区二区三区四区| 欧美一级色片| 国产精品推荐精品| 秋霞影院一区| 91丝袜美腿美女视频网站| 日韩三级影视| 2021国产精品视频| 国产在线美女| 久久久久女教师免费一区| а天堂中文在线官网| 日韩中文字幕精品| 91福利在线视频| 在线观看成人黄色| 黄色电影免费在线看| 亚洲乱码国产乱码精品精| 天天干天天色天天| 亚洲福利在线观看| 日韩一区二区三区在线观看视频| 日韩视频免费观看高清完整版| 国产精品久久久久久久久毛片 | 大尺度做爰床戏呻吟舒畅| 国产精品99久| 日本女人黄色片| 国产福利一区在线观看| 男插女视频网站| 粉嫩久久99精品久久久久久夜| 少妇高潮一69aⅹ| 国产99久久久国产精品潘金| 中文在线字幕观看| 成人一区二区三区中文字幕| 蜜桃色一区二区三区| 成人午夜又粗又硬又大| 国产污在线观看| 久久亚洲精精品中文字幕早川悠里| 一二三不卡视频| 国产午夜精品福利| 国产欧美一区二区三区在线观看视频| 国产日本欧洲亚洲| 亚洲欧美日韩第一页| 17c精品麻豆一区二区免费| 日韩三级在线观看视频| 一区二区三区精品在线| 日韩 欧美 亚洲| 色综合久久天天| 伊人免费在线观看高清版| 欧美精品自拍偷拍动漫精品| 精品人妻一区二区三区麻豆91| 精品国产乱码久久久久久牛牛 | 中文字幕一区二区视频| 国精品无码一区二区三区| 亚洲一区国产视频| 中文字幕亚洲精品一区| 欧美日韩一区二区三区不卡| 国产精品视频一区二区三区,| 日韩亚洲欧美一区| 亚洲日本在线播放| 伊人久久久久久久久久久久久| 免费黄色在线网站| 97视频国产在线| 97人人做人人爽香蕉精品| 亚洲在线一区二区| 久久九九热re6这里有精品| 日韩精品另类天天更新| 久久久精品久久久久久96| 日本韩国欧美在线观看| 免费成人美女在线观看.| 欧美图片自拍偷拍| 久久久精品中文字幕麻豆发布| 91视频免费在线看| 欧美日韩一区免费| 国产又黄又大又爽| 日韩精品免费在线观看| 欧美一区二区三区| 51色欧美片视频在线观看| 日韩一级特黄| 免费看国产精品一二区视频| 91精品国偷自产在线电影| www.亚洲天堂网| 国产精品 欧美精品| 久久久久久久久久久久| 亚洲一线二线三线久久久| 在线播放成人av| 日韩福利视频在线观看| 国产成人l区| 国产成人精品最新| 91午夜精品| 中文字幕色一区二区| 国产亚洲综合精品| 天堂va欧美va亚洲va老司机| 国产精品无人区| 9i看片成人免费看片| 精品嫩草影院久久| 里番在线观看网站| 日韩av免费看| 久久免费视频66| 99热这里只有精品免费| 久久国产麻豆精品| 中国黄色a级片| 亚洲成av人片www| va婷婷在线免费观看| 色老头一区二区三区在线观看| 亚洲欧洲自拍| 久久久久久久久久久一区| 一区二区自拍| 久久久久国产免费| 一区二区三区四区在线免费观看 | 熟女视频一区二区三区| 热久久免费视频| 国产成人无码精品久久二区三| 性做久久久久久久免费看| www.热久久| 欧美美女18p| 亚洲一区二区免费在线观看| 日韩视频在线免费播放| 精久久久久久久久久久| 性猛交娇小69hd| 欧美性一区二区| 成人精品一区二区三区校园激情| 欧美亚洲激情在线| 日韩精品社区| 欧美 国产 日本| 久久久久久久久蜜桃| 亚洲天堂男人av| 国产亚洲视频在线观看| 亚洲精品555| 亚洲精品自在在线观看| 蜜臀va亚洲va欧美va天堂| 欧美a在线播放| 欧美乱熟臀69xxxxxx| 理论片午午伦夜理片在线播放| 91免费看片网站| 午夜精品久久久久99热蜜桃导演 | 亚洲爆乳无码一区二区三区| 久久99精品久久久久久青青91| 日韩高清在线观看一区二区| av日韩在线看| 91丝袜美腿高跟国产极品老师 | 欧美三级 欧美一级| 日韩视频免费观看高清完整版| 岛国毛片av在线| 久久精品美女| 快she精品国产999| 网爆门在线观看| 日韩一区二区免费电影| 欧美人与禽猛交乱配| 久久久久se| 日韩在线一二三区| 久久av红桃一区二区禁漫| 日韩一级免费观看| 草草视频在线| 视频一区亚洲| 国产剧情av麻豆香蕉精品| 国产精品9191| 在线观看日韩欧美| 亚洲精品国产九九九| 日韩激情免费视频| 国产精品国产三级国产普通话蜜臀| 精品女同一区二区三区| 欧美亚洲成人网| 天天射—综合中文网| 亚洲美女在线播放| 在线免费观看日本欧美| 综合久久2o19| 免费精品视频一区| 精品一区二区三区影院在线午夜| 国产精品99精品无码视| 在线播放国产精品| 盗摄系列偷拍视频精品tp| 999精品网站| 亚洲综合一二区| 福利小视频在线观看| caoporen国产精品| 日本sm残虐另类| 日干夜干天天干| 精品国产依人香蕉在线精品| 日韩av影院| 久久精品久久99| 欧美性xxxxxxxx| 激情黄产视频在线免费观看| 91制片厂免费观看| 国产亚洲午夜高清国产拍精品 |