嵌入式Linux之Kernel(裁減移植)啟動調(diào)試、打印技術(shù)printascii(補充)、內(nèi)核調(diào)試_第1頁
嵌入式Linux之Kernel(裁減移植)啟動調(diào)試、打印技術(shù)printascii(補充)、內(nèi)核調(diào)試_第2頁
嵌入式Linux之Kernel(裁減移植)啟動調(diào)試、打印技術(shù)printascii(補充)、內(nèi)核調(diào)試_第3頁
嵌入式Linux之Kernel(裁減移植)啟動調(diào)試、打印技術(shù)printascii(補充)、內(nèi)核調(diào)試_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、嵌入式系統(tǒng)搭建過程中,對于系統(tǒng)平臺搭建工程師在完成tla的調(diào)試之后就進(jìn)入ernel裁減移植的階段,其中最重要的一步是ernel啟動的調(diào)試,在調(diào)試ernel過程中通常遇到最常見的問題是啟動異常:ncompressingLinux掛死n在此處)otingthekernel.(注意:這里是arcartcpress的解壓過程,調(diào)用了ecpress_kernel同目錄下的iscc)incle/asm-arm/arc的ptn&實現(xiàn)pr這是在中初始化的,用的是物理地址,因為此時內(nèi)核還沒有起來。而printascii貝9是調(diào)用了匯編。printascii()位于arcarkernele他需要調(diào)用虛擬地址,此虛

2、擬地址通過現(xiàn),這下明白了。acine_star提供,而相關(guān)的宏在incleasarce實-macr添加:e里面需要判斷一下當(dāng)前是否打開了m然后指定ar啲基址。在解壓階段的ea.s是:映:射,目的是加快速度。到了內(nèi)核的ea,就是真正的了,此時就是虛擬地址了。導(dǎo)致驅(qū)動異常(啟動掛死)的原因有很多,如基于板的硬件做了修改(如更改了空間大小、地址和型號,更改了、空間大小、地址和型號,更改了晶振頻率等),板卡號不支持等。那么如何進(jìn)行調(diào)試那,其實有兩種調(diào)試技術(shù)比較有效。ernel啟動調(diào)試技術(shù)使用printascii()函數(shù)跟蹤start_kernel()有沒運行,在tintekernel之后ernel最先

3、執(zhí)行的是start_kernel()函數(shù),確認(rèn)start_kernel()有否執(zhí)行就是在其開始代碼段添加printascii(start_kernel),如果串口沒有打印出start_kernel,說明start_kernel()沒有運行,那么可能的原因有tla配置的啟動參數(shù)錯誤、ernel加載到()的地址不正確,ernel編譯時指定的()運行地址不正確等。這樣就需要一項一項排查錯誤,當(dāng)錯誤被排查完畢,通常打印出start_kernel是種必然,如果打印出這儀信息說明ernel已進(jìn)入到start_kernel()執(zhí)行,如果此時有串口啟動打印就比較成功了,如果仍然沒有打印啟動信息,就需要另外一種

4、調(diào)試技術(shù)。附代碼修改:initaincexternvoi,printascii(constchar*)asmlinkagei,_initstart_kernel(voi,)charand_line;externstructkernel_param_start_param,_stop_paraprintascii(start_kernel);/Modifysmp_setup_processor_id();ernel啟動調(diào)試技術(shù)使用printascii()函數(shù)打印printk()緩存信息,如果ernel已進(jìn)入到start_kernel()執(zhí)行,仍然沒有啟動信息打印出來,說明串口波特率出問題的可能性

5、比較大,啟動信息是暫時緩存到臨時erprint中的,進(jìn)入start_kernel()中會對串口波特率重新初始化,當(dāng)初始化完成后,緩存的系統(tǒng)啟動信息便打印出來,不能打印說明用于串口波特率初始化的系統(tǒng)時鐘源沒有初始化正確,通常是系統(tǒng)時鐘源和實際的晶振頻率不一致導(dǎo)致的,通常排查和解決這個問題后,系統(tǒng)啟動信息是能正確打印的。為了幫助解決問題,可以使用printascii()打印printk_內(nèi)容。這樣就能把printascii()打印的系統(tǒng)信息和預(yù)想的系統(tǒng)信息進(jìn)行比較,從而加快解決問題的進(jìn)度。附代碼修改:kernelprintkcexternvoidprintascii(constchar*);/Modifystaticcharprintk_b,f1024;/Modiasmlinkageintprintk(constchar*fmt,.)va_listargs;intr;va_start(args,fmt);printk(fmt,args);如上是裁減移植過程中最重要的兩個啟動調(diào)試技術(shù),靈活使用將帶來工作效率的提升,不管硬件平臺是那種或者其它類型的,也不管是哪個版本(如、等6可以采用這兩個啟動調(diào)試技術(shù)解決實際問題。為了支持函數(shù),需要在裁減中()添加的支持。我的補充:可以在里添加打印看是否跑到開啟前打/印/一個字符調(diào)用了該函數(shù)位于現(xiàn)在開啟實際調(diào)用了一般按樓上方法在就可

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論