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

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

是bug嗎,OS_EXIT_CRITICAL()被ADS錯誤編譯成兩條語句

作者:碧水長天 欄目:ARM技術(shù)
是bug嗎,OS_EXIT_CRITICAL()被ADS錯誤編譯成兩條語句
本來,OS_EXIT_CRITICAL()應(yīng)被編譯成一條 BL ARMEnableInt語句,但是在OSSchedLock函數(shù)中卻不是這樣的,請看如下的反匯編代碼:



void OSSchedLock(void)
{
[0xe92d401]  stmfd   r13!,{r4,r14}
  if (OSRunning ==TRUE){
[0xe59f4490]  ldr  r4,0x0c001874
[0xe5d40006]  ldrb r0,[r4,#6]
[0xe3500001]  cmp  r0,#1
[0x1a000007]  bne  0xc00140c
  OS_ENTER_CRITICAL();
[0xeb000faa]  bl ARMDisableInt
  if(OSLockNesting < 255){
[0xe5d40002]  ldrb  r0,[r4,#2]
[0xe35000ff]  cmp   r0,#0xff
[0x2a000001]  bcs   0xc001404   ;(OSSchedLock + 0x2c)
  OSLockNesting ++;
[0xe2800001]  add  r0,r0,#1
[0xe5c40002]  strb r0,[r4,#2]

  OS_EXIT_CRITICAL();         ;請看這里!!!!!!!!!!!
[0xe8bd4010] ldmfd   r13!,{r4,r14}   ;竟然不是bl  ARMEnableInt!!!
[0xea000fa8] b       ARMEnableInt    ;
  }
}
[0xe8bd8010] ldmfd  r13!{r4,pc}      ;OSSchedLock函數(shù)返回

編譯器將此處的OS_EXIT_CRITICAL()函數(shù)編譯成了兩條匯編語句,而我在調(diào)試時,其他的恢復(fù)cpsr是的 OS_EXIT_CRITICAL()函數(shù)只匯編成一條
  bl ARMEnableInt指令(這個是符合程序的正常狀態(tài)的)

正是此處的 ldmfd    r13!,{r4,r14}指令使得r13被改變(但觀察時發(fā)現(xiàn)r13從調(diào)用前的0x0x500ff8竟變成了0x0c501000!),因此cpsr恢復(fù)錯誤,導(dǎo)致ARM的工作模式從SVC意外變成了USR態(tài),使得程序出現(xiàn)異常。


有高手能解釋一下這個現(xiàn)象么,謝謝。




2樓: >>參與討論
深思
這是 ADS 優(yōu)化的結(jié)果,你修改優(yōu)化級別即可。
DEBUG/OPTION 中,選擇BEST DEBUG。。。
ADS 的C編譯器文檔中有說明的,CPSR不能修改,所以編譯器就給優(yōu)化了,最好的解決辦法是用SWI,

3樓: >>參與討論
碧水長天
非常感謝深思大俠
我裝的D版ADS沒有幫助文檔,這個問題困擾我兩天了,再次感謝你的指點,祝你工作順利!

4樓: >>參與討論
深思
自己到 ADS 安裝目錄下找,有的,只是ADS找不到而已,呵呵
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
是否有能夠跑嵌入式WINXP的主板
讓ucos在vc下運行起來!希望大家支持我的自由軟件項目
哪位大俠幫我解釋一下這條程序
Cirrus Logic的贈送ARM開發(fā)板是不是假的啊
低價轉(zhuǎn)讓一套M9328MX21ADS Features的開發(fā)板!
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號