![]() |
ОСРВ MULTEX-ARM
Полное описание
|
В состав библиотек ОС MULTEX-ARM включен интерпретатор команд Shell – специальная программная оболочка, которая позволяет осуществлять следующие действия:
Shell запускается автоматически, если при конфигурации проекта не указана задача, которую необходимо запускать при старте системы, либо в качестве параметра USER_PROC указана процедура shell. Связь с терминалом инструментальной машины происходит при этом по каналу UART. Параметры подключения:
Если в файле конфигурации системы указан параметр INCLUDE_NET_CONSOLE, то отдельный экземпляр интерпретатора команд будет запускаться при подключении к целевой машине терминала по локальной сети по протоколу UDP, а также, при включении параметра INCLUDE_TCP_CONSOLE, будет создаваться по одному экземпляру на каждую сессию при подключении по протоколу TCP/IP. Параметры подключения:
В качестве терминала для инструментальной машины удобнее всего использовать такую программу, как Putty. Примеры настройки программы для работы по сети и через UART приведены на следующих рисунках. Для правильного отображения перевода строк, а также для работы текстового редактора следует обратить внимание на настройки на вкладке Terminal. А именно нужно установить флажок в пункте Implicit CR in every LF и принудительно отключить локальное эхо и локальное редактирование строки (см. Настройка терминала Putty).
После запуска Shell на экране инструментальной ЦВМ появится приветственная надпись, показанная на рисунке ниже.
Для вывода подсказки о перечне команд достаточно ввести команду h и нажать клавишу Enter. Появится подсказка следующего вида:
C:/>h h - print this text hf - print file utilites help hl - print logarea utilites help d <addr32> - display memory dump in bytes dw <addr32> - display memory dump in words dd <addr32> - display memory dump in double words m <addr32> - modify memory in bytes mw <addr32> - modify memory in words md <addr32> - modify memory in double words i - print tasks info sp &<function> - spawn function as a new task td <task> - delete task by name tp <task> <N> - set task priority at N boot - boot new kernel image hr - hard reset C:/>
Чтобы получить справку о командах работы с диском достаточно набрать команду hf:
C:/>hf ------------- FILE UTILITES ------------------ dir <path> - show directory dir* <path> - show directory paged cd <path> - change work device/directory mkd <path> - create new directory rmd <path> - delete directory copy <from> <to> - copy files by wildcard del <files> - delete files by wildcard type <file> - show text file ed <file> - edit text file chkdsk <device> - testing filesystem on device
Чтобы получить дамп памяти, начиная с указанного адреса, достаточно использовать команды d, dw, или dd. После команды через пробел нужно указать адрес в шестнадцатеричной форме:
C:/>d 120 00000120: 06 4A 08 B5 12 1A 02 F0 5D FF 00 21 DF F8 10 90 00000130: 08 46 00 F0 59 FF 00 BF 00 00 F8 4F 50 01 F8 4F 00000140: D0 49 00 00 08 B5 05 46 04 4B DC 68 00 F0 CD F8 00000150: 2A 46 41 F2 BB 01 00 20 A0 47 00 BF 00 00 F8 4F 00000160: 00 20 70 47 08 B5 07 48 01 F0 0E F8 4C F2 50 30 00000170: 02 F0 BE FF FF F7 F4 FF 00 20 00 F0 34 F9 00 20 00000180: 08 BD 00 BF EF 43 00 00 82 B0 00 23 01 93 01 9B 00000190: 63 2B 03 DC 00 46 01 9B 01 33 F7 E7 02 B0 70 47 000001A0: 10 B5 FF F7 F1 FF 11 EE 10 4F FF F7 ED FF 24 F4 000001B0: 80 54 01 EE 10 4F 10 BD 10 B5 FF F7 E5 FF 11 EE
Для того, чтобы модифицировать содержимое памяти начиная с указанного адреса, достаточно использовать команды m, mw, или md. В качестве параметра нужно указать адрес, с которого нужно начинать модификацию:
C:/>m 123 Addr:00000123 Data:B5 -
Далее нужно ввести новое значение для ячейки памяти в шестнадцатеричной форме и нажать Enter. Если данную ячейку изменять не требуется, следует просто нажать Enter. Новое значение запишется и произойдет переход на следующую ячейку:
Addr:00000123 Data:B5 B7 Addr:00000124 Data:12 -
Чтобы выйти из режима вместо данных нужно ввести символ Пробел и нажать Enter.
Для просмотра сведений об имеющихся в системе задачах и их состоянии используется команда i:
C:/>i Name Priority Id Delay Semaphore State ------------------------------------------------------ SHELL 50 7FFDF600 0 00000000 IN WORK RootTask 255 7FFFFC00 0 00000000 ACTIVE DPCMan -1 7FFEE700 -1 7FFEF200 PEND NetPoll 0 7DA26E00 -1 7DA27500 PEND tsAcker 0 7D94E200 1 7D94E500 PEND FTP-S 1 7DA00600 -1 7D93DB00 PEND netShell 5 7DA11D00 -1 7DA16700 PEND netConTx 5 7DA15000 71 7DA15E00 PEND ------------------------------------------------------ C:/>
В отображаемой таблице будут указаны задачи с указанием их имен, приоритетов, идентификаторов, задержек, семафоров, у которых задачи ожидают и состояния. Ниже приведена расшифровка значений поля State таблицы задач:
Для просмотра информации об открытых файлах, сокетах и символьных устройствах можно ввести команду iosFdShow:
C:/>iosFdShow fd name drv 3 sioCon 0 in out err 4 netCon 2 5 socket/<tcp> 3 Value = 1610613075 (0x60000153) C:/>
Устройство, являющееся стандартным устройством ввода / вывода, отмечено как in, out и err.
Для просмотра информации об установленных в системе устройствах можно использовать команду iosDevShow:
C:/>iosDevShow DeviceName Driver DCB socket 3 00000000 netCon 2 00000000 C: 1 7FFCD100 sioCon 0 7FFCF100 Value = 4 (0x4) C:/>
В этом примере видно, что в системе имеется TCP/IP сокет, открытый на прослушивание FTP-соединений, netCon — сетевая консоль для связи по протоколу UDP, локальный диск C: и последовательная консоль sioCon.
Для просмотра информации о состоянии сети Ethernet можно воспользоваться командой netShow:
C:/>netShow Table of Address Resolution: ---------------------------- 1 #0 00:1B:EB:61:6C:7E 10.0.0.222 2 #0 10:7B:44:45:85:2B 10.0.7.156 3 #0 00:1B:EB:61:6C:7E 10.0.0.90 4 #0 BC:EE:7B:71:FB:57 10.0.7.119 ---------------------------- Value = 0 (0x0) C:/>
Здесь видно активные IP-адреса в сети. При этом в таблице показаны порядковый номер, номер сетевого адаптера, MAC-адрес и IP-адрес каждой записи из таблицы ARP.
Для того, чтобы удалить указанную задачу, используется команда td. В качестве параметра указывается имя запущенной задачи, которую требуется удалить:
C:/>td myTask1 Ok! C:/>
Для изменения приоритета указанной задачи используется команда tp. При этом первым параметром указывается имя задачи с учетом регистра, а вторым — новое значение приоритета:
C:/>tp myTask2 100 Ok! C:/>
В указанном примере задача myTask2 получает приоритет 100.
Чтобы запустить некоторую процедуру языка Си, как отдельную задачу, можно воспользоваться командой sp. В качестве параметра необходимо указать имя этой процедуры, но перед именем необходимо указать символ &:
C:/>sp &myProc Task spawned as usrT1 , TID=7D53A000
В этом примере процедура myProc запускается, как задача с именем usrT1 и приоритетом 100.
Любая функция, включенная в пользовательский проект и объявленная как глобальная, может быть вызвана из интерпретатора команд путем ввода ее имени с использованием синтаксиса, принятого в языке Си. Так, например, для вывода сообщения достаточно просто набрать:
C:/>printf(“%s %i”,”Hello!”,38) Hello! 38 C:/>
Для вызова перезагрузки (аппаратного рестарта) системы служит команда hr.
Для просмотра содержимого переменной типа int, входящей в проект, достаточно просто набрать ее имя:
C:/>myVar Addr = 0x4904082C Value = 0 (0x0) C:/>
Чтобы изменить содержимое переменной типа int, достаточно записать выражение присваивания языка Си:
C:/>myVar = 1234 Addr = 0x4904082C New value = 1234 (0x4D2) C:/>
Если требуется ввести значение в шестнадцатеричном виде, то можно записать его так, как это и принято в языке Си. При этом буквенные обозначения цифр можно набирать как на верхнем (A,B,C ), так и на нижнем (a,b,c ) регистре:
C:/>myVar = 0x1A2C3D4E Addr = 0x4904082C New value = 439106894 (0x1A2C3D4E) C:/>
Для ввода значения строковой переменной, оно записывается в кавычках, как и принято в языке Си:
C:/>string = "Hello world" Addr = 0x490609DC New value = 2102453504 (0x7D50E500) C:/>printf(string) Hello world Value = 1610613075 (0x60000153) C:/>
Для просмотра текущего каталога используется команда dir:
C:/>dir
Volume in drive C: is A20
Directory of 'C:/'
SVS <DIR> 1/01/2000 0:16:32
BOOT SCR 151 30/09/2014 13:36:18
LICENSE SYS 40 1/01/2017 12:10:38
SETTINGS INI 23 1/01/2017 12:02:00
TST INI 29 1/01/2000 0:05:24
T TTT 53 1/01/2000 0:17:16
PB MP3 3731445 1/01/2000 0:06:54
POEZD MP3 3545427 1/01/2017 12:04:52
ZATEH MP3 4681866 1/01/2017 12:24:00
MULTEX BIN 221832 20/06/2022 11:50:24
Total 12180866 bytes in 9 files, 1 directories
Free space = 4164944 Kbytes.
C:/>
Для просмотра содержимого подкаталога нужно указать путь к подкаталогу. Например, для просмотра подкаталога SVS нужно дать команду dir C:/SVS.
C:/>dir C:/SVS
Volume in drive C: is A20
Directory of 'C:/SVS/'
. <DIR> 1/01/2000 0:16:32
.. <DIR> 1/01/2000 0:16:32
Total 0 bytes in 0 files, 2 directories
Free space = 4164944 Kbytes.
C:/>
Для того, чтобы поменять текущий диск, нужно просто ввести в качестве команды его метку. Так, если подключен USB Flash-диск, можно переключиться на него:
C:/>F: F:/>
Для того, чтобы выбрать текущим каталог, отличный от корневого, используется команда команду cd:
C:/>cd c:/svs C:/SVS/>
Для удаления файла, или группы файлов, используйте команду del. В следующем примере с диска удаляются все файлы с расширением .mp3:
C:/>del c:/*.mp3 Delete file 'C:/ZATEH.MP3'...done. Delete file 'C:/POEZD.MP3'...done. Delete file 'C:/PB.MP3'...done. C:/>
Для копирования файла, или группы файлов с одного места в другое, используется команда copy:
C:/>copy c:/multex.bin f:/*.* Copy from 'C:/MULTEX.BIN' to 'F:/MULTEX.BIN'...done. 1 file(s) copied. C:/>
Для удаления пустого каталога используется команда rmd:
C:/>rmd C:/SVS C:/>
Для создания нового каталога используется команда mkd:
C:/>mkd C:/SVS C:/>
Для проверки файловой системы на диске служит команда chkdsk:
C:/>chkdsk Checking device C:... File System: FAT32 Check FAT...done Clusters: Total: 1044224, Reserved: 0, Free: 1044149 Sectors per cluster: 8 Check file system... Total Files:17, Data:8, Cat's:2, Labels:1 LongNames:6 Total Deleted Files:67 Result of checking: OK!
В интерпретатор команд Shell встроена поддержка сочетаний клавиш для редактирования вводимого текста и перемещения по вводимой строке.
Встроенный текстовый редактор Edit предназначен для создания и редактирования конфигурационных файлов на жестких дисках устройства. Редактор встроен в ядро операционной системы и может быть вызван из оболочки Shell с помощью команды ed.
Для редактирования имеющегося файла его имя можно указать в качестве параметра. В примере ниже приведён вызов редактора для редактирования файла settings.ini и приглашение редактора к редактированию файла:
C:/>ed settings.ini [list edit help quit]>
Для создания и редактирования нового файла следует вызвать редактор без параметров. При этом пользователю будет предложено ввести имя нового файла. После ввода имени появится сообщение с предложением создать новый файл, на что следует согласиться – ввести символ y. Далее редактор создаст файл с указанным именем и выведет приглашение к редактированию содержимого:
C:/>ed text.txt File "text.txt" does not exist. Do you want to create a new one? [yes no]>y [list edit help quit]>
Для работы с содержимым файла используются команды, состоящие из одного символа. В приглашении редактора дана подсказка с наиболее часто используемыми командами. Чтобы посмотреть список всех команд следует ввести символ h. Справка по командам редактора приведена ниже:
[list edit help quit]>h
------------------------------------------------------------
"Edit" ver.2.02
------------------------------------------------------------
L [begin] [end] - List a range of strings.
l - List entire file.
a - Add new string at end.
i [line] - Insert new string.
d [line] - Delete string.
e [line] - Edit string.
w - Write file.
q - Exit without saving.
h - Help.
------------------------------------------------------------
[list edit help quit]>
Для просмотра содержимого файла следует ввести символ l. Ниже показан вывод листинга некоторого файла settings.ini:
[list edit help quit]>l ------------------------------------------------------------ File: "settings.ini" ------------------------------------------------------------ 0000|[DEVICE] 0001|PORT=1243 0002|IP=192.168.0.31 0003|[SOURCE] 0004|IP=192.168.0.1 ------------------------------------------------------------ [list edit help quit]>
Правка текста в редакторе выполняется построчно. Для редактирования определённой строки нужно ввести команду e и номер редактируемой строки. Ввод команды e без параметров запустит редактирование строки с номером 0. Для перехода к следующей или предыдущей строкам в режиме редактирования можно использовать стрелки вниз и вверх соответственно. После окончания редактирования следует подтвердить изменения с помощью клавиши Enter. Пример редактирования второй строки показан ниже. Здесь оператор ввёл команду e 2, затем изменил содержимое строки (изменил адрес) и нажал ввод. В приглашении редактора появился символ *, обозначающий, что содержимое файла было изменено:
[list edit help quit]>e 2 0002|IP=192.168.0.32 [list edit help quit]*>
После изменения содержимого файла его следует сохранить с помощью команды w. Редактор запросит подтверждение на сохранение изменений в файле. Следует ввести подтверждение y и нажать ввод. Редактор выведет сообщение об успешном сохранении данных:
[list edit help quit]*>w Confirm saving the changes to "settings.ini": [yes no]>y Done! 238 bytes written to the "settings.ini". [list edit help quit]>
Сохранив изменения в файле можно закрыть редактор с помощью команды q. Редактор будет закрыт и пользователю увидит приглашение интерпретатора команд Shell:
[list edit help quit]>q C:/>
В дополнение к встроенному редактору Edit в систему встроено средство быстрого просмотра содержимого текстовых файлов. Для вывода строк файла в консоль следует использовать команду type с именем файла в качестве параметра. Ниже приведён пример вывода в консоль содержимого файла settings.ini:
C:/>type settings.ini [DEVICE] PORT=1243 IP=192.168.0.31 [SOURCE] IP=192.168.0.1