Как получить доступ к двум разным процедурам в двух файлах в скриптах Trace32 CMM

У меня есть два файла в двух разных флодерах в Trace32. Я выполняю cd.do имя_файла имя_подпрограммы в Trace32. trace32 берет расположение первой выполненной команды в качестве папки, из которой необходимо выполнить следующие команды. Как я могу выполнять подпрограммы из двух разных папок.


person Aabha Geed    schedule 15.07.2015    source источник


Ответы (2)


Здесь есть довольно хорошее руководство о том, как писать сценарии в Trace32. http://www2.lauterbach.com/pdf/practice_user.pdf

Я не понимаю, почему вам нужно иметь их в двух разных папках, разве это не должно решаться просто в одной папке?

person Dunceor    schedule 15.07.2015
comment
Они у меня в разных папках. Я попытался использовать chdir для изменения каталога, чтобы можно было выполнить процедуру из файлов в другой папке. Это создает проблему, поскольку я могу использовать подпрограммы, доступные только из одной папки. - person Aabha Geed; 15.07.2015
comment
Я не думаю, что скриптовый язык создан для использования подпрограмм из разных папок, он недостаточно продвинут. Я знаю, что это дублирование, но будет ли оно работать нормально, если вы просто переместите его в ту же папку? - person Dunceor; 15.07.2015
comment
Использование подпрограмм из разных папок определенно возможно. Я предложил решение (см. выше или ниже). Абха Гид, не могли бы вы уточнить вопрос? Поскольку вы не приняли мой ответ, я предполагаю, что неправильно понял вашу просьбу... - person Holger; 21.07.2015

Что ж, возможно, вам следует просто использовать DO <myscript.cmm> вместо CD.DO <myscript.cmm>.

  • DO <myscript.cmm> выполняет скрипт в заданном месте, но сохраняет текущий рабочий путь.
  • CD.DO <myscript.cmm> изменяет рабочий путь на расположение данного скрипта, а затем выполняет скрипт.

Однако я бы порекомендовал писать ваши скрипты таким образом, чтобы не имело значения, вызываются они с помощью CD.DO или просто DO. Вы можете добиться этого либо с абсолютными путями, либо с путями относительно местоположений скрипта. (Я предпочитаю 2-й.)

Итак, представьте следующую файловую структуру:

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:

DO "C:/t32/myscripts/folder1/routines.cmm" subroutine_A
DO "C:/t32/myscripts/folder2/loadapp.cmm"

folder2/loadapp.cmm:

Data.LOAD.Elf "C:/t32/myscripts/folder2/application.elf"
DO "C:/t32/myscripts/folder1/routines.cmm" subroutine_B

С относительными путями вы можете использовать префикс «~~~~» перед доступом к другим файлам относительно местоположения текущего выполняемого сценария PRACTICE. «~~~~» заменяется на путь исполняемого в данный момент скрипта (точно так же, как «~» обозначает ваш домашний каталог). Существует также функция OS.PPD(), которая дает вам каталог исполняемого в данный момент PRACTICE. сценарий.

Таким образом, приведенная выше ситуация с относительными путями выглядит так:

start.cmm:

DO "~~~~/folder1/routines.cmm subroutine_A"
DO "~~~~/folder2/loadapp.cmm"

folder2/loadapp.cmm:

Data.LOAD.Elf "~~~~/application.elf"
DO "~~~~/../folder1/routines.cmm" subroutine_B
person Holger    schedule 15.07.2015