




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PS死機案例系統(tǒng)死機的典型案例取數(shù)據(jù)異常所有中斷均失效只有ARM核運行棧溢出,界外數(shù)據(jù)被破壞數(shù)據(jù)越界訪問中斷被誤打開,并沒有清除中斷不能等到寄存器置位或者清零函數(shù)重入問題函數(shù)聲明和實現(xiàn)的接口不統(tǒng)一雙處理器的同步問題取數(shù)據(jù)異常非法指令FunctionA(){…}FunctionB(){Struct*pStr=(Struct*)m_malloc(sizeof(Struct));pStr->pC=A;….m_free(pStr);//不小心free了pStr,這時候pStr指向的數(shù)據(jù)塊已經(jīng)被其他數(shù)據(jù)所填充….
pStr->pC;//調(diào)用A,但實際跳轉(zhuǎn)到其他地址,可能進入指令預(yù)取異常中斷,或者未定義指令異常中斷,或者程序跑飛(最麻煩的)}所有中斷均失效在607平臺老的Framework上,有兩個現(xiàn)象在第一幅開機動畫處死機反復(fù)播放前一段開機鈴聲任何按鍵沒有反應(yīng)系統(tǒng)無任何中斷產(chǎn)生,Melody部僅反復(fù)播放最開始送入的Midi數(shù)據(jù),對用戶來說是“死機”,實際是ARM核在bloop()中執(zhí)行有限的幾行代碼。棧溢出,界外數(shù)據(jù)被破壞//#defineSMS_NUM10//UTXXXSMSnumber#defineSMS_NUM50//UTXXXSMSnumber….FunctionA{SMSLogsms[SMS_NUM];//僅僅修改宏定義是不夠的,必須察看與之有關(guān)的所有代碼….memset((void*)sms,0xFF,SMS_NUM*SMS_SiZE);//棧后面可能有其他全局量,被“無辜”的賦為0xFF….}數(shù)據(jù)越界訪問FunctionA{….m=m_malloc(size);…m++;//不小心++,可能是其他方式導(dǎo)致其++…memset((void*)m,0,size);//堆中的數(shù)據(jù)被“無辜”破壞}數(shù)據(jù)越界訪問可以看到,緊挨在m后面的數(shù)據(jù)被無辜的破壞,導(dǎo)致系統(tǒng)在其他狀態(tài)下“死機”。所有的賦值語句都要慎重,特別是對某一地址指向的一段數(shù)據(jù)進行賦值的時候要特別小心。中斷被誤打開,且沒有清除中斷如果不需要該時鐘,那么就要把時鐘控制寄存器設(shè)置為禁止使能所有中斷是危險的,必須使能那些需要使能的中斷U32irqs=ReadIntEnableReg();…
WriteIntEnableReg(irqs);使得該時鐘中斷頻繁進入,幾乎完全占用了CPU的MIPS,其他程序沒有機會執(zhí)行,從而表現(xiàn)出“死機”不能等到寄存器置位或者清零FunctionA{while(1){if((U8)(*BBIO_XXXX_XXXX)==0x01)break;//如果等不到這么辦}}函數(shù)重入的問題FunctionA{….*BBIO_XXXX_XXXX|=0x08;//打開AD采樣電路while(*BBIO_YYYY_YYYY==0x0b);//采樣完成vol=*BBIO_ZZZZ_ZZZZ;//得到電壓
*BBIO_XXXX_XXXX&=0xF7;//關(guān)閉AD采樣電路}如果函數(shù)c在調(diào)用A時,正在等待采樣完成,被中斷打斷,函數(shù)D調(diào)用了A,完成采樣之后,把采樣電路關(guān)閉了,這樣函數(shù)c就永遠無法從A出來了。函數(shù)重入的問題可以在函數(shù)內(nèi)部增加調(diào)試代碼,來找到重入的證據(jù)也可以在系統(tǒng)級別避免類似函數(shù)的重入問題(避免中斷調(diào)用此函數(shù))如果無法避免重入,那只好關(guān)中斷了函數(shù)聲明和實現(xiàn)的接口不統(tǒng)一XXX.hS8A(U8a,LP_U8b,LP_U16c);YYY.hU8A(U8a,LP_U8b,LP_U16c,U16d);XXX.cS8A(U8a,LP_U8b,LP_U16c){…}“死機”預(yù)防(最重要)絕大部分的“死機”可以通過仔細的設(shè)計和編碼預(yù)防主動設(shè)置“陷阱”,主動增加調(diào)試代碼,在任何程序不該進入的地方設(shè)置“陷阱”來“捕獲”它,一旦捕獲有更多的信息來分析(使用StackInsight工具)在一些看起來沒有任何問題的地方也要設(shè)置“陷阱”(數(shù)據(jù)越界訪問和棧溢出等導(dǎo)致看起來沒有問題的地方也容易無辜牽連,這也是“死機”分析的突破口)“死機”預(yù)防系統(tǒng)軟件正常運行圖系統(tǒng)軟件異常運行圖“死機”預(yù)防主動設(shè)置“陷阱”后的圖陷阱“陷阱”就是中止程序正常運行的代碼。最常用的就是ASSERT(0);或者軟件中斷或者reset系統(tǒng)(release)“死機”的“亡羊補牢”“陷阱”處讓系統(tǒng)resetWatchdog“偷偷”地reset#ifdef_DEBUG#defineASSERT(x)DebugAssert(….)#else#defineASSERT(x)(if(FALSE==(U32)x)reset_req())#endif提高“死機”分析的能力扎實的基本功(C,匯編,硬件知識,各種儀器使用等)對系統(tǒng)的充
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年八年級中考一模生物試題(含答案)
- 2025年輔警招聘考試綜合提升試卷及答案詳解(網(wǎng)校專用)
- (2025)輔警招聘考試試題庫及答案詳解參考
- 2025年中考沖刺模擬地理(重慶卷)(考試版)
- 2022年2月青海省稅務(wù)系統(tǒng)遴選面試真題附解析
- 2022年2月銅陵市稅務(wù)系統(tǒng)遴選面試真題帶題目詳解
- 2025年行政執(zhí)法基礎(chǔ)知識綜合練習(xí)題完整參考答案詳解
- 2024年甘肅陜煤集團韓城煤礦招聘真題附答案詳解(考試直接用)
- 2024年甘肅陜煤集團韓城煤礦招聘筆試真題含答案詳解(考試直接用)
- 2025年皖北煤電集團總醫(yī)院招聘24人筆試備考題庫有答案詳解
- 2025中考數(shù)學(xué)復(fù)習(xí)專題:八類最值問題匯-總(瓜豆隱圓胡不歸阿氏圓將軍飲馬逆等線費馬點構(gòu)造二次函數(shù)求最值)(原卷版)
- 農(nóng)村煤改電工程施工設(shè)計方案
- 2025年鄭州鐵路局招聘筆試參考題庫含答案解析
- 公司駕駛員安全培訓(xùn)內(nèi)容
- 安全生產(chǎn)應(yīng)急培訓(xùn)課程
- 2024年大型主題公園設(shè)計與施工合同
- 《基督教概論》課件
- 污水處理廠安全生產(chǎn)培訓(xùn)
- 婦科藥品管理
- 【MOOC】電路分析基礎(chǔ)-北京科技大學(xué) 中國大學(xué)慕課MOOC答案
評論
0/150
提交評論