Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2022-09-12 | 18 |
5.00
из
|
Заказать работу |
|
|
Данный раздел содержит спецификацию набора макроопределений, реализация которых зависит от операционной системы, под которую компилируется симулятор. Все остальные части кода, не описанные в данном разделе, считаются независимыми от операционной системы.
Функции и переменные, обеспечивающие инициализацию эмулятора и запуска потока симуляции, располагаются в следующих файлах:
1) ppdl\libs_src\simlib\sources\sim_thread.cpp – функции инициализации эмулятора, создания потока симуляции и главной функции потока симуляции;
2) ppdl\libs_src\simlib\headers\threads_cfg.h – макроопределения для создания и управления потоком симуляции.
Для абстрагирования уровня операционной системы создан набор макроопределений для создания потока симуляции и управления им. Для адаптации «Эмулятора» к другой операционной системе достаточно переопределить эти макроопределения. В главе 4.1 дано подробное описание каждого макроопределения.
5.1 Платформо-зависимые макроопределения
Эмулятор ppdl имеет набор платформо-зависимых макроопределений, отвечающих за создание, уничтожение и удаление потока симуляции. Все макроопределения располагаются в файле threads_cfg.h. Полный список макроопределений с вариантами реализации для ОС Windows XP приведен в таблице 5.1.
Таблица 5.1 ‑ Список макроопределений
1 | Имя | CREATE_SIM_THREAD |
Назначение | Создание потока симуляции | |
Реализация под Windows | #define CREATE_SIM_THREAD(){\ DWORD mThreadId;\ Thread = СreateThread(0,0,Runner,(LPVOID)NULL,0,&mThreadId);\ } | |
2 | Имя | DESTROY_THREAD() |
Назначение | Уничтожение потока эмулятора | |
Реализация под Windows | #define DESTROY_THREAD()\ TerminateThread(Thread,0);\ CloseHandle(Thread);\ | |
3 | Имя | SIM_FUNC_DECL() |
Назначение | Декларация заголовка функции потока симуляции | |
Реализация под Windows | #define SIM_FUNC_DECL()\ DWORD WINAPI Runner(LPVOID pParam) | |
4 | Имя | SEND_START_MSG() |
Назначение | Отправка отладчиком сообщения эмулятору о старте потока симуляции | |
Реализация под Windows | #define SEND_START_MSG()\ while(PostThreadMessage(ThreadId,SIM_START_IN,0,0)==FALSE); | |
5 | Имя | WAIT_START_MSG() |
Назначение | Ожидание сигнала старта от отладчика потоку симуляции | |
Реализация под Windows | MSG tmp_msg;\ do{\ GetMessage(&tmp_msg,NULL,SIM_START_IN,SIM_START_IN+1);\ }while(tmp_msg.message!= SIM_START_IN);\ | |
6 | Имя | SEND_STOP_REASON(reason) |
Назначение | Отправка эмулятором сообщения отладчику об остановке процесса исполнения программы Аргумент Reason – причина останова. | |
Реализация под Windows | #define SEND_STOP_REASON(reason)\ PostThreadMessage(OwnerId,SIM_STOPPED_OUT,0,0); | |
7 | Имя | LIB_EXPORT |
Назначение | Декларация функции, экспортируемой из dll эмулятора | |
Реализация под Windows | #define LIB_EXPORT __declspec(dllexport) |
Функция потока симуляции
|
Ниже приведена реализация функции основного потока симуляции:
SIM_FUNC_DECL()
{
#ifdef SYSTEMC_USED
sc_initialize(); // используется только для потактовой модели
#endif
//
while(true) // основной цикл
{
WAIT_START_MSG() // ожидаем сигнала от отладчика
if(IsRunned) // если выполнение разрешено
{
while(IsRunned) // выполняем, пока симуляция не остановлена
SingleClock(); // исполняем одну инструкцию
}
SEND_STOP_REASON(0) // посылаем сигнал отладчику об остановке эмулятора
}// while true
}
Эмуляция периферийных устройств
Таймеры
В эмулятор ядра процессора NM6406 реализована функциональность, позволяющая эмулировать интервальные таймеры TIMER0 и TIMER1 в соответствии с 4.1 документа [1].
Для эмуляции таймеров при каждом запуске функции Operate после эмуляции работы инструкций исполняется функция CheckTimers. Данная функция проверяет состояния таймеров. Если таймеры активны, то выполняется инкрементация счетчиков таймеров и, в соответствии со спецификацией, в случае перехода счетчиков в «0», выполняется перезагрузка счетчиков и\или установление запроса на прерывание.
Контроллер прерываний
|
Контроллер прерываний также реализован как часть ядра процессора.
Перед началом исполнения каждой инструкции эмулятором запускается функция CheckIrqs, которая проверяет состояние битов поля регистра IRR – регистра запросов внешних прерываний. Если IRR не равен нулю (установлен хотя-бы один запрос на прерывание) и запрос не замаскирован, то соответствующий вектор записывается в регистр intr.
После проверки регистра IRR осуществляется проверка регистра intr. В регистре intr помимо вектора внешних прерываний, устанавливаются вектора запросов внутренних прерываний. Регистр intr анализируется на предмет наличия незамаскированных прерываний и, в случае наличия хотя-бы одного запроса на прерывания, функция CheckIrqs возвращает значение вектора прерывания.
Регистр IRR доступен извне класса эмулятора. Таким образом, эмуляторы внешних устройств могут посылать запросы ядру посредством установки бит IRR.
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!