- 論壇徽章:
- 0
|
使用kgdb調(diào)試 linux 2.6.33(arm,s3c2440) 停在 booting the kerenel不動了
先行謝過了。
-------------------------------------------------------------------------
開發(fā)板:
arm9 s3c2440
內(nèi)核是 2.6.33
內(nèi)核添加kgdb支持前的配置是:
使用內(nèi)核自帶的 2410的配置文件。
修改了makefile,
修改了主頻 為12000000 。
為了一個錯誤還修改了內(nèi)核的開發(fā)板硬件編號 使其和UBOOT傳過來的機器代碼相同。
還沒有添加根文件系統(tǒng)的支持。
就做了這么簡單的修改。這樣在系統(tǒng)啟動后會提示掛載根文件系統(tǒng)失敗。但也證明內(nèi)核起來
了。
內(nèi)核是下載到內(nèi)存中 bootm啟動的。
------------------------------------------------------------------------
為了添加kgdb支持添加了下面的 內(nèi)核編譯選項(根據(jù)網(wǎng)上的前人配置的,應該是沒錯):
General setup
-> Prompt for development and/or incomplete code/drivers
Kernel hacking -->
Kernel debugging
compile the kernel with debug info
KGDG: kernel debugging with remote gdb -->
KGDB: use kgdb over the serial console
其他都是默認,好多配置選線更沒有找到,不過我相信是因為內(nèi)核版本的問題。
------------------------------------------------------------------------------
內(nèi)核啟動參數(shù):
經(jīng)試驗發(fā)現(xiàn) 內(nèi)核源碼的boot option那的內(nèi)核啟動參數(shù)會覆蓋掉uboot的內(nèi)核啟動參數(shù)
所以我選擇直接修改內(nèi)核編譯選項中的boot option
使用串口0
init=/linuxrc mem=64M kgdboc=ttySAC0,115200 kgdbwait
雖然沒有根文件系統(tǒng),沒有init,加上這個參數(shù)應該沒什么影響。
--------------------------------------------------------------------------------
host部分是 ubuntu 12.04 ,超級終端使用 gtkterm。
按道理,應該會內(nèi)核啟動的時候,顯示 kgdb ...wait......
但是我的gtkterm 上顯示 到 booting the kerenel ,就不往下走了。
------------------------------------------------------------------------------
各位看官能從我這描述中看到什么蛛絲馬跡,我的kgdb為啥沒起作用呢??
同時有下面結(jié)果幾個問題:
1,如果我在內(nèi)核啟動參數(shù)上添加console=ttySAC0,115200,也就是說完整的是
init=/linuxrc mem=64M kgdboc=ttySAC0,115200 kgdbwait console=ttySAC0,115200
內(nèi)核會跟上面沒有添加kgdb支持的時候一樣啟動,到掛載根文件系統(tǒng)失敗。
沒有顯示 kgdb wait的字樣。
我的理解是 kgdboc是 kgdboc 是kgdb over console的意思,既然添加了kgdboc參數(shù),應該
就不需要console這個參數(shù)了吧,為什么添加上console之后會有變化呢。
2,我的內(nèi)核配置是否有問題。有人做過 2.6.33 這個版本附近的內(nèi)核調(diào)試么?
3,我是用的是kgdboc 就是說host的gdb和gtkterm(超級終端) 同時使用串口1.
會不會是因為這個導致問題。如果gtkterm那開著。 gdb那就會提示錯誤信息,信息就是
說串口被占用。 但是我認為開發(fā)板和host是相互獨立的,不管host那邊如何。開發(fā)板那如果
配置正常了,就應該顯示kgdb wait字樣。
4,我曾經(jīng)試著使用兩個串口。但是不成功,經(jīng)過試驗,發(fā)現(xiàn)串口2沒有被啟用。linux默認情
況下(2440)串口不是都啟用的么。為什么console=ttySAC2,115200不行呢。
5,我在網(wǎng)上搜索的時候,發(fā)現(xiàn)大部分的kgdb都是使用模擬器調(diào)試X86架構(gòu)的kenrel的例子。
各位嵌入式的兄弟姐妹們調(diào)試ARM內(nèi)核都是用printk么? 我這次之所以想調(diào)試下內(nèi)核是因為
使用initramfs作為根文件系統(tǒng)的失敗,解壓完內(nèi)核就卡住了,所以想試試kgdb。 (內(nèi)核一
共 11.2MB)
|
|