Scripting 如何访问Trace32 CMM脚本中两个文件中的两个不同例程

Scripting 如何访问Trace32 CMM脚本中两个文件中的两个不同例程,scripting,trace32,lauterbach,Scripting,Trace32,Lauterbach,我在Trace32的两个不同floder位置有两个文件。我在Trace32中执行cd.do file_name子例程_name。trace32将执行的第一个命令的位置作为需要执行以下命令的文件夹。如何从两个不同的文件夹执行例程。关于如何在Trace32中编写脚本,这里有一个非常好的指南。 我不明白为什么你需要把它们放在两个不同的文件夹中,难道不应该把它们放在同一个文件夹中解决吗?好吧,也许你应该用do代替CD.do DO在给定位置执行脚本,但保留当前工作路径。 CD.DO将工作路径更改为给定脚

我在Trace32的两个不同floder位置有两个文件。我在Trace32中执行cd.do file_name子例程_name。trace32将执行的第一个命令的位置作为需要执行以下命令的文件夹。如何从两个不同的文件夹执行例程。

关于如何在Trace32中编写脚本,这里有一个非常好的指南。


我不明白为什么你需要把它们放在两个不同的文件夹中,难道不应该把它们放在同一个文件夹中解决吗?

好吧,也许你应该用do代替CD.do

DO在给定位置执行脚本,但保留当前工作路径。 CD.DO将工作路径更改为给定脚本的位置,然后执行脚本。 不过,我建议您编写脚本时,无论是用CD.DO调用脚本,还是直接调用脚本。您可以使用绝对路径或相对于脚本位置的路径来实现这一点。我更喜欢第二个

因此,想象一下以下文件结构:

C:\t32\myscripts\start.cmm
C:\t32\myscripts\folder1\routines.cmm
C:\t32\myscripts\folder2\loadapp.cmm
C:\t32\myscripts\folder2\application.elf
您可以使用如下绝对路径处理此结构:

start.cmm:

folder2/loadapp.cmm:

对于相对路径,您可以在从当前执行的练习脚本的位置访问其他相对文件之前使用前缀~~~~。~~~~被替换为当前执行脚本的路径,就像~代表您的主目录一样。还有一个函数OS.PPD,它为您提供当前执行的练习脚本的目录

因此,上述相对路径的情况如下所示:

start.cmm:

folder2/loadapp.cmm:


我把它们放在不同的文件夹里。我已经尝试使用chdir来更改目录,以便可以执行来自其他文件夹中文件的例程。这就产生了问题,因为我只能使用一个文件夹中可用的例程。我不认为脚本语言是为使用不同文件夹中的例程而设计的,它不够高级。我知道它是重复的,但是如果你只是把它移到同一个文件夹,它能正常工作吗?使用来自不同文件夹的例程是绝对可能的。我提出了一个解决方案,见上文或下文。Aabha Geed,你能不能让你的问题更精确一些?既然你没有接受我的回答,我想我误解了你的要求。。。
DO "C:/t32/myscripts/folder1/routines.cmm" subroutine_A
DO "C:/t32/myscripts/folder2/loadapp.cmm"
Data.LOAD.Elf "C:/t32/myscripts/folder2/application.elf"
DO "C:/t32/myscripts/folder1/routines.cmm" subroutine_B
DO "~~~~/folder1/routines.cmm subroutine_A"
DO "~~~~/folder2/loadapp.cmm"
Data.LOAD.Elf "~~~~/application.elf"
DO "~~~~/../folder1/routines.cmm" subroutine_B