Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
|
из
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.
|
|
|
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!