Trace32 将目录位置写入文件
Trace32 Write directory location to file
所以我最终决定硬着头皮重写我公司糟糕的Trace32脚本。我正在尝试使用数据文件来保存 运行 之间的相关信息,这样我们就可以 运行 一个重做脚本来重复任何操作,而不必浏览一堆对话框和 select 每次电源循环后我们的工作区文件。为此,我需要将之前 运行(包括文件位置)中的用户定义变量保存到文件中,以便我将它们保存在下一个 运行 中。作为参考,这是我的菜单脚本的一部分。
; File: Do.cmm
GLOBAL &WORKSPACE
GLOBAL &FILETOLOAD
GLOBAL &TARGETSELVAL
&WORKSPACE="//tsclient\Z\Product_trunk_MS" ; Not the ideal solution
PRINT "Workspace is &WORKSPACE"
DIALOG
(
HEADER "Do one of the following"
POS 0. 0. 23.
COMMAND.PREVIOUS: CHOOSEBOX "Repeat Last Command" ""
POS 24. 0. 23.
COMMAND.WORKSPACE: CHOOSEBOX "Change Workspace Location" ""
POS 0. 3. 25.
TEXT "Connect To an R7 Proc:"
POS 0. 4. 6.
COMMAND.IP0: CHOOSEBOX "IP0" ""
POS 8. 4. 7.
COMMAND.IP1: CHOOSEBOX "IP1" ""
; And a lot more of the same...
POS 17. 16. 15.
DEFBUTTON "OK" "continue"
)
DIALOG.SET COMMAND.PREVIOUS
STOP
IF DIALOG.BOOLEAN(COMMAND.IP0)
(
&TARGETSELVAL=0x00030000
&FILETOLOAD="&WORKSPACE\CPUs\IP0\build\output\IP0.axf"
)
IF DIALOG.BOOLEAN(COMMAND.IP1)
(
&TARGETSELVAL=0x0003001
&FILETOLOAD=&WORKSPACE\CPUs\IP1\build\output\IP1.axf
)
... And so on
问题在于每次更改工作区时我都必须编辑脚本。我希望能够通过 selecting COMMAND.PREVIOUS
然后 select 使用 Windows selection 对话框在我的新工作区根目录中设置它.我没有该功能的有效实现,但我希望它看起来像这样:
IF DIALOG.BOOLEAN(COMMAND.WORKSPACE)
(
PRINT "Select the new root directory that you would like to work out of."
OPEN #1 workspace.dat /Create
&WORKSPACE= C/*/ ; I don't know how to do this here.
WRITE #1 &WORKSPACE
CLOSE #1
ENDDO
)
显然,Data.load.binary "*.bin"
能够将文件加载到内存中,但我还不需要加载文件,我只需要路径。我确实发现 symbol.SOURCEPATH.SETBASEDIR c:\*
会打开一个对话框,但我仍然无法获取该信息。
附加信息
我在尝试寻找解决方案时通读了很多 this and this。如果有一个我应该使用的内置路径变量(如前面提到的 SOURCEPATH.SETBASEDIR
,我不介意这样做。这是我第一天编写 Trace32 脚本,所以我提前为我的天真道歉。如果重要的话,我正在使用 Trace32 Powerview for ARM Release Feb 2017 SP2(32 位)(所以,最新的)
TRACE32 有工作目录的概念。命令ChDir
可用于改变当前目录:
ChDir <path>
可以使用 PRACTICE 函数检索当前工作目录 OS.PWD()
:
&WORKSPACE=OS.PWD()
上面的脚本示例可以这样扩展:
IF DIALOG.BOOLEAN(COMMAND.WORKSPACE)
(
PRIVATE &old_directory
&old_directory=OS.PWD() // Save current directory
ChDir * // Open directory selection dialog
&WORKSPACE=OS.PWD() // Update working directory
OPEN #1 workspace.dat /Create
WRITE #1 &WORKSPACE
CLOSE #1
ChDir &old_directory // Restore previous directory selection
)
我最终找到了解决我的问题的方法,它与 xasc 的有点不同,所以我想我会分享它。
IF DIALOG.BOOLEAN(COMMAND.WORKSPACE)
(
PRINT "Select the new root directory that you would like to work out of."
DIALOG.DIR *
ENTRY %LINE &WORKSPACE
OPEN #1 workspace.dat /Create
WRITE #1 "&WORKSPACE"
CLOSE #1
)
这对我来说更简洁一些,因为它不需要我更改工作目录。
DIALOG
似乎是我正在寻找的界面,能够打开文件、目录等并将它们保存到变量中。
所以我最终决定硬着头皮重写我公司糟糕的Trace32脚本。我正在尝试使用数据文件来保存 运行 之间的相关信息,这样我们就可以 运行 一个重做脚本来重复任何操作,而不必浏览一堆对话框和 select 每次电源循环后我们的工作区文件。为此,我需要将之前 运行(包括文件位置)中的用户定义变量保存到文件中,以便我将它们保存在下一个 运行 中。作为参考,这是我的菜单脚本的一部分。
; File: Do.cmm
GLOBAL &WORKSPACE
GLOBAL &FILETOLOAD
GLOBAL &TARGETSELVAL
&WORKSPACE="//tsclient\Z\Product_trunk_MS" ; Not the ideal solution
PRINT "Workspace is &WORKSPACE"
DIALOG
(
HEADER "Do one of the following"
POS 0. 0. 23.
COMMAND.PREVIOUS: CHOOSEBOX "Repeat Last Command" ""
POS 24. 0. 23.
COMMAND.WORKSPACE: CHOOSEBOX "Change Workspace Location" ""
POS 0. 3. 25.
TEXT "Connect To an R7 Proc:"
POS 0. 4. 6.
COMMAND.IP0: CHOOSEBOX "IP0" ""
POS 8. 4. 7.
COMMAND.IP1: CHOOSEBOX "IP1" ""
; And a lot more of the same...
POS 17. 16. 15.
DEFBUTTON "OK" "continue"
)
DIALOG.SET COMMAND.PREVIOUS
STOP
IF DIALOG.BOOLEAN(COMMAND.IP0)
(
&TARGETSELVAL=0x00030000
&FILETOLOAD="&WORKSPACE\CPUs\IP0\build\output\IP0.axf"
)
IF DIALOG.BOOLEAN(COMMAND.IP1)
(
&TARGETSELVAL=0x0003001
&FILETOLOAD=&WORKSPACE\CPUs\IP1\build\output\IP1.axf
)
... And so on
问题在于每次更改工作区时我都必须编辑脚本。我希望能够通过 selecting COMMAND.PREVIOUS
然后 select 使用 Windows selection 对话框在我的新工作区根目录中设置它.我没有该功能的有效实现,但我希望它看起来像这样:
IF DIALOG.BOOLEAN(COMMAND.WORKSPACE)
(
PRINT "Select the new root directory that you would like to work out of."
OPEN #1 workspace.dat /Create
&WORKSPACE= C/*/ ; I don't know how to do this here.
WRITE #1 &WORKSPACE
CLOSE #1
ENDDO
)
显然,Data.load.binary "*.bin"
能够将文件加载到内存中,但我还不需要加载文件,我只需要路径。我确实发现 symbol.SOURCEPATH.SETBASEDIR c:\*
会打开一个对话框,但我仍然无法获取该信息。
附加信息
我在尝试寻找解决方案时通读了很多 this and this。如果有一个我应该使用的内置路径变量(如前面提到的 SOURCEPATH.SETBASEDIR
,我不介意这样做。这是我第一天编写 Trace32 脚本,所以我提前为我的天真道歉。如果重要的话,我正在使用 Trace32 Powerview for ARM Release Feb 2017 SP2(32 位)(所以,最新的)
TRACE32 有工作目录的概念。命令ChDir
可用于改变当前目录:
ChDir <path>
可以使用 PRACTICE 函数检索当前工作目录 OS.PWD()
:
&WORKSPACE=OS.PWD()
上面的脚本示例可以这样扩展:
IF DIALOG.BOOLEAN(COMMAND.WORKSPACE)
(
PRIVATE &old_directory
&old_directory=OS.PWD() // Save current directory
ChDir * // Open directory selection dialog
&WORKSPACE=OS.PWD() // Update working directory
OPEN #1 workspace.dat /Create
WRITE #1 &WORKSPACE
CLOSE #1
ChDir &old_directory // Restore previous directory selection
)
我最终找到了解决我的问题的方法,它与 xasc 的有点不同,所以我想我会分享它。
IF DIALOG.BOOLEAN(COMMAND.WORKSPACE)
(
PRINT "Select the new root directory that you would like to work out of."
DIALOG.DIR *
ENTRY %LINE &WORKSPACE
OPEN #1 workspace.dat /Create
WRITE #1 "&WORKSPACE"
CLOSE #1
)
这对我来说更简洁一些,因为它不需要我更改工作目录。
DIALOG
似乎是我正在寻找的界面,能够打开文件、目录等并将它们保存到变量中。