Пример. Лабораторный стенд включен и настроен в соответствии с разделами 2, 3.1 настоящего документа. Пользователь – osuser. Требуется создать образ ОС РВ для загрузки в РПЗУ. Образ ОС РВ должен включать файловые системы NFS и FTP. В домашнем каталоге пользователя создан каталог ~bt83b/nfs, экспортируемый по NFS. В ОС РВ этот каталог должен быть смонтирован под именем /nfs:.

  i.  Скопировать в домашний каталог пользователя целевой каталог ОС РВ. Для этого выполнить следующую команду:

cp –r ~/oc2000/target/bt83b ~

  ii.  Перейти в целевой каталог ОС РВ. Для этого выполнить следующую команду:

cd ~/bt83b

  iii.  Конфигурировать образ ОС РВ. Для этого выполнить следующую команду:

make xconfig

С помощью конфигуратора настроить образ ОС РВ в соответствии со следующей таблицей:

Раздел

Поле

Значение

Scaling

Include FTP

Включить

Include NFS

Включить

Standard C Libraries

Все

Включить

Network

Include RPC

Отключить

Network Addresses

Network Addresses

Включить

Default gateway

192.168.83.183

Interface name de0

Отключить

Interface name sl0

Включить и настроить его поля

IP address

192.168.83.1

Netmask

255.255.255.255

Partner address

192.168.83.183

Host table

Host address

192.168.83.183

Gateway table

Gateway table

Отключить

Slip protocol

Slip protocol

Включить

/dev/aux0

Отключить

/dev/aux1

Включить

Mount NFS

User ID

Идентификатор пользователя (можно определить с помощью команды Linux id), например: 203

Group ID

Идентификатор пользователя (можно определить с помощью команды Linux id), например: 203

NFS_NAME

имя файловой системы NFS на целевой машине (имя устройства), по умолчанию: nfs:

Export name

/home/<имя пользователя>/bt83b/nfs,
например:
/
home/osuser/bt83b/nfs

Mount FTP

Mount FTP

Включить

Parameters

<имя пользователя>:<пароль пользователя>@host
например: osuser:ospasswd@host

Miscellaneous

Language

LANG_ID_STRING_RU

Application

Source files

Пути к файлам прикладной программы. Пути к файлам разделяются пробелами, например:
./
nfs/a.c ./nfs/b.c

Board support package configuration

BT83-402

Отключить

  iv.  Если в разделе Application указаны прикладные программы, то необходимо создать соответствующие файлы в формате языка программирования Си.

  v.  Настроить размещение образа ОС РВ на собственный каталог. Для этого в файле env.sh целевого каталога изменить переменную TARGET_FILE_DIR, указав после знака равенства путь к собственному каталогу. Например:

TARGET_FILE_DIR=/home/osuser

  vi.  Собрать образ ОС РВ в формате. bin для записи в РПЗУ. Для этого выполнить следующую команду:

mb_bin. sh

  vii.  Создать каталог для экспорта файлов. Для этого выполнить следующую команду:

mkdir nfs

3.3 Создание исходного текста и компиляция программы

Исходный текст программы на языке Си создается в любом текстовом редакторе. Имена файлов с исходными текстами программы должны иметь расширение. c.

Компиляция программы осуществляется на ИЭВМ с предустановленными средствами разработки (ОС РВ, ППМ, СКРВ). В настоящем лабораторном практикуме СКРВ используется версия СКРВ bt23d-gcc.

Наиболее простой способ откомпилировать программу – включить ее в виде исходного файле в радел Applications диалогового конфигуратора xconfig, а затем откомпилировать исходный файл средствами ОС РВ, выполнив в целевом каталоге команду make. Тогда программа будет включена в образ ОС РВ, а в целевом каталоге образуется ее объектный модуль.

Пример. В каталоге ~/bt83b/nfs создан файл на языке Си a. c. Его можно откомпилировать следующим образом:

i Подключить исходный файл a. c подключен к образу ОС РВ в разделе конфигуратора Application в соответствии с разделом 4.2 iii данного документа.

ii Компилировать исходный файл средствами ОС РВ. Для этого выполнить следующую последовательность команд:

