首页 > 解决方案 > Linux 内核无法在 JTAG 调试器下启动

问题描述

让 Linux (OpenWrt) 运行的硬件像魅力一样工作。CPU——是NXP的IMX6ULL。该 CPU 具有 JTAG 接口并由 J-Link 调试器支持。在 JTAG 调试器下可以很好地启动 U-boot,但在使用 linux 内核时遇到问题。使用和vmlinux编译。CONFIG_DEBUG_INFO=yCONFIG_DEBUG_KERNEL=y

这是内核启动的入口点 在此处输入图像描述

我可以逐步浏览代码,直到 __enable_mmu 函数。以下是执行卡住之前的四个步骤: 在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

例如在执行时

mcr p15, 0, r4, c2, c0, 0       @ load page table pointer

它卡住的代码行。在屏幕截图右侧显示的每个步骤上注册状态。对汇编程序一无所知,所以无法理解出了什么问题。由于在调试下面临这样的问题,我很确定某些东西没有正确初始化。在生产流程中需要由u-boot 初始化一些东西,例如在U-boot 初始化后启动内核并将执行传递给内核。试图找到什么是页表指针,试图理解什么寄存器应该存储什么值,但没有运气。有人可以给我一个提示,我该如何处理这个问题?大概如何正确初始化页表指针?

标签: linux-kernelgdbembedded-linuxjtag

解决方案


推荐阅读