Hexagon GDB Debugger介绍(24)
2.12.11 内存管理
Hexagon 处理器支持具有地址转换和保护功能的完整内存管理。 调试器可以显示与内存管理相关的数据结构的信息:页表和转换后备缓冲区 (TLB)。
info pagetable
在页表上显示信息。
info tlb
显示有关 TLB 的信息。 可以在 TLB 事件上设置观察点(第 2.9.1.2 节)
2.12.11.1 内存访问方式
访问模式属性指定调试器是否可以对内存区域进行读或写访问。
虽然这些属性可以防止调试器执行无效的内存访问,但它们不会阻止目标系统、I/O DMA 等访问内存。
- ro 内存是只读的。
- wo 内存是只写的。
- rw 内存是读/写。 这是默认设置。
2.12.11.2 内存访问大小
访问大小属性告诉调试器在内存区域中使用特定大小的访问。 通常,内存映射设备寄存器需要特定大小的访问。 如果未指定访问大小属性,调试器可以使用任何大小的访问。
- 8 使用 8 位内存访问。
- 16 使用 16 位内存访问。
- 32 使用 32 位内存访问。
- 64 使用 64 位内存访问。
2.12.11.3 数据缓存
数据缓存属性指定调试器是否将缓存目标内存。 虽然这通常通过减少调试协议开销来提高性能,但它可能会导致不正确的结果,因为调试器不知道易失性变量或内存映射设备寄存器。
- cache 启用调试器以缓存目标内存。
- nocache 禁用调试器缓存目标内存。 这是默认设置。
2.12.12 保存和恢复内存
你可以使用 dump、append 和 restore 命令在目标内存和文件之间复制数据。 dump 和append 命令将数据写入文件,而restore 命令从文件中将数据读回到下级的内存中。 文件可以是二进制、Motorola S-record、Intel hex 或 Tektronix Hex 格式; 但是,调试器只能附加到二进制文件。
dump format memory filename start_addr end_addr
dump format value filename expr
将内存中的内容从 start_addr 转储到 end_addr,或将 expr 的值转储到给定格式的filename。
format 参数有四个选项:
- binary 原始二进制形式。
- ihex 英特尔十六进制格式。
- srec 摩托罗拉 S-record格式。
- tekhex Tektronix十六进制格式。
调试器使用与 GNU 二进制实用程序相同的格式定义,例如 objdump 和 objcopy。
append binary memory filename start_addr end_addr
append binary value filename expr
将内存内容从 start_addr 附加到 end_addr,或将 expr 的值以原始二进制形式附加到filename。 (数据只能以原始二进制形式附加到文件中。)
注意 必须在转储和追加命令中指定格式参数(二进制等)。 这与标准 GDB 不同,这样做是为了避免与 Tcl 脚本语言。
restore filename [binary] bias start end
将文件filename 的内容恢复到内存中。 restore 命令可以自动识别任何已知的 BFD 文件格式,原始二进制除外。 要恢复原始二进制文件,你必须在文件名后指定可选的关键字 binary。
如果偏差不为零,则其值将添加到文件中包含的地址中。 二进制文件总是从地址 0 开始,因此它们将在地址偏差处恢复。 其他 BFD 文件有一个内置位置; 它们将在与该位置的偏移偏差处恢复。
如果开始和/或结束不为零,则仅恢复文件偏移开始和文件偏移结束之间的数据。 在应用偏置参数之前,这些偏移量是相对于文件中的地址的。