cd ~/bt83b

make

В каталоге ~/bt83b будет создан объектный модуль прикладной задачи (файл a. o).

3.4 Запуск и отладка программы на лабораторном стенде.

3.4.1 Загрузка целевой ЭВМ

3.4.1.1 Загрузка образа ОС РВ

Образ ОС РВ может быть загружен в процессорный модуль ЦЭВМ либо по сети (с ИЭВМ), либо из РПЗУ. Оба варианта загрузки, а также запись образа ОС РВ в РПЗУ могут быть осуществлены средствами загрузчика. Каждому способу загрузки соответствует свой формат образа ОС РВ.

Для загрузки по сети изпользуетсе формат. elf. Образ в формате. elf создается при использовании скрипта mb_elf.sh.

Для загрузки из РПЗУ изпользуетсе формат. bin. Образ в формате. bin создается при использовании скрипта mb_bin.sh.

3.4.1.1.1 Настройка загрузчика

Здесь приводятся только основные сведения о командах и параметрах загрузчика.

После записи загрузчика в РПЗУ модуль необходимо перезапустить. Загрузчик выдаст на экран терминала, подключенного к порту RS-232/0, заставку и, если в течение нескольких секунд оператор не нажмет любую клавишу, попытается перейти к загрузке ОС. Загрузчик хранит параметры загрузки в энергонезависимом ЗУ (ЭЗУ). В поставляемом модуле эти параметры в общем случае неопределены. Их необходимо сформировать, переведя загрузчик в режим настройки. Для этого необходимо после старта загрузчика нажать два раза клавишу 'Enter' на клавиатуре терминала. Загрузчик выдаст на экран приглашение '->' и будет ожидать команд оператора. Каждая команда завершается нажатием клавиши 'Enter' (в случае использования эмулятора терминала).

НЕ нашли? Не то? Что вы ищете?

Выдача подсказки - команда 'h'.

Для задания/изменения сетевых параметров служит команда 'c'. Загрузчик будет выводить на экран имя параметра, его текущее значение и ожидать новое значение. Ввод '.' означает пустое значение, ввод '~' - прекращение выполнения команды 'c'. Ниже приведен пример сеанса задания сетевых параметров для интерфейса SLIP на порту 1 со скоростью 115200 бод.

boot device

sl=1,115200

processor number

0

host name

H

file name

oc2000_202

inet on ethernet

193.232.173.251

inet on backplane

.

host inet

193.232.173.253

gateway inet

.

user

osuser

ftp passwd

ospasswd

flags

0

target name

T

startup script

other

.

Параметр processor number с точностью до (-1) либо наследуется Загрузчиком от ТМ (для негеографических крэйтов), либо устанавливается по географическому адресу. Изменить его нельзя. Для просмотра сетевых параметров служит команда 'p'. Для сохранения параметров в ЭЗУ - команда 's'. При установленном на модуль мезонине БТМХХ-403 или БТМХХ-408 в качестве устройства загрузки вместо sl=1,115200 надо задать'de'. В этом случае надо задать и соответствующие IP-адреса модуля и ИЭВМ.

Загрузчик умеет также вместо загрузки ОС по сети передавать управление по указанному адресу РПЗУ. В этом случае в качестве устройства загрузки нужно задать 'go=адрес' (например, go=0xa8100000).

3.4.1.1.2 Запись в РПЗУ с помощью загрузчика

Команда загрузчика J address, file записывает файл file по адресу РПЗУ address.

Пример:

J 0xa8"oc2000_202.bin"

При этом будут использоваться сетевые параметры, на которые настроен загрузчик - устройство загрузки, свой IP-адрес и IP-адрес ИЭВМ, имя пользователя и его пароль. Загрузчик использует FTP или NFS протокол (в зависимости от флагов). Размер записываемого файла не ограничивается размерами ОЗУ. Процесс записи отображается на экране терминала. При использовании устройства загрузки 'sl' в ИЭВМ должен быть активирован интерфейс SLIP.

Поскольку двоичный образ системы примерно в 3 раза меньше, чем файл типа .rec, а максимально возможная скорость порта RS-232 на протоколе SLIP - 115200 вместо 38400, то общий выигрыш во времени при использовании загрузчика для записи в РПЗУ образа ОС составит почти порядок.
ЗАМЕЧАНИЕ. В более поздних версиях ТМ возможна запись в РПЗУ двоичных файлов со скоростью 115200 бод.

3.4.1.2 Использование динамического загрузчика

Динамический загрузчик используется при загруженном образе ОС РВ на ЦЭВМ на этапе отладки. Для использования динамического загрузчика его нужно включить в образ ОС РВ на этапе конфигурирования.

Динамический загрузчик предназначен для облегчения отладки. Использование динамического загрузчика позволяет не включать отлаживаемый модуль в образ системы. Достаточно его компилировать и затем загрузить с помощью динамического загрузчика. Команды динамического загрузчика:

load

загрузка модуля в оперативную память;

unload

удаление модуля из оперативной памяти;

modlist

вывод списка загруженных модулей.

Для получения списка команд, входящих в эту группу можно воспользоваться командой

->? loader

Синтаксис команды load :

load mod

Аргумент :

mod - загружаемый модуль

Описание команды load:

Команда load загружает указанный модуль в оперативную память.

Аргумент mod указывает имя файла, содержащего загружаемый модуль. Может использоваться либо полное (маршрутное) имя файла, либо имя файла в текущем каталоге. Текущий каталог задается командой chdir, команда pwd выводит имя текущего каталога.

Обычно объектные модули располагают на инструментальной машине и загружают по сети. В этом случае при конфигурировании сети в образ операционной системы нужно включить файловую систему на основе протокола FTP или файловую систему NFS, а также указать параметры установки (монтирования).

Загружаемый модуль может иметь ссылки на ранее загруженные (например, при начальной загрузке) функции и переменные, упомянутые в таблице имен (более подробная информация о таблице имен приведена в разделе 4.4.2 настоящего документа). Внешние переменные и функции загружаемого модуля будут внесены в таблицу имен. Вновь загружаемый модуль может содержать уже упомянутые в таблице символов функции и переменные. В этом случае в таблице имен соответствующее время будет упомянуто несколько раз. При последующих загрузках будет использоваться последнее упоминание функции или переменной в таблице имен.

3.4.2 Использование средств отладки

Средства отладки целевой машины включают:

    командный интерпретатор, локальный отладчик, динамический загрузчик.

В этой главе описываются функции (команды), используемые при отладке и исполняемые с помощью командного интерпретатора. Эти команды можно разбить на следующие группы:

    команды получения информации об объектах ОС; команды вывода и изменения содержимого памяти; команды управления выполнением программы команды управления переменными окружения.

Отметим, что управление локальным отладчиком и динамическим загрузчиком также производится с помощью командного интерпретатора (команды вводятся в командный интерпретатор).

3.4.2.1 Таблица имен

Таблица имен содержит сведения о внешних переменных и функциях операционной системы и прикладной программы, включенных в конкретный образ операционной системы. Один элемент таблицы описывает одну переменную или функцию и содержит следующие сведения:

    имя переменной или функции; адрес переменной или функции; тип переменной или функции; количество и типы аргументов (для функций).

Таблица имен используется командным интерпретатором, динамическим загрузчиком, а также локальным отладчиком. Таблица имен позволяет использовать в командах интерпретатора, а также в динамически загруженных модулях функции и переменные, уже находящиеся в оперативной памяти.

Для включения таблицы имен в образ операционной системы соответствующее требование нужно указать при конфигурировании отладочных средств.

Если в таблицу имен нужно включить сведения о переменных и функциях прикладной программы, то рекомендуется компилировать прикладную программу с генерацией отладочной информации. В противном случае сведения о переменных и функциях прикладной программы в таблице имен будут неполными (например, будут отсутствовать количество и типы аргументов функций).

3.4.2.2 Командный интерпретатор

Командный интерпретатор shell предназначен для интерактивной работы с ОС и прикладной программой. Для взаимодействия с интерпретатором - ввода команд и получения результатов - используется консоль. В качестве консоли может быть использован алфавитно-цифровой терминал или telnet соединение. Командный интерпретатор является реентерабельной программой и поэтому можно использовать несколько экземпляров интерпретатора.

