|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | 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 |
UCOS-II 為什么不能產(chǎn)生軟中斷? |
| 作者:heyunj109 欄目:嵌入式系統(tǒng) |
我在SmartARM2200上建立了一個(gè),ucos2的工程,可是運(yùn)行到OS_ENTER_CRITICAL(); 產(chǎn)生軟中斷時(shí),就出現(xiàn) undefined 的錯(cuò)誤, 我找了兩天沒搞定,請(qǐng)高手指點(diǎn)問題可能出在那里? |
| 2樓: | >>參與討論 |
| 作者: lpf336 于 2006/12/26 12:42:00 發(fā)布:
移植的有問題吧 |
|
| 3樓: | >>參與討論 |
| 作者: heyunj109 于 2006/12/26 12:59:00 發(fā)布:
回移植的有問題吧!! 我用的是周立功提供的工程模板,和他光盤上帶的移植文件夾的內(nèi)容! |
|
| 4樓: | >>參與討論 |
| 作者: rockos 于 2006/12/26 14:31:00 發(fā)布:
都在胡說 樓主先搞清軟中斷和觸發(fā)機(jī)理和ucos的工作方式再思考這個(gè)問題就可以了。 |
|
| 5樓: | >>參與討論 |
| 作者: heyunj109 于 2006/12/26 15:52:00 發(fā)布:
找到答案 原來我在加載文件時(shí)用的是簡單加載! 應(yīng)該用分散加載, 為什么會(huì)產(chǎn)生unfine中斷呢? 原來是當(dāng)產(chǎn)生軟中斷時(shí),程序就會(huì)進(jìn)入異常,PC就指向0x00000000, 這個(gè)地址存放一條跳轉(zhuǎn)指令,跳的地址是是物理地址,根據(jù)BOOT[1:0]狀態(tài)來確定的.軟件不能改變.若設(shè)定是外部ram的話,根據(jù) Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0xb9205f80 LDR PC, [PC, #-0xff0] LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined SWI_Addr DCD SoftwareInterrupt PrefetchAddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler 知道:地址是0x80000008. 而在簡單加載時(shí),reset的地址不是0x80000000,所以會(huì)產(chǎn)生未定義中斷 |
|
| 6樓: | >>參與討論 |
| 作者: heyunj109 于 2006/12/26 16:22:00 發(fā)布:
?? 不知道我理解的對(duì)不對(duì)!! 還望高手指點(diǎn) |
|
| 7樓: | >>參與討論 |
| 作者: xieqin 于 2006/12/31 22:28:00 發(fā)布:
沒有描述清楚,不敢妄加評(píng)論 |
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |