![]() |
ОСРВ MULTEX-ARM
Руководство программиста
|
В состав библиотек ОС MULTEX-ARM включен интерпретатор команд Shell – специальная программная оболочка, которая позволяет осуществлять следующие действия:
Shell запускается автоматически, если при конфигурации проекта не указана задача, которую необходимо запускать при старте системы, либо в качестве параметра USER_PROC указана процедура shell. Связь с терминалом инструментальной машины происходит при этом по каналу RS232C. Параметры подключения:
Если в файле конфигурации системы указан параметр INCLUDE_NET_CONSOLE, то отдельный экземпляр интерпретатора команд будет запускаться при подключении к целевой машине терминала по локальной сети по протоколу UDP, а также, при включении параметра INCLUDE_TCP_CONSOLE, будет создаваться по одному экземпляру на каждую сессию при подключении по протоколу TCP/IP. Параметры подключения:
В качестве терминала для инструментальной машины удобнее всего использовать такую программу, как 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:/>
В отображаемой таблице будут указаны задачи с указанием их имен, приоритетов, идентификаторов, задержек, семафоров, у которых задачи ожидают и состояния. Текущая выполняемая задача будет иметь состояние IN WORK. Активные, но в данный момент менее приоритетные задачи будут иметь состояние ACTIVE. Задержанные на какое-то время, или ожидающие у семафора задачи будут иметь состояние PEND. Приостановленные задачи будут иметь состояние SUSPEND.
Для просмотра информации об открытых файлах, сокетах и символьных устройствах можно ввести команду 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 имеется встроенный текстовый редактор. Редактор позволяет просматривать и редактировать текстовые файлы из консоли.
Для просмотра содержимого текстовых файлов используется команда type:
C:/>type C:/settings.ini [SCREEN] LIGHT=100 C:/>
Для редактирования небольших текстовых файлов нужно войти в режим редактирования с помощью команды ed:
C:/>ed c:/settings.ini Edit file c:/settings.ini L [begin] [end] - list 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 ----------------------------------------------- 0000 | [SCREEN] 0001 | LIGHT=100 ed>
Более полное описание работы во встроенном текстовом редакторе доступно в режиме редактирования по команде help.
В интерпретатор команд Shell встроена поддержка сочетаний клавиш для редактирования вводимого текста и перемещения по вводимой строке.