Командный интерпретатор позволяет:

    вывести значение переменной; присвоить переменной указанное значение; создать переменную; вызвать функцию; вычислить арифметическое выражение, содержащее константы, переменные и функции; выполнить командный файл (файл-сценарий).

Для доступа к переменным и функциям интерпретатор использует таблицу имен. В силу этого в командах интерпретатора можно использовать только упомянутые в таблице имен переменные и функции. Слова переменная или функция здесь означают переменная, упомянутая в таблице имен или функция, упомянутая в таблице имен.

Для получения значения переменной нужно просто ввести ее имя. В случае целых чисел значение выводится как в десятичном, так и шестнадцатеричном формате. Например,

->x
68 0x44

Присвоить переменной значение можно с помощью оператора присваивания. Например,

->x=13

Если переменная, стоящая в левой части оператора, присваивания не существует, то она будет создана и ее имя будет помещено в таблицу имен.

При вызове функции в начале указывается имя функции, за которым следует список аргументов. Аргументы пишутся через запятую. Можно использовать следующие две синтаксические конструкции. В первом случае список аргументов заключается в скобки, например,

->mq(%s1,2)

В арифметических выражениях можно использовать только эту конструкцию. Во втором случае список аргументов отделяется от имени функции одним или несколькими пробелами, например,

->mq %s1,2

Аргумент может быть константой, именем переменной, результатом вызова функции или арифметическим выражением. Один или несколько последних аргументов могут быть опущены. В этом случае интерпретатор укажет для них значения по умолчанию:

    0, для числовых аргументов; пустая строка, для строковых переменных, NULL, для указателей.

Командные файлы (файлы-сценарии) представляют собой текстовые файлы, содержащие команды интерпретатора. Каждая строка файла содержит одну команду. Файл может содержать любые команды интерпретатора, в том числе обращения к другим командным файлам (глубина вложенности не должна превышать 10). При вызове (исполнении) командного файла интерпретатор последовательно исполняет содержащиеся в нем команды.

Для исполнения командного файла нужно ввести символ "<", за которым идет имя командного файла в кавычках, например,

-><"startup"

Для управления выводом интерпретатора можно использовать следующие комбинации клавиш:

Ctrl-S

приостановить вывод на экран;

Ctrl-Q

возобновить вывод на экран.

Команда i позволяет получить список ранее введенных команд, а также выполнить одну из ранее введенных команд, не вводя ее повторно.

Команда? позволяет получить описание команд, используемых при отладке.

3.4.2.2.1 Получение информации об объектах ОС

Следующие команды предназначены для получения информации о состоянии объектов ОС:

bufstat

вывод информации об использовании буферов;

cnd

вывод информации об условной переменной;

io

вывод списка устройств;

lkup

вывод содержимого таблицы имен;

mq

вывод информации об очереди сообщений;

mtx

вывод информации о мьютексе;

sem

вывод информации о семафоре;

tmr

вывод информации о таймере;

vnstat

вывод информации об использовании структур vnode.

Для получения списка команд, входящих в эту группу, можно воспользоваться командой

-> ? info

3.4.2.2.2 Вывод и изменение содержимого памяти

Для просмотра и изменения содержимого оперативной памяти предназначены следующие команды:

dc, di, ds

вывод содержимого памяти;

mc, mi, ms

изменение содержимого памяти.

mem

вывод сведений о распределении памяти;

pool

вывод сведений о пуле памяти

Для получения списка команд, входящих в эту группу можно воспользоваться командой

->? mem

3.4.2.2.3 Управление выполнением программы

К этой группе относятся команды управления потоками и команда повторной загрузки операционной системы:

ti

вывод сведений о состоянии потоков управления;

tst

создание потока управления;

tc

удаление потока управления;

ts

приостановка потока управления;

tr

продолжение работы потока управления;

tk

посылка сигнала потоку управления;

r

повторная загрузка системы.

Для получения списка команд, входящих в эту группу, можно воспользоваться командой

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4