1

所以我最终决定硬着头皮重写我公司糟糕的Trace32 脚本。我正在尝试使用数据文件来保存运行之间的相关信息,这样我们就可以运行重做脚本来重复任何操作,而不必在每次电源循环后导航一堆对话框并选择我们的工作区文件。为此,我需要将上次运行的用户定义变量(包括文件位置)保存到文件中,以便下次运行时使用它们。作为参考,这是我的菜单脚本的一部分。

; 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

问题是每次更改工作区时都必须编辑脚本。我希望能够通过选择COMMAND.PREVIOUS然后使用 Windows 选择对话框选择我的新工作区根来在上面的脚本中设置它。我没有该功能的有效实现,但我希望它看起来像这样:

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:\*会打开一个对话框,但我仍然无法获取该信息。

附加信息

在尝试找到解决方案时,我已经阅读了很多thisthis 。如果有我应该使用的内置路径变量(如前面提到的SOURCEPATH.SETBASEDIR,我不介意这样做。这是我第一天编写 Trace32 脚本,所以我提前为我的天真道歉。如果这很重要,我我正在使用 Trace32 Powerview for ARM Release Feb 2017 SP2(32 位)(所以,最新的)

4

2 回答 2

1

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
)
于 2017-08-11T19:25:25.133 回答
1

我最终找到了一个与 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似乎是我正在寻找的界面,能够打开文件、目录等并将它们保存到变量中。

于 2017-08-11T20:30:48.980 回答