应用软件/内核调试 - 2023.2 简体中文

Versal 自适应 SoC 系统集成和确认方法指南 (UG1388)

Document ID
UG1388
Release Date
2023-11-15
Version
2023.2 简体中文

基于 Linux 的软件堆栈可能需要在应用层和内核层进行调试。典型 Linux 应用使用 IOCTL 调用来与内核空间驱动程序进行交互。如果从内核驱动程序未返回 I/O 读取/写入响应,那么您可以检查特定硬件寄存器,查看编程的地址、长度、中断相关的掩码/使能信号是否正确。如果寄存器编程正确,那么下一个调试步骤是通过使用 cat 命令来观察 /proc/interrupts,确定针对硬件器件是否已寄存任何中断。

如果未寄存中断,则需要从硬件侧执行进一步调试。如果已寄存中断,那么您可以在驱动程序中添加具体的内核打印声明,以对中断服务例程和其他函数调用进行调试。应用级别调试可以使用 GDB 调试器来执行。另外,请确保应用代码中没有任何存储器泄漏,通常当动态分配的存储器用完后,如果未能清空,就会发生存储器泄漏。此类问题可使用 Valgrind 工具来调试,该工具有助于检测此类场景。