【发布时间】:2023-03-27 07:16:01
【问题描述】:
代码用于从 32 位地址读取 40 字节数据:
size = 40
addr = 0x02051000
buffer = (c_uint8 * size)()
buffer_handle = c_void_p()
address_handle32 = c_void_p()
self.t32_api.T32_RequestBufferObj(byref(buffer_handle), 0)
self.t32_api.T32_RequestAddressObjA32(byref(address_handle32), addr)
self.t32_api.T32_ReadMemoryObj(buffer, address_handle32, size)
self.t32_api.T32_CopyDataFromBufferObj(buffer, size, buffer_handle)
self.t32_api.T32_ReleaseBufferObj(byref(buffer_handle))
return ''.join(map(str, buffer))
返回数据:000000004000000003213746596610040000000000000000 但在跟踪 32 窗口中显示
API 是否返回不正确的数据?或者我的代码无效?
【问题讨论】:
-
嗨 Nirmi,你确定你读的是同一个内存吗?您没有设置任何访问等级。可以添加整个 Data.dump 窗口的图片吗?
-
@dev15 更新了准确值和图片
-
您使用的是哪种架构? Remote API 总是使用字节地址,而 TRACE32 有一些地址乘数,取决于多种因素。
-
另一个猜测:您可以尝试使用
T32_SetAddressObjAccessString设置访问类,在您的情况下是这样的:self.t32_api.T32_SetAddressObjAccessString(byref(address_handle32), b"MD")在self.t32_api.T32_RequestAddressObjA32(byref(address_handle32), addr)之后。 -
最新的 DVD R.2020.09 也有一个 Python 模块,它可以帮助你很多,但请确保你的许可证有效:你可以在这里得到它:lauterbach.com/frames.html?download_trace32.html
标签: embedded python-3.8 trace32 lauterbach