在详细介绍如何使用NanoCode与格蠹的另一套产品——挥码枪配套对幽兰笔记本进行内核调试的主要步骤之前,让我们先简要概述一下这一过程的背景与目的。内核调试是软件开发和系统维护中至关重要的一环,它允许开发者或系统管理员深入系统底层,诊断并解决潜在的问题。挥码枪(Nano Target Probe,NTP)是基于ARM CoreSight技术的硬件调试器, 其核心功能是通过CoreSight协议访问目标系统,实现系统调试和调优等功能。通过NanoCode与挥码枪的结合使用,我们可以为幽兰笔记本作为一个目标机可以提供一个高效、灵活的内核调试环境。
拥有幽兰的同学可以通过挥马枪对幽兰进行调试,包括调试LINUX内核驱动、LINUX启动过程等。以下是主要步骤的详细说明:

1. 下载Nano Code

想要使用挥马枪进行JTAG调试(JTAG默认自动开启),首先需要下载Nano Code,下载链接如下所示。
下载链接:https://www.nanocode.cn/#/download

2. 硬件准备

2.1 将SD卡转接头与挥码枪连接

首先,确保将SD卡转接头安全地插入挥码枪中,这是进行内核调试所必需的

2.2 将转接卡插入幽兰笔记本,USB线连接连接挥码枪并插入上位机,整体连接情况如下图所示

将转接卡无缝插入幽兰笔记本的相应接口,随后使用USB线将挥码枪与上位机连接起来。确保所有连接稳固,避免数据传输中断。连接示意图如下,确保按照图示正确连接。

2.3与主机进行连接

与主机建立连接时,无论该主机运行的是Windows系统还是Linux系统,都能实现无缝对接。

3. 建立内核调试会话

3.1 进入NanoCode并连接到远端后进入Nano调试并选择内核调试,并按照下图进行参数配置

3.2 配置完毕后点击启动,出现下面界面后点击中断

3.3 出现下列命令提示符后即表示内核调试会话建立成功

注:如遇挥码枪相关问题可以查阅:挥码枪上手常见问题

4. 加载内核符号文件

在幽兰的机器上面默认附带了当前内核版本的符号文件,具体路径如下所示。
示例:

4.1 设置符号路径

.sympath + 路径 //设置符号文件所在的文件夹路径
使用.sympath命令加上符号文件所在的文件夹路径,以确保调试器能够正确加载符号信息
示例:


设置成功后会显示:

5 下载源代码(太乙)

https://github.com/gedulab/linux-yourland

5.1 使用.reload命令重新加载

执行.reload命令以重新加载符号和源代码,确保调试环境是最新的。如果一切顺利,您将看到加载成功的提示信息

6 一些常用调试命令(示例如下)

6.1 lm 列出当前加载的模块信息,有助于了解系统模块状态

6.2 k 显示当前堆栈跟踪,对于定位问题非常有用

6.3 r 用于显示寄存器信息

常见问题

  • 无法找到ndb驱动
Failed to find NDB marker in target memory after scanning ...
If you are debugging Linux kernel, please make sure ndb.ko is loaded.

解决方案:
a. 在targetname处添加yl。

b. 如果仍有问题,可能是ndb驱动的地址发生了变化,请参照下方文章进行设置。

https://www.nanocode.cn/wiki/docs/gedu_ntp_wiki/ntp_set_scanbase

class="markdown-heading">3. 开启JTAG

为了能与目标系统建立JTAG会话,需要开启SOC的JTAG支持,开启方法有多种,我们建议你优先选择下面的第一种,如果第一种遇到问题,再尝试另外两种。
1)打开桌面上面的葫芦娃,点击JTAG Toggle,开启JTAG。

2)使用pangolin小程序开机JTAG。

sudo /opt/gedu/pangolin/pangolin 2

whether switch otg status: false
whether switch jtag status: true
current value of SOC_CON6 = 0x4740
value is set to = 0x40004000
current value of SOC_CON6 = 0x4740
current value of GPIO4D_IOMUX_SEL_L = 0x1111
value is set to = 0xff005500
current value of GPIO4D_IOMUX_SEL_L = 0x5511
whether switch sysrq status: false
the program will exit with exitno: 2

3)使用io命令开启JTAG。

sudo io -w -4 0xfd5f8098 0x55115511
作者:李梓涌  创建时间:2023-05-02 09:04
最后编辑:涂滨晶  更新时间:2024-12-20 17:01