使用kgdb调试 linux 2.6.33(arm,s3c2440) 停在 booting the kerenel不动了
使用kgdb调试 linux 2.6.33(arm,s3c2440) 停在 booting the kerenel不动了先行谢过了。
-------------------------------------------------------------------------
开发板:
arm9 s3c2440
内核是 2.6.33
内核添加kgdb支持前的配置是:
使用内核自带的 2410的配置文件。
修改了makefile,
修改了主频 为12000000 。
为了一个错误还修改了内核的开发板硬件编号 使其和UBOOT传过来的机器代码相同。
还没有添加根文件系统的支持。
就做了这么简单的修改。这样在系统启动后会提示挂载根文件系统失败。但也证明内核起来
了。
内核是下载到内存中 bootm启动的。
------------------------------------------------------------------------
为了添加kgdb支持添加了下面的 内核编译选项(根据网上的前人配置的,应该是没错):
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
其他都是默认,好多配置选线更没有找到,不过我相信是因为内核版本的问题。
------------------------------------------------------------------------------
内核启动参数:
经试验发现内核源码的boot option那的内核启动参数会覆盖掉uboot的内核启动参数
所以我选择直接修改内核编译选项中的boot option
使用串口0
init=/linuxrc mem=64M kgdboc=ttySAC0,115200 kgdbwait
虽然没有根文件系统,没有init,加上这个参数应该没什么影响。
--------------------------------------------------------------------------------
host部分是 ubuntu 12.04,超级终端使用 gtkterm。
按道理,应该会内核启动的时候,显示 kgdb ...wait......
但是我的gtkterm 上显示 到 booting the kerenel ,就不往下走了。
------------------------------------------------------------------------------
各位看官能从我这描述中看到什么蛛丝马迹,我的kgdb为啥没起作用呢??
同时有下面结果几个问题:
1,如果我在内核启动参数上添加console=ttySAC0,115200,也就是说完整的是
init=/linuxrc mem=64M kgdboc=ttySAC0,115200 kgdbwait console=ttySAC0,115200
内核会跟上面没有添加kgdb支持的时候一样启动,到挂载根文件系统失败。
没有显示 kgdbwait的字样。
我的理解是 kgdboc是 kgdboc 是kgdb over console的意思,既然添加了kgdboc参数,应该
就不需要console这个参数了吧,为什么添加上console之后会有变化呢。
2,我的内核配置是否有问题。有人做过 2.6.33 这个版本附近的内核调试么?
3,我是用的是kgdboc 就是说host的gdb和gtkterm(超级终端) 同时使用串口1.
会不会是因为这个导致问题。如果gtkterm那开着。 gdb那就会提示错误信息,信息就是
说串口被占用。 但是我认为开发板和host是相互独立的,不管host那边如何。开发板那如果
配置正常了,就应该显示kgdb wait字样。
4,我曾经试着使用两个串口。但是不成功,经过试验,发现串口2没有被启用。linux默认情
况下(2440)串口不是都启用的么。为什么console=ttySAC2,115200不行呢。
5,我在网上搜索的时候,发现大部分的kgdb都是使用模拟器调试X86架构的kenrel的例子。
各位嵌入式的兄弟姐妹们调试ARM内核都是用printk么? 我这次之所以想调试下内核是因为
使用initramfs作为根文件系统的失败,解压完内核就卡住了,所以想试试kgdb。 (内核一
共 11.2MB)
页:
[1]