音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

淺談在uC/OCii中用C代替匯編寫中斷程序。

作者:masm311 欄目:嵌入式系統(tǒng)
淺談在uC/OCii中用C代替匯編寫中斷程序。
按照作者的要求,中斷程序要用匯編寫,其過程書里有介紹,舉例如:
匯編:  
   保存全部CPU寄存器;
   調(diào)用OSIntEner();
   清中斷源;
   重新開中斷;
   .........
   用戶代碼
   系統(tǒng)服務(wù),如發(fā)送事件標(biāo)志(也可以是信號(hào)量、郵箱等,本人實(shí)驗(yàn)的是事件標(biāo)志)
   .........
   調(diào)用OSIntExit();
   恢復(fù)所有CPU積存器;
   執(zhí)行中斷返回指令;

因?yàn)橐脜R編寫,所以本人感覺特麻煩,所以用C寫了個(gè)程序,如下:
C:
   .........
   用戶代碼
   系統(tǒng)服務(wù),如發(fā)送事件標(biāo)志(也可以是信號(hào)量、郵箱等,本人實(shí)驗(yàn)的是事件標(biāo)志)
   .........
缺點(diǎn):
   原來的程序在中斷服務(wù)完成后,立即任務(wù)切換,而用C寫的程序需要等到下個(gè)時(shí)鐘節(jié)拍到來時(shí)才做任務(wù)切換,所以事件響應(yīng)時(shí)間晚了大約不到一個(gè)時(shí)鐘節(jié)拍。
優(yōu)點(diǎn):
   程序編寫時(shí)方便很多,尤其是對(duì)熟悉C而不太熟練匯編的人來說,可以加快編寫程序速度。
    總的來說,本人在理論上還沒想到用C編寫中斷程序的隱患,實(shí)踐中暫時(shí)也沒發(fā)現(xiàn)問題。對(duì)于時(shí)間響應(yīng)不是很嚴(yán)的系統(tǒng),可以考慮使用,只是事件響應(yīng)推遲了一個(gè)時(shí)鐘節(jié)拍,一般來說是幾十ms。而作者的原意是響應(yīng)時(shí)間在uS或十uS級(jí)的,顯然對(duì)于很多系統(tǒng)是用不上的。
   在uC/OSii中用C寫中斷程序要注意:
   1、中斷程序中不能開中斷
   2、中斷程序用不能調(diào)用涉及到任務(wù)切換的系統(tǒng)服務(wù)函數(shù)
   3、中斷服務(wù)程序盡量短
初涉RTOS,水平有限,歡迎拍磚!
     


2樓: >>參與討論
ketp
不一定要用匯編
看看ZLG的移植,在ADS下可以直接用c寫。

3樓: >>參與討論
masm311
自己拍自己!
這種做法得不償失,只是偷了一點(diǎn)懶而已,但時(shí)間響應(yīng)時(shí)間卻推遲了
正確打法應(yīng)該是:
匯編:  
   保存全部CPU寄存器;
   調(diào)用OSIntEner();
   清中斷源;
   重新開中斷;
   .........
   調(diào)用C函數(shù)
   .........
   調(diào)用OSIntExit();
   恢復(fù)所有CPU積存器;
   執(zhí)行中斷返回指令;
C: 中斷服務(wù)函數(shù)
---------------------------------
ZLG的移植我還沒時(shí)間看,我猜測(cè)他的中斷服務(wù)程序也不可能全是C語言寫的,應(yīng)該是約定一個(gè)C函數(shù)名,此函數(shù)被匯編調(diào)用。
因?yàn)榧偃缛肅寫的,剛進(jìn)中斷時(shí),如何知道編譯器進(jìn)棧了哪些積存器?不知道這個(gè)在任務(wù)切換時(shí)就不知道如何出棧。難道PHLIPS的C中斷里保存全部的積存器?我想這是不可能的


4樓: >>參與討論
masm311
另一點(diǎn)體會(huì),對(duì)于RAM緊張的系統(tǒng)!
在中斷服務(wù)程序里不要開中斷,因?yàn)橹袛嗲短滋M(fèi)RAM了。還是把中斷服務(wù)程序?qū)懙谋M量短,一般最多幾百應(yīng)該夠了,這樣對(duì)其他中斷響應(yīng)最多不過1MS,對(duì)于大多數(shù)的系統(tǒng)足夠用了。
這樣對(duì)緩解RAM資源還是有很的幫助的。
還是那句話,歡迎拍磚!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
s3c44bo 集體做板,共同研究
請(qǐng)教一個(gè)關(guān)于double存儲(chǔ)方式的問題
我想用單面板做個(gè)s3c4510的最小系統(tǒng),可能否?
求助:有關(guān)時(shí)鐘
這句c語言怎么理解
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)