我正在尝试通过AM3517评估板上的JTAG加载和启动Linux内核。我的调试器是BDI3000。我没有使用openocd,因为根据调试器的文档,它不是必需的。到目前为止,我认为我能够将vmlinux映像加载到内存中,但一旦完成,“cont”gdb命令就无法启动linux。我在串行控制台上没有收到任何消息。
我按照此链接http://elinux.org/Debugging_The_Linux_Kernel_Using_Gdb
中的说明进行操作尝试获取链接中提到的log_buffer的地址,为我提供了以下输出
(gdb) p (char*) &__log_buf[log_start]
$1 = 0xc04cd460 <Address 0xc04cd460 out of bounds>
我在互联网上搜索过很多但找不到合适的答案。 不确定我做错了什么。
答案 0 :(得分:2)
Linux内核不能只是加载然后执行 在可以执行Linux内核之前,ARM体系结构需要引导加载程序:
这些步骤中的大多数对于所有体系结构都是通用的,但ATAG的系统信息列表对于ARM来说是唯一的 所有这些启动要求都在"Booting ARM Linux"中提到 通常,引导加载程序(例如U-Boot)执行这些任务 您提到的教程告诉您使用引导加载程序来初始化您的电路板:
最实用的方法是在内核开始时设置硬件断点 并使用JTAG复位信号重置电路板 您的引导加载程序将初始化您的电路板,执行将在内核开始时停止 之后,您可以将内核加载到内存中并运行它。