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