linux-kernel - Linux 内核无法在 JTAG 调试器下启动
问题描述
让 Linux (OpenWrt) 运行的硬件像魅力一样工作。CPU——是NXP的IMX6ULL。该 CPU 具有 JTAG 接口并由 J-Link 调试器支持。在 JTAG 调试器下可以很好地启动 U-boot,但在使用 linux 内核时遇到问题。使用和vmlinux
编译。CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_KERNEL=y
我可以逐步浏览代码,直到 __enable_mmu 函数。以下是执行卡住之前的四个步骤:
例如在执行时
mcr p15, 0, r4, c2, c0, 0 @ load page table pointer
它卡住的代码行。在屏幕截图右侧显示的每个步骤上注册状态。对汇编程序一无所知,所以无法理解出了什么问题。由于在调试下面临这样的问题,我很确定某些东西没有正确初始化。在生产流程中需要由u-boot 初始化一些东西,例如在U-boot 初始化后启动内核并将执行传递给内核。试图找到什么是页表指针,试图理解什么寄存器应该存储什么值,但没有运气。有人可以给我一个提示,我该如何处理这个问题?大概如何正确初始化页表指针?
解决方案
推荐阅读
- ios - 在 Xcode 中我得到错误:文件是 universai (2 sl�ces) 但不包含 x86_64 架构:
- javascript - 此 Javascript 代码中是否有错误?
- hsqldb - 在脚本中向 HSQLDB SqlTool 提供密码
- haskell - 不能以“读者”作为字段“强制”数据类型
- python - Django 管理员在发布后发送电子邮件
- java - http 请求如何在已部署的 Spring Boot 应用程序中工作?
- python - 无法在 Python 中使用 namedWindow 绘制图像
- c# - 我可以有一个更快的嵌套循环来降低算法复杂度吗?
- android - Exoplayer如何显示下载进度
- android - Recyclerview 刷新项目甚至无需调用 notifyDataSetChanged()