问题标签 [lauterbach]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
trace32 - 劳特巴赫宏的懒惰评价——有可能吗?
我目前正在为使用劳特巴赫脚本执行的测试编写某种“骨架”。
在这个框架中,我想要一个部分,其中所有测试特定定义都应该完成,例如设置中断的函数,要更改的变量等。这部分应该靠近脚本文件的顶部,以便其他用户执行不必通过完整的脚本文件,在这里和那里更改值。
将要使用的一些变量在要测试的 C 代码中定义为函数局部。因此,只有在输入该函数的范围后,这些才可用于 Lauterbach 脚本 - 这深深地位于框架脚本代码中。
有没有办法在输入范围之前为这些变量定义宏?
让我们给出一些示例结构:
问题是劳特巴赫抱怨- 这是正确的&varToBeSet=status
,Symbol not found in this context
因为它是一个局部变量。
通过 View->Symbols->SymbolsTreeView(或通过给出命令Symbol.List.Tree
)查看符号,我可以找到符号(在这种特殊情况下,在节点 some_module.some_function.status 下找到)。单击它会在 TRACE32 状态行中提供信息,其中\\some_app\some_module\some_func\status
包含type (auto STATUS)
、scope local
、location stack
。
但是,将我的脚本更改为 read&varToBeSet=\\some_app\some_module\some_func\status
而不是&varToBeSet=status
,并没有多大帮助。在这种情况下,劳特巴赫抱怨no access to that symbol
.
有没有办法,我可以将宏的评估延迟到实际使用它的某个点,而不是在定义它时对其进行评估?
trace32 - 将所有函数符号及其基地址转储到 trace32 中的文本文件
我正在尝试将带有函数基地址的精灵中的所有函数符号导入文本文件。我正在使用以下 2 个命令来执行此操作
但是在这个过程中,完整的函数名被终止了。我得到这样的输出:
我想要地址和完整路径\符号(第二列)。请注意,符号表非常大,增加剪贴板大小和选择“到剪贴板全部”将不起作用。我知道如果我有函数基址,我可以得到函数名。但是,在我的实现中,我需要知道基地址和函数全名以提高效率。
我想知道是否可以通过某些命令增加第二列的宽度,以便在使用 winprint 命令后获得完整的函数名称
trace32 - 查询函数符号是否存在
我可以sYmbol.Browse.Function
用来浏览加载到内部 TRACE32 符号数据库的函数符号;引用一般参考 [S]:
sYmbol.Browse.Function
允许您浏览已加载到内部 TRACE32 符号数据库的函数列表,使用
Data.LOAD
.
我正在编写一个读取用户输入(函数符号名称)的实用程序,如果输入无效的函数符号,阻止用户继续前进会很有帮助。我目前正在使用Trace.Find ADDress <name_of_function>
后跟查询FOUND()
。
问题:
- 查询特定函数符号名称是否存在的惯用方法是什么?
trace - 劳特巴赫 Trace32:预计不再有争论
有时在尝试通过劳特巴赫查看内存时,我收到错误“没有更多的参数预期”并且我无法查看内存。为什么会发生这种情况,解决方案是什么?
scripting - 如何在 PRACTICE 脚本循环运行(和阻塞)执行时在劳特巴赫使用 AddMenu?
我创建了一个 PRACTICE Lauterbach 脚本,以便从不同情况的缓冲区中检索某些字符串。
我在从中检索缓冲区的不同位置放置了 4 个断点。
我想以非阻塞方式检索信息,就好像它是一个中断服务程序一样。为此,我使用了 GLOBALON 命令,如下:
在 BB_HIT_CALLBACK 中,我为 4 个断点中的每一个插入了服务例程。
另一方面,在正常执行中,我放置了一个简单的无限循环。
这使程序保持在一个循环中,仅由 GLOBALON PBREAK 命令中断。我希望能够有一个工具栏按钮来结束这个循环的执行,但是在运行时,脚本只响应断点,并且 UI 元素被忽略。
如何从 UI 元素停止执行循环?
我已经能够设置读取秒数,并在 60 秒时超时,但这对于我想要的来说还不够好。
assembly - 检查是否启用了特定中断( IPI )
我读过 EFLAGS 有 IF 如果中断通常启用,它可以存储在哪里,但我需要知道 IPI(进程间中断)是否启用。
我只能通过劳特巴赫调试器物理访问 CPU 寄存器和数据,我无法访问内核或类似的东西。
embedded - trace32 data.load.elf 错误“验证地址 NSX:0x8000 处的错误”
这是我第一次使用 Trace32,当我尝试执行此命令时,我试图在 arm 目标上刷新一个简单的 C 程序(据我所知,此命令会刷新目标但不确定?)。
我收到以下错误:
验证地址 NSX:0x8000 处的错误
我使用以下命令来编译和链接代码:
如何刷新代码并进行调试?逐步执行每条指令
谢谢
caching - Lauterbach trace32:如何在缓存区域使用断点
我最近正在调试一个 Cortex-M4 程序,该程序的文本部分位于缓存的内存区域。连接到设备后,我正在尝试设置软件断点。可以命中断点并停止 CPU。但是,我无法进行任何进一步的调试(STEP,或设置另一个断点并运行),PC 总是坚持第一个断点。
问题可能是因为缓存。当软件断点被命中时,调试器应该已经将物理内存区域改回原来的值,但是指令缓存没有更新。所以 CPU 一直执行断点操作码,永远不会向前移动。
ARM 文档在此链接中有如下描述
调试器无法访问指令缓存。因此,调试器对内存的可缓存、可执行区域的访问可能与处理器指令端可见的指令不一致。
但是它没有给出解决方案。
我正在考虑在断点命中后手动使指令缓存无效。尝试使用 trace32cache clean IC
命令,但它说该命令已锁定。不确定这是许可证问题还是 Cortex-M4 不支持该命令。
有没有人有经验来处理这个?
trace32 - 如果启用断点,Lauterbach Trace 32 ICE 再次进入 main
我是 Lauterbach 调试器 (Trace32) 的新手,我的调试似乎有些问题。
就我而言,每次我进入断点并在该函数中提前几步时,控件都会返回到 main。我知道它会回到 main,因为我在 main 有一个断点。
然后当我说再次运行时,除非我再次加载批处理文件,否则它无法运行。
我试过在没有断点的情况下运行它,它运行良好。
一些细节:
Trace 32 控制器:H8/3337
我使用 USB 进行调试
embedded - 闪存故障
我正在开发带有 NOR Flash on Chip select 0 的 XScale PXA270。由于以前的闪存已过时,我的公司将其更改为兼容 AMD/Spansion 的 MX29GL128。
我正在尝试使用劳特巴赫 JTAG 在上面写字。
这是我的脚本: https ://pastebin.com/jcjsbwE3
但是得到一个错误。
地址 SD: 周围的闪存编程错误
0x7C
。
在这张图片上,您可以看到总线上的命令和错误。
你有什么想法吗?很多天以来我一直坚持下去