У меня есть два файла в двух разных местоположениях floder в Trace32. Я выполняю имя подкаталога cd.do имя_файла в Trace32. Трассировка 32 принимает местоположение первой команды, выполняемой как папка, из которой должны выполняться следующие команды. Как я могу выполнить подпрограммы из двух разных папок.Как получить доступ к двум различным программам в двух файлах в сценариях CMM Trace32
ответ
Существует довольно хорошее руководство по написанию сценария в Trace32. http://www2.lauterbach.com/pdf/practice_user.pdf
Я не понимаю, почему вам нужно иметь их в двух разных папках, разве это не нужно решить, просто ли это в той же папке?
Ну, может быть, вы должны просто использовать 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"
Папка2/loadapp.cmm:
Data.LOAD.Elf "C:/t32/myscripts/folder2/application.elf"
DO "C:/t32/myscripts/folder1/routines.cmm" subroutine_B
С относительными путями вы можете использовать префикс «~~~~» перед доступом к другим файлам относительно местоположения текущего исполняемого сценария PRACTICE. «~~~~» заменяется на путь исполняемого в настоящее время скрипта (так же, как «~» означает ваш домашний каталог.) Существует также функция OS.PPD(), которая дает вам каталог текущей выполненной ПРАКТИКИ скрипт.
Так вышеописанная ситуация с относительными путями выглядеть:
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
Я их в различных папки. Я попытался использовать chdir для изменения каталога, чтобы программа из файлов в другой папке могла быть выполнена. Это создает проблему, поскольку я могу использовать подпрограммы, доступные только из одной папки. –
Я не думаю, что язык сценариев создан для использования подпрограмм из разных папок, он недостаточно продвинутый.Я знаю, что это дублирование, но работает ли это нормально, если вы просто переместите его в одну папку? – Dunceor
Использование подпрограмм из разных папок, безусловно, возможно. Я предложил решение (см. Выше или ниже). Аабха Гед, не могли бы вы уточнить вопрос? Поскольку вы не приняли мой ответ, я предполагаю, что я неправильно понял ваш запрос ... – Holger