本文是适配新目标平台系列的一部分。在本步骤之前,您已经能够成功实现中断(如果还没有,那么请阅读《如何适配新芯片》)。在这一部分,我们将介绍如何定义系统的内存布局,让NDB可以建立模块列表,加载符号文件,建立上层语义。

首先请阅读c:\nanocode\data\syspara_gdk3.cfg,这是为GDK3开发板设计的配置文件。
[sum]
total_cpu=1
cpu_bits=32
machine_type=0x1c0
ram_kb=20
flash_kb=64
kernel_base=0x08000000
platform=4
ver_major=1
ver_minor=2

[module@0]
name=gem3.elf
base=0x08000000
size=0x10000

在上面这个配置文件中,定义了系统的基本参数,并且定义了一个软件模块。
接下来,建议按如下步骤操作:

1. 复制syspara配置文件

在文件管理器中,选中syspara_gdk3.cfg,按Ctrl + C复制一份,再按Ctrl + V粘贴。然后把粘贴出来的新文件命名为syspara_Xxx.cfg, 其中的Xxx部分应该和适配新芯片时使用的目标系统名称一致,如果忘记了,可以看data目录下的新文件,也就是包含jtag参数的Xxx.cfg。

2. 打开syspara_Xxx.cfg,根据目标系统的实际情况做修改。

2.1 先修改sum部分:

total_cpu=1 逻辑CPU总数量
cpu_bits=32 CPU是32位还是64位
machine_type=0x1c0 CPU架构,如果是ARM64则输入0xAA64
ram_kb=20 芯片内部集成的IRAM数量,如果不使用NDB烧录固件,则可以不写
flash_kb=64 芯片内部集成的闪存数量,如果不使用NDB烧录固件,则可以不写
kernel_base=0x08000000 RTOS固件的基地址
platform=4 平台类型,4代表RTOS
ver_major=1 配置文件版本号,保持不变
ver_minor=2 配置文件版本号,保持不变

2.2. 再修改模块部分。

[module@0] 节的名字,@0代表第一个模块
name=gem3.elf 模块的文件名,NDB根据这个名字在.sympath命令定义的文件夹中寻找符号文件
base=0x08000000 模块在内存中的线性地址
size=0x10000 模块的大小

3. 测试

准备好syspara文件后,关闭和重新开启ndb,然后再次将目标中断到ndb中。
尝试使用如下命令测试符号加载情况:

  1. 将包含调试符号信息(-g编译)的模块文件复制到ndb所在的主机。使用.sympath <符号文件路径> 设置符号文件路径。
  2. 使用.reload重新加载模块列表
  3. 使用lm命令观察模块列表
  4. 使用x !*显示模块中的符号,modxxx要换成lm列出的具体模块
  5. 使用k命令观察调用栈
  6. 使用.srcpath命令设置源代码路径
作者:Zhang Yinkui  创建时间:2025-08-04 14:58
最后编辑:Zhang Yinkui  更新时间:2025-08-06 11